xnm[理学]附录a一个单片机的应用项目

上传人:tia****nde 文档编号:69693587 上传时间:2019-01-14 格式:PPT 页数:110 大小:2.02MB
返回 下载 相关 举报
xnm[理学]附录a一个单片机的应用项目_第1页
第1页 / 共110页
xnm[理学]附录a一个单片机的应用项目_第2页
第2页 / 共110页
xnm[理学]附录a一个单片机的应用项目_第3页
第3页 / 共110页
xnm[理学]附录a一个单片机的应用项目_第4页
第4页 / 共110页
xnm[理学]附录a一个单片机的应用项目_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《xnm[理学]附录a一个单片机的应用项目》由会员分享,可在线阅读,更多相关《xnm[理学]附录a一个单片机的应用项目(110页珍藏版)》请在金锄头文库上搜索。

1、1,附录A 一个单片机的应用项目 自动打铃机的设计,A.1 项目任务 A.2 硬件设计 A.3 软件设计 A.4 项目实验 A.5 项目仿真,END,2,A.1 项目任务,A.1.0 设计要求 A.1.1 基本要求 A.1.2 强化要求,3,A.1.0 设计要求,项目的任务是利用单片机作为核心控制电路,设计一个自动打铃机。基本要求如下: (1)要求所设计的单片机自动打铃机具有准确的计时功能,能够像电子钟一样按时、分、秒格式显示实时时间。 (2)能根据用户要求的时间点自动按时打铃,该项目以大学的自动打铃控制为例,除要求自动打铃外,还要求能自动播放音乐和早操、课间操节目。具体控制时间如作息时间表所

2、示(见表A.1)。 (3)设置两个时间调校(校时和校分)按键,分别用来调校时和分,以保证自动打铃机的时间与标准时间相符。,4,表A.1 大学作息时间表,5,A.1.1 基本要求,如果读者只是把这个项目作为单片机课程的综合实训的话,只要求能在单片机开发装置(或单片机实验箱)上按设计要求成功完成实验则可。对于没有单片机开发设备的读者,只要求能利用仿真软件(Proteus)成功完成仿真即可。,6,A.1.2 强化要求,如果读者有兴趣把这个项目做成一个实际样机的话,则要求读者在能成功完成实训或仿真调试的基础上,再增加电源电路、实际的驱动电路、机壳等,设计出印刷电路板PCB,并完成PBC的制作和元器件安

3、装,用带有FPROM且与MCS-51系列兼容的单片机(如AT89C52)代替实验用的单片机,并用编程器将源程序写入单片机的FPROM中,与其他元件一起安装到电路板上,配上机壳,构成独立的自动打铃机,达到可以投入实际应用的目的。,7,A.2 硬件设计,A.2.1 总体设计 A.2.2 实时时钟电路设计 A.2.3 显示电路设计 A.2.4 控制电路设计,8,A.2.1 总体设计,首先需要利用单片机设计一个实时时钟,然后根据控制时间(即作息时间)建立一个数据区作为控制字码表,存放在ROM中。在此基础上,设计控制程序,在时钟每计时1秒钟时查看一遍数据区,检查数据区中所设置的时间是否与需要控制打铃或广

4、播的时间点相同,若相同,则通过单片机的I/O端口输出控制信号。,9,A.2.2 实时时钟电路设计,选择通过MCS-51内部定时器T0 产生中断来实现计时。设定定时器T0工作在定时工作方式1,每100ms(0.1s)产生一次中断,每产生一次T0中断,就利用软件将基准0.1s时间计数单元进行累加计数一次。当定时器T0产生10次中断时,就获得了1s信号,这时秒计数单元加1,同理,由软件对分计数单元和时计数单元进行时间计数,从而得到秒、分、时的时间值,并通过LED数码管显示电路显示出来。,10,定时器初值的确定,选择单片机的晶振频率为fosc = 6MHz,则时钟周期为1/6s,机器周期为2s。所以定

5、时器T0工作在方式1下产生0.1s的定时,所需的定时器初值为3CB0H,为了确保T0能准确定时0.1s,在T0中断服务程序中重装定时器初值时,修正为3CBDH,在运行中可根据误差情况进一步调整。,11,A.2.3 显示电路设计,为了按时、分、秒的格式显示实时时间,需要使用6只LED数码显示管(本项目采用共阴极LED数码管)。为了减少硬件开销,提高系统可靠性和降低成本,选择LED数码管的显示方式为动态扫描显示。由于驱动LED数码管需要一个字形口和一个字位口,为此,采用并行I/O接口芯片8155对单片机进行I/O口扩展。,12,选择8155的B口作为字形口,将B口经74LS07和所有LED的a、b

6、、c、d、e、f、g、h引线相连;8155的A口作为字位口,其中的6个引脚经74LS07分别和6个LED的控制端G相连。单片机工作时通过8155的B口输出字形码,再通过A口输出字位码以控制被选中的一个LED点亮。当与时、分、秒对应的字形码轮流输出时,相应的字位码从左到右轮流选中LED,打铃机的实时时间就可以逐次在LED上动态显示。,13,A.2.4 控制电路设计,1时间调校电路 2输出控制电路 3自动打铃机硬件接线图 4自动打铃机硬件接线图说明 5图A.1中8155的端口地址分析,14,1时间调校电路,选择采用外部中断请求来进行时间调校。将“校时”按键和“校分”按键分别接到单片机的(P3.3)

7、和(P3.2)引脚,每当用户按下一次时间调校按键,便会产生一次外部中断请求,单片机响应中断后,在中断服务程序中对相应的计时单元进行加1。若加至超过计时基制,通过程序控制计时单元清0,这样只用加1控制就可以进行校时。,15,2输出控制电路,选取单片机的P1.0引脚用于连接电铃驱动电路,P1.4引脚用于连接广播设备驱动电路。在项目实验调试阶段,电铃和广播设备用发光二极管代替,将发光二极管的负端与输出引脚连接,使用低电平驱动。 连接P1.0的发光二极管(绿色)亮表示打铃,灭则表示不打铃。 连接P1.4的发光二极管(红色)亮表示打开广播设备,灭则表示停止广播。,16,3 自动打铃机硬件接线图,图A.1

8、 自动打铃机硬件接线图,17,4 自动打铃机硬件接线图说明,在图A.1中,所用的单片机型号为8031,因为采用单片机开发实验装置进行试验时,所加载的源程序是存放在实验装置的RAM存储器中的,无需用到单片机的片内ROM,所以在项目设计实验阶段只要使用无ROM型的8031单片机即可。 实验成功后,需要做成实用的打铃机时,若仍采用8031,则需要给8031扩展片外ROM,现在由于具有片内ROM(EPROM、E2PROM或FPEROM)的单片机价格不高,因此,实际应用时,通常直接选用与MCS-51兼容的具有片内FPROM的单片机(如AT89C51、AT89C52等)。,18,5 图A.1中8155的端

9、口地址分析, 当IO/= 1时,单片机选择8155作为I/O口,8155的端口地址为:,8000H 命令/状态口 8001H A口(字位口) 8002H B口(字形口) 8003H C口(未使用) 8004H 定时器/计数器低字节(未使用) 8005H 定时器/计数器高字节(未使用) 8008HFFFDH 8155重叠I/O地址,19,5 图A.1中8155的端口地址分析, 当IO/= 0时,单片机选择8155中的RAM存储器工作,RAM的地址为:,0000H00FFH 8155基本RAM地址 0100H7FFFH 8155重叠RAM地址,在该应用项目中,只用到8155其中的命令/状态口、A口

10、和B口。未使用8155中的RAM存储器。,20,A.3 软件设计,A.3.1 程序的总体设计 A.3.2 程序流程图设计 A.3.3 源程序设计,21,A.3.1 程序的总体设计,程序的总体设计主要是根据通过硬件设计所确定的硬件电路以及编程需要,进行单片机的资源分配、引脚定义以及设计出控制字、控制码等。包括如下内容:,1设计时间控制字 2ROM资源分配 3RAM资源分配,22,1设计时间控制字,为了能在控制程序中识别出应在何时进行何种控制,时间控制字可采用如图A.2所示的格式。,图A.2 时间控制字的格式,每个控制字的字长为4个字节,以每两个控制字为一组,每组需要占用8个ROM存储单元。控制字

11、中的时、分、秒为需要做出控制(启动或关闭装置)的时间点,控制码则用于指示该做何种控制。,23,由于在硬件设计时,选取单片机的P1.0用作电铃的开启和关闭,P1.4用作广播的开启和关闭,电铃和广播用发光二极管代替,而且使用低电平驱动,所以只要从P1.0引脚输出低电平0,就可以开启电铃;输出高电平1,就可以关闭电铃。 于是启动电铃和关闭电铃的控制码可以分别设计为FEH(1111 1110B)和FFH(1111 1111B)。同理,启动广播设备和关闭广播设备的控制码可以分别设计为EFH(1110 1111B)和FFH(1111 1111B),如表A.2所示。,控制码的设计,24,表A.2 控制码的定

12、义及其功能,25,根据作息时间表(见表A.1)的具体控制时间,按图A.2的格式和表A.2的定义,编出所有的控制字,并依照控制时间的先后为顺序依次存入ROM的数据区中,构成由控制字组成的控制字码表,控制码为00H时,表示数据区的结束。,时间控制字的设计,例如: “6:20 起 床,启动电铃持续响铃15秒”的时间控制字为:FE062000 FF062015,26,2ROM资源分配,由于单片机初始或复位时,程序计数器PC的内容为0000H,所以ROM的0000H应作为主程序的入口地址。又由于项目中需用到外部中断0、外部中断1和T0中断,因此,需要将ROM的0003H、0013H和000BH留作相应的

13、中断入口。 为此,主程序安排跳转到ROM的0050H以后的单元。数据区的入口地址,可以在整个程序编写完成,并进行汇编后,再视已经占用多少ROM单元而定。对于本应用项目,估计不含数据区的程序空间小于1000H,因此,将数据区的起始地址设定为1010H。如若不然,再根据实际情况加以调整。,27,2ROM资源分配,对于本应用项目,估计不含数据区的程序空间小于1000H,因此,将数据区的起始地址设定为1010H。如若不然,再根据实际情况加以调整。按照表A.1及表A.2编写出的数据表以及数据区在ROM中所分配的地址如表A.3所示。,28,表A.3 时间控制字数据区,29,表A.3 时间控制字数据区(续)

14、,30,3RAM资源分配,程序中所用到的单片机片内RAM数据存储单元分配如下。,26H: 0.1s计数单元 27H: 秒计数单元 28H: 分计数单元 29H: 时计数单元 2AH: 计时单元指针初值 2BH: 存放秒计数基制 2CH: 存放分计数基制 2DH: 存放时计数基制 2EH: 数据区地址暂存单元 3AH: 控制码存储单元 3BH、3CH: 数据暂存单元 4AH4FH: 显示缓冲区 5AH: 堆栈栈底,31,A.3.2 程序流程图设计,1主程序流程图 2中断服务程序流程图 3显示子程序流程图 4T0中断服务程序流程图 5控制子程序流程图,32,1主程序流程图,图A.3 主程序流程图,

15、33,主程序中主要完成的初始化工作,(1)8155初始化:主要是向8155写入命令字,将8155的A口、B口的工作方式设置为基本I/O口,并将它们均设置为输出,因此,需要写入8155的命令字为03H。 (2)设置堆栈指针:单片机堆栈指针的初始值为07H,如果不作改变,堆栈将占用第1组工作寄存器的区域,为了方便编程时使用该组工作寄存器,并且避免与位寻址区和已经分配了的RAM单元冲突,决定将堆栈指针初始值设为5AH。,34,(3)设置定时器工作方式:在实时时钟设计时,已选定定时器T0为工作方式1,所以应写入定时器工作方式寄存器TMOD的控制字为01H。 (4)设置定时器初值及启动定时器:根据前面的

16、分析,定时器初值为3CB0H。在主程序中只要将3CH送入TH0,B0H送入TL0则可。送完定时初值后,只要令定时器控制寄存器TCON中的TR0位为1,便可以启动T0工作。,主程序中主要完成的初始化工作,35,(5)设置中断允许方式:在本项目中用到T0中断和 、 这两个外部中断,为了开放它们,应向中断允许控制寄存器写入的控制字为87H。 、 用于通过“校时”按键和“校分”按键进行时间调校,因此,中断方式应选择为电平触发方式。由于位于中断标志寄存器TCON中的中断触发方式控制位的缺省值为0,即已选择为电平触发方式,所以无需改变TCON的内容。,主程序中主要完成的初始化工作,36,、,图A.4 、 中断服务程序流程图,2 中断服务程序流程图,37,设计中断服务程序的注意事项:,(1)由于 、 的中断入口地址分别为

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号