单片机课设.docx
- 文档编号:17340614
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:28
- 大小:255.53KB
单片机课设.docx
《单片机课设.docx》由会员分享,可在线阅读,更多相关《单片机课设.docx(28页珍藏版)》请在冰点文库上搜索。
单片机课设
目录
1.绪论1
1.1概述1
1.2光电计数的现状及发展前景1
2.系统的设计原理3
2.1系统的设计要求3
2.2系统的组成与结构3
2.3中断方式计数3
2.4串行通信接口4
3.光电计数器的硬件设计5
3.1主要芯片元器件引脚图及功能介绍5
3.1.1硅光电池5
3.1.2AT89C52单片机5
3.1.3LM393芯片9
3.1.4LM358芯片10
3.2硬件电路设计10
3.2.1电源设计10
3.2.2发射和接收部分11
3.2.3显示部分11
3.2.4报警部分12
3.2.5总电路原理图13
4.光电计数器的软件设计14
4.1Keil编译器软件简介14
4.2软件程序的设计15
4.2.1系统控制主程序设计15
4.2.2系统初始化子程序设计15
4.2.3显示子程序设计15
4.3总程序17
5.系统调试21
5.1电路的优缺点21
5.2电路的改进方法21
5.3电路调试过程中出现的问题及解决办法21
结论22
参考文献23
1.绪论
1.1概述
当今生活是信息时代,是获取信息和处理信息,以及信息应用的时代。
传感信息与检测技术的重要性在于它是获得信息并对信息进行一定处理的基础技术,是获取信息和信息加工处理的重要手段之一。
传感与检测技术是一门知识面广、综合程度高、实用性很强的专业课程。
它从传感器的基本理论入手,着重讲叙传感器的结构与感测原理,传感器是一个二端口的装置,不同的传感器输入-输出特性不同,同一传感器适应不同的被测信号呈现的特性也有所不同。
尤其当被测信号为静态信号时两种状态下,传感器的输入-输出特性完全不同。
感测技术在许多新知识里都有应用,以信息的传感、转换、处理为核心,从基本物理概念入手,阐述热工量、机械量、几何量等参数的测量原理及方法。
光电式传感器是将光信号转化为电信号的一种传感器。
它的理论基础是光电效应。
这类效应大致可分为三类。
第一类是外光电效应,即在光照射下,能使电子逸出物体表面。
利用这种效应所做成的器件有真空光电管、光电倍增管等。
第二类是内光电效应,即在光线照射下,能使物质的电阻率改变。
这类器件包括各类半导体光敏电阻。
第三类是光生伏特效应,即在光线作用下,物体内产生电动势的现象,此电动势称为光生电动势。
这类器件包括光电池、光电晶体管等。
光电效应都是利用光电元件受光照后,电特性发生变化。
敏感的光波长是在可见光附近,包括红外波长和紫外波长。
数字式电子计数器有直观和计数精确的优点,目前已在各种行业中普遍使用。
数字式电子计数器有多种计数触发方式,它是由实际使用条件和环境决定的。
有采用机械方式的接触式触发的,有采用电子传感器的非接触式触发的,光电式传感器是其中之一,它是一种非接触式电子传感器。
采用光电传感器制作的光电式电子计数器。
这种计数器在工厂的生产流水线上作产品统计,有着其他计数器不可取代的优点。
该例光电触发式电子计数器只有两位数,但通过级联可以扩展为四位,甚至多位。
1.2光电计数的现状及发展前景
由于有光电计数的设计理念,因此有了光电计数的发展。
在市场电子计数器行业需求增长有所减缓的现状下,产能扩张的势头并没有得到较好的控制。
产能过剩、重复建设不仅导致生产与消费的失衡,而且还引发了电子计数器行业内的一系列恶性价格竞争,影响了电子计数器行业业的盈利能力。
中国电子计数器行业市场现状,为外资企业入驻中国创造了条件,国际许多电子计数器行业企业已经看中在中国低成本拓展市场的机会,随着外资投入逐步加大,中国国内企业改革重组迅速加快。
同时新的行业制度等政策的颁布和实施将促使我国电子计数器行业洗牌,企业兼并重组将在政策的促使下大力发展。
由于当前电子计数器行业效益下滑,所以对电子计数器行业企业授信更要慎重。
必须关注电子计数器行业子行业,关注电子计数器行业上下游企业,优化客户结构,针对电子计数器行业行业需求进行新产品开发。
国内的制造技术水平远不如国外,制造技术不仅是衡量一个国家科技发展水平的重要标志,也是国际间科技竞争的重点。
我国正处于经济发展的关键时期,制造技术是我们的薄弱环节。
只有跟上发展先进制造技术的世界潮流,将其放在战略优先地位,并以足够的力度予以实施,才能尽快缩小与发达国家的差距,才能在激烈的市场竞争中立于不败之地。
总之,在我国研究和发展先进制造技术势在必行。
随着科学技术的发展,电子计数器的辅助功能也逐渐增加,现在已经出现了多功能计数器,多功能计数器产品的响应度较高,交直、流电两用、耗能低、价格低、无机械碰撞、无磨损、使用寿命长,既可计数,又可计算。
例如在毛衣编织机上运用,除可计数和计算外,还可实现断线报警。
微波计数器是以通用计数器和频率计数器为主配以测频扩展器而组成的微波频率计。
它的测频上限已进入毫米波段,有手动、半自动、全自动3类。
系列化微波计数器是电子计数器发展的一个重要方面。
2.系统的设计原理
2.1系统的设计要求
设计两电路光控电路,一路放置在门外,另一门放置在门内。
当有人通过门口时(无论是进入或走出房间),都会先触发一个光控电路,再触发另一个光控电路,根据光控电路产生触发脉冲的先后顺序,判断来人是进入还是离开,当有人进入时令计数器进行加计数,当有人离开时令计数器进行减计数;要求计数器的最大计数容量是99人,并用数码管显示数字。
2.2系统的组成与结构
图2-1光电计数器系统结构图
整个光电计数器系统是由光电传感电路、运算放大电路、AT89S52单片机系统电路、显示计数电路、报警电路五个部分组成的,如图2-1所示。
光电传感电路把被计数的物体的变化转换成电信号,由显示计数电路计数,再由数码显示管显示,当达到设定的报警值时,报警电路发出报警。
2.3中断方式计数
由于光电技术电路需要在数码管上显示进入电影院的人数,因此可以在内部存储器空间定义它的显示缓存区,用来暂存数码管显示的当前值。
系统在初始化程序之中,分别设置外部中断0和外部中断1产生中断的中断标志T0和T1,并初始化值为0。
当有外部中产生时,相应的中断置1。
当外部中断0产生中断时,在中断服务程序之中将中断标志T1置1,并屏蔽外部中断1,然后在主程序中扫描T0是否为1。
当T0为1时,调用光电计数子程序,将显示暂存变量加1,同时开外部中断1。
当电影院中的人数达到99人时,系统发出声光警报,直至按复位键为止。
当外部中断1产生中断时,在中断服务程序之中将中断标志T1置1,并屏蔽外部中断0,然后在主程序之中扫描T1是否为1。
当T1为1时调用光电计数子程序,将显示暂存变量减1,同时开外部中断0。
2.4串行通信接口
串行通信与并行通信不同,并行通信是一次性传送8位数据,传输快捷方便,但硬件较复杂,远距离传输成本较高,串行通信是一位一位的传送,一个字节的八位二进制数至少需要传送8次,结构也比较简单,串行通信是通过串行口来实现的,MCS-51单片机有一个全双工的异步串行接口可以用于串行数据的数据通信,串行通信的两种基本方式有异步传送方式和同步传送方式。
MCS-51单片机采用异步通信的串行通信方式,有一个全双工的串行接口电路,整个串行通信可以通过编制的程序设定,串行接口电路的内部结构如图2-2所示。
图2-2串行口内部结构
SBUF是独立的两个缓冲器,主要功能存放接收到的数据和存放将要发送的数据,起缓冲作用,TXD是发送引脚,数据从TXD一位一位的向外设发送,RXD是接收引脚,数据从RXD一位一位的接收到单片机内。
3.光电计数器的硬件设计
3.1主要芯片元器件引脚图及功能介绍
3.1.1硅光电池
硅光电池是一种能将光能直接转换成电能的半导体器件,其结构图1-1所示。
在N型层受光层上制作有栅状负电极,另外在受光面上还均匀覆盖有抗反射膜,它是一层很薄的天蓝色一氧化硅膜,可以使电池对有效入射光的吸收率达到90%以上并使硅光电池的短路电流增加25%-30%。
以硅材料为基体的硅光电池,可以使用单晶硅、多晶硅、非晶硅来制造。
单晶硅光电池是目前应用最广的一种,它有2CR和2DR两种类型,其中2CR型硅光电池采用N型单晶硅制造,2DR型硅光电池则采用P型单晶硅制造。
硅光电池的工作原理是光生伏特效应。
当硅光电池接入负载后,光电流从P区经负载流至N区,负载中即得到功率输出。
图1-1硅光电池结构图
3.1.2AT89C52单片机
AT89C52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89C52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89C52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求,AT89C52的管脚图如图1-2所示。
主要功能特性:
兼容MCS-51指令系统、8k可反复擦写(>1000次)ISPFlashROM、32个双向I/O口、4.5-5.5V工作电压、3个16位可编程定时/计数器、时钟频率0-33MHz、全双工UART串行中断口线、256x8bit内部RAM、2个外部中断源、低功耗空闲和省电模式、中断唤醒省电模式、3级加密位、看门狗(WDT)电路、软件设置空闲和省电功能、灵活的ISP字节和分页编程、双数据寄存器指针。
图1-2AT89C52管脚图
功能特性描述:
AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
VCC:
电源
GND:
地
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
表2.1P1口的第二功能
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
表2.2P3口的第二功能
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
Flash编程―并行模式:
AT89C52带有用作编程的片上Flash存储器阵列。
编程接口需要一个高电压(12V)编程使能信号,并且兼容常规的第三方Flash或EPROM编程器。
AT89C52程序存储阵列采用字节式编程。
编程方法:
对AT89C52编程之前,需根据Flash编程模式表和图13、图14对地址、数据和控制信号设置。
可采用下列步骤对AT89S52编程:
1.在地址线上输入编程单元地址信号
2.在数据线上输入正确的数据
3.激活相应的控制信号
4.把EA/Vpp升至12V
5.每给Flash写入一个字节或程序加密位时,都要给ALE/PROG一次脉冲。
字节写周期时自身定制的,典型值仅50us。
改变地址、数据重复第1步到第5步‘知道’全部文件结束。
DataPollingAT89C52用DataPolling作为一个字节写周期结束的标志特征。
3.1.3LM393芯片
LM393是双电压比较器集成电路,其内部结构图如图1-3所示。
该电路的特点如下:
工作电源电压范围宽,单电源、双电源均可工作,单电源:
2~36V,双电源:
±1~±18V;消耗电流小,Icc=0.8mA;输入失调电压小,VIO=±2mV;共模输入电压范围宽,Vic=0~Vcc-1.5V;输出与TTL,DTL,MOS,CMOS等兼容;输出可以用开路集电极连接“或”门。
图1-3LM393内部结构图
3.1.4LM358芯片
LM358里面包括有两个高增益、独立的、内部频率补偿的双运放,适用于电压范围很宽的单电源,而且也适用于双电源工作方式,它的应用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运放的地方使用,其内部结构图如图1-4所示。
LM358封装有塑封8引线双列直插式和贴片式两种。
LM358的特点:
内部频率补偿;低输入偏流;低输入失调电压和失调电流;共模输入电压范围宽,包括接地;差模输入电压范围宽,等于电源电压范围;直流电压增益高(约100dB);单位增益频带宽(约1MHz);电源电压范围宽:
单电源(3—30V);双电源(±1.5一±15V);低功耗电流,适合于电池供电;输出电压摆幅大(0至Vcc-1.5V)。
图1-4LM358内部结构图
3.2硬件电路设计
3.2.1电源设计
为使模块稳定工作,须有可靠电源。
我们考虑了两种电源方案
方案一:
采用独立的稳压电源。
此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:
采用单片机控制模块提供电源。
改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案,电源的电路图如图3-1所示。
图3-1电源电路图
3.2.2发射和接收部分
光电耦合器是以光为媒介传输电信号的一种电一光一电转换器件,它由发光源和受光器两部分组成。
为了能准确地远距离地感应到有人进入或离开电影院,就必须选择敏感性高且稳定的信号感应器件,而光电耦合器满足这个条件。
光电耦合器是发光源和受光器件组装在同一密闭的壳体内,彼此间用透明绝缘体隔离。
发光源的引脚为输入端,受光器件的引脚为输出端,常见的发光源为发光二极管,受光器为光敏二极管、光敏三级管等,实际电路发光源选用高亮发光管和硅光电池。
L1和L2为高亮发电管,BT1和BT2是硅光电池,光电传感器的电路图如图3-2所示。
图3-2光电传感器
3.2.3显示部分
该系统要求显示计数功能。
基于上述原因,我们考虑了三种方案:
方案一:
完全采用LCD显示。
完全采用LCD显示可显示有限的符号和数码字苻,能满足设计的需要。
方案二:
完全采用点阵式LCD显示。
这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等,也可满足设计的需要。
方案三:
采用LED显示,LED只显示数字输出。
这种方案既满足系统功能要求,又简单,成本有低。
权衡利弊,第三种方案的优缺点,我们决定采用方案三来实现数字显示。
系统中采用的数码管为共阴极数码管,显示电路图的电路如图3-3所示。
图3-3显示电路图
3.2.4报警部分
当计数器计数到“00”时应使计数器复位并置数“99”。
但这时将不会显示:
“00”,而计数器从“01”直接复位。
由于“00”是一个过渡时期,不会显示出来,所以本电路采用“99”作为计数器复位脉冲。
当计数器由“00”跳变到“99'”时,从输出低电平使计数器置数,并保持为“99”,蜂鸣器发出报警声。
按有人进入电影院时,Rs触发器翻转输出高电平,计数器开始计数。
若按下S1,计数器立即复位。
报警电路的电路图如图3-4所示。
图3-4报警电路图
3.2.5总电路原理图
4.光电计数器的软件设计
4.1Keil编译器软件简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍KeilC51开发系统各部分功能和使用。
图2.1C51工具包整体结构图
KeilC51单片机软件开发系统的整体结构C51工具包的整体结构,如图3.1所示,其中uVision与Ishell分别是C51forWindows和forDOS的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及A51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
4.2软件程序的设计
系统上电初始化之后,主程序不断地扫描键盘和显示程序;同时判断外部中断标志是否有效。
如果外部中断标志有效,则调用光电计数处理子程序,刷新数码管的显示值
4.2.1系统控制主程序设计
定义蜂鸣器接口P3.6,初始状态为0,蜂鸣器不报警,当有高电平触发P3.6是,蜂鸣器开始报警。
当下一个脉冲是1时外部中断T0则产生中断,计数器停止加计数,同样若外部中断T1也是高电平则T1产生中断,计数器停止减计数。
4.2.2系统初始化子程序设计
设定外部中断T0、T1的标志位置0即中断处于关闭状态,蜂鸣器控制标志位也置0,处于关闭状态,系统初始化流程图如图3-5所示。
图4-1系统初始化流程图
4.2.3显示子程序设计
定义数码管的段码表、位选码,定义计数器的显示缓存区,在统计过程中,当一个信号传到单片机中,系统调用延时子程序进行延时,计数器对十位和个位进行计数判断,将数据通过数码管显示出来,显示子程序的电路图如图3-6所示。
图4-2动态显示电路流程图
4.2.4光电计数处理子字程序设计
外部中断T0和T1初始化后都处于关闭状态,当其中断标志有效时进行加计数,当外部中断T0处于关闭时,外部中断T1进行加计数且判断计数器是否达到计满值99,若大于等于99则KEYBOARD=1蜂鸣器报警。
外部中断T1关闭,开外部中断T0,则减计数,再开外部中断T0。
最后将计数值通过数码管显示,其流程图如图3-7所示。
图4-3光电计数处理子程序流程图
4.3总程序
总程序如下所示:
(C语言)
sbitKEY=P3^6;
voidmain(void)
{system();
int01initial();
while
(1)
{
led();
keydeal();
if(KEYBOARD==1)
KEY=1;
else
KEY=0;
if(T0==1)
inout();
if(T1==1)
inout();
}
}
voidsystem(void)
{
T0=0;
T1=0;
KEYBOARD=0;
KEY=0;
}
constunsignedchartable0[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x75,0x7c,0x39,0x5e,0x79,
0x71};
constunsignedchartable1[]={0xfe,0xfd};
unsignedintbuffer[]={0,1};
voiddelay(intxc)
{
inti;
for(i=0;i ; } voidle
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机
![提示](https://static.bingdoc.com/images/bang_tan.gif)