1、目 录1.课程设计目的第2页2.课程设计题目描述和要求第2页3.课程设计报告内容第2页4.课程设计体会第13页参考文献第13页附录1第14页单片机时钟控制系统设计1、课程设计目的1.1、掌握单片机实际系统的开发步骤;1.2、进一步掌握单片机的中断系统及其服务程序的编写方法;1.3、掌握定时系统、计数初值的计算;1.4、掌握硬件设计并熟悉AT89C51的功能及引脚;1.5、掌握单片机汇编程序的设计、编写及调试的方法;2、课程设计题目描述和要求基于AT89C51(时钟频率等于12MHZ)设计单片机时钟控制系统,主要由AT89C51、6位LED显示器、4个按钮组成。通过AT89C51内部定时器T0中
2、断来计时,再通过6位LED显示器来显示出来,通过定时器T1、外部中断0、外部中断1及外部按钮来调整时间。其中4个按钮的作用如下:按钮1:单片机的复位按钮;按钮2:小时的调整按钮;按钮3:分钟的调整按钮;按钮4:秒的调整按钮。按复位键后,单片机时钟从零开始计时;当时间出现偏差时,可以通过时、分、秒的调整按钮来调整时间或者通过调整按钮来设定我们所需要的初始时间;当时间达到了23时59分59秒时,再过1秒时钟控制系统就会自动变为0时0分0秒。3、课程设计报告内容3.1总体方案该时钟控制系统电路是基于AT89C51芯片设计的,还包括一些LED显示管、按钮、晶振器等。其设计原理如图1所示: 图1 硬件框
3、架图利用上述设计原理图,通过Protel软件可得系统的电路原理图(见附录1)。3.2硬件介绍本设计采用硬件有AT89C51单片机,并行I/O接口芯片74LS273、6个LED显示器和4个控制按钮, 其中3个按钮调整时间(按钮2:小时的调整按钮;按钮3:分钟的调整按钮;按钮4:秒的调整按钮)。3.2.1 AT89C51单片机介绍 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失内存制造技术制造,与工业标准
4、的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁内存组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51引脚图如图2所示。 图2 AT89C51引脚图1)主要特性 与MCS-51 相容;4K字节可编程闪烁内存;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24Hz;三级程序内存锁定;1288位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;低功耗的闲置和掉电模式;片内振荡器和时钟电路。2)管脚说明 VCC:供电电压。 GND:接地。 P0口:P0口为一个8
5、位漏极开路双向I/O口,每脚可吸收TTL门电流。当P1口的管脚第一次写“1” 时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0 口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入“1” 后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口
6、缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序内存或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将
7、输出电流这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,P3口同时为闪烁编程和编程校验接收控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部内存时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令
8、是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序内存的选通信号。在由外部程序内存取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序内存(0000H-FFFFH),不管是否有内部程序内存。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序内存。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振
9、荡器的输出。3.2.2并行I/O接口芯片74LS273介绍74LS273是8位数据/地址锁存器,一种带清除功能的8D触发器, 1D8D为数据输入端,1Q8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。其管脚图为:图3 74LS273的管脚D0D7:出入;Q0Q7:输出;第一脚WR:主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0(低电平);CP(CLK):触发端,上升沿触发,即当CP从低到高电平时,D0D7的数据通过芯片,为0时将资料锁存,D0D7的数据不变。3.2.3七段LED显示器介绍单个LED是由7段发光二极管构成的显示单元。有10个引脚,对应于7个段、一个小
10、数点和两个公共端。在显示电路中,这些发光二极管有两种接法:共阳极接法和共阴极接法。所以,采用了4个LED连体的、内部已将其相应段接好的共阳极LED,它具有12个引脚,含7个段和4个公共端,为提高数码管的亮度,可在位选在线加入一个三极管驱动电路。 上电后系统经过初始化,查询是否有功能切换键按下:有,则进入用户设定模式状态;无,则进入默认缺省工作状态。在缺省工作状态下,LED数码管按照程序设定好的若干亮灯花样模式程序顺序调用往下走,如果想进入用户设定模式状态,只需按下功能切换键即可。共阳极7段LED数码管引脚图如图4所示。从图可以看出,要是数码管显示数字,有两个条件:(1)是要在VT端加正电源;(
11、2)要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的。 图4 共阳极7段LED数码管本设计LED采用共阳极连接,其驱动代码如下表所示。 驱动代码表显示数值. g f e d c b a驱动代码(16进制)011000000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001192H61000001182H711111000F8H81000000080H91001000090H3.3单元电路介绍3.3.1时钟电路MCS-51的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟
12、信号;另一种为外部方式,时钟信号由外部引入。所设计的电路采用的是内部时钟方式。AT89C51内部有一个用于构成振荡器的高增益反相放大器,引脚XTALI和XTAL2分别为此放大器的输人端和输出端,其频率范围为1.212MHz。该放大器与作为回馈组件的片外晶振器一起构成自激振荡器。其电路如图5所示。对外接电容的值虽然没有严格的要求,但电容的大小多少会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度稳定性。电容容量一般在20100pF之间选择,当时钟频率为12 MHz时典型值为30pF。 图5 单片机时钟电路3.3.2复位电路MCS-51的复位电路包括上电复位电路和按键(外部)复位电路。不管
13、何种复位电路,都是通过复位电路产生的复位信号(高电平有效)由RST引脚送进到内部的复位电路对MCS-51进行复位,复位信号要持续两个机器周期以上才能可靠复位。此处为按键电平复位电路,按下复位键后,电容C被充电使RST端为高电平,实现复位功能。如图6所示: 图6 按键电平复位电路3.3.3调时电路 在该电路中有三个按钮来控制时/分/秒的调整。当时间出现偏差时,可以通过此电路来校准时间;当时钟控制系统复位后,也可以通过此电路来设置时间的初始值。3.3.4显示电路 为了简化硬件线路,降低成本,利用LED动态显示接口实现。这采用74LS273来锁存,通过P0口送LED数码显示管的段码,再结合P2口送的
14、位码就可实现时间日期的显示。位码的显示是通过P2口控制某位选通,该位应显示数码的段码同时加上段码线上,即每一时刻仅有一位数码管被点亮,当轮流显示的速度较快时,由于人眼的视觉暂留现象,看起来就像所有位同时显示一样。晶体管和电阻是为数码管的位显示提供驱动电流。3.4软件设计本设计软件部分包含四大部分: 主程序、按钮中断子程序、显示子程序、T0中断子程序。3.4.1 主程序主程序完成定时器T0、T1的方式1的初始化及外部中断0、1的初始化,然后设置时/分/秒的初始值,最后通过循环程序把时/分/秒的高位、低位元放在显示缓冲区里并调显示子程序来显示。主程序流程图如图7所示。 图7主程序流程图 图8 按钮
15、中断子程序流程图3.4.2按钮中断子程序按钮中断子程序完成时/分/秒的调整或设置时间的初始值。当时钟控制系统时间出现偏差用这三个按钮来进行调整;当时钟控制系统复位后,三个按钮用来设置系统的初始值。按钮中断子程序流程图如图8所示。3.4.3显示子程序显示子程序完成时间的动态显示,通过位显示控制和段显示控制来控制显示管显示时间。其中,位显示控制通过P1口来实现;段显示控制通过P0口来实现。显示子程序流程图如图9所示:3.4.4 T0中断子程序 通过主程序中设置的初始值,每100T0就产生一次中断;每产生10000次中断就是1秒;通过程序来实现时钟的正常功能。T0中断子程序流程图如图10所示。图9
16、显示子程序流程图 图10 T0中断子程序流程图3.5程序清单OUTSEG EQU 0FEFFH ;数码管段控制口LEDBUF EQU 60H ;显示缓冲区HOUR EQU 41HMINUTE EQU 42HSECOND EQU 43HC100US EQU 44HTICK EQU 10000 ;中断次数计数器T100US EQU 9CH ;100us定时初值ORG 0000H ;复位入口LJMP STARTORG 0003H ;外部中断0入口LJMP HOUR_SETORG 000BH ;定时器T0中断入口LJMP COUNT_TIMEORG 0013H ;外部中断1入口LJMP MINUTE_
17、SETORG 001BH ;定时器T0中断入口LJMP SECOND_SETLEDMAP: ;数码管显示代码 DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EHDELAY:MOV R7,#0 ;延时子程序DELAYLOOP: DJNZ R7,DELAYLOOP DJNZ R6,DELAYLOOP RETDISPLAYLED: ;显示子程序 MOV R0,#LEDBUF MOV R1,#6 ;共6个数码管 MOV R2,#20H ;从左边开始显示 MOV A,#0 MOV P1,A ;关所有数码
18、管LOOP: MOV A,R0 MOV DPTR,#OUTSEG MOVX DPTR,A MOV A,R2 MOV P1,A ;显示一位八段管 MOV R6,#1 CALL DELAY MOV A,R2 ;显示下一位 RR A MOV R2,A INC R0 DJNZ R1,LOOP RETTOLED:MOV DPTR,#LEDMAP MOVC A,A+DPTR RETSTART:MOV TMOD,#62H ;设置T0,T1的工作方式及初值 MOV TH0,#T100US MOV TL0,#T100US MOV TH1,#0FFH MOV TL1,#0FFH MOV TCON,#55H ;置外
19、部中断0,1为电平触发方式并启动T0,T1 MOV IE,#8FH ;开中断 MOV HOUR,#0 MOV MINUTE,#0 MOV SECOND,#0 MOV C100US,#TICKTLOOP:MOV A,HOUR MOV B,#10 DIV AB CALL TOLED MOV LEDBUF,A ;时的高位 MOV A,B CALL TOLED MOV LEDBUF+1,A ;时的低位 MOV A,MINUTE MOV B,#10 DIV AB CALL TOLED MOV LEDBUF+2,A ;分的高位 MOV A,B CALL TOLED MOV LEDBUF+3,A ;分的低位
20、 MOV A,SECOND MOV B,#10 DIV AB CALL TOLED MOV LEDBUF+4,A ;秒的高位 MOV A,B CALL TOLED MOV LEDBUF+5,A ;秒的低位 CALL DISPLAYLED ;调显示子程序 LJMP TLOOPCOUNT_TIME: ;定时器T0中断服务程序 PUSH PSW PUSH ACC DEC C100US MOV A,C100US JNZ EXIT MOV C100US,#TICK MOV A,SECOND INC A DA A MOV SECOND,A CJNE A,#60,EXIT MOV SECOND,#0 MOV
21、 A,MINUTE INC A DA A MOV MINUTE,A CJNE A,#60,EXIT MOV MINUTE,#0 MOV A,HOUR INC A DA A MOV HOUR,A CJNE A,#24,EXIT MOV HOUR,#0EXIT: POP ACC POP PSW RETIHOUR_SET: ;外部中断0服务程序 PUSH PSW PUSH ACC MOV A,HOUR INC A DA A MOV HOUR,A POP ACC POP PSW RETIMINUTE_SET: ;外部中断1服务程序 PUSH PSW PUSH ACC MOV A,MINUTE INC
22、A DA A MOV MINUTE,A POP ACC POP PSW RETISECOND_SET: ;定时器T1中断服务程序 PUSH PSW PUSH ACC MOV A,SECOND INC A DA A MOV SECOND,A POP ACC POP PSW RETI END4、课程设计体会 通过这次课程设计,进一步掌握了单片机的中断子程序及其服务子程序的设计、编写及调试,其中包括定时系统计数初值的计算;掌握了单片机硬件系统的设计方法;熟悉了单片机实际系统的开发步骤。我还通过课程设计学到一些平时在书本上所学不到的东西,对单片机有了更深刻的理解,而且还增强了自己的动手能力。 在单片机汇编程序的编写过程中,出现了一些基本的语法错误但通过调整修改成功,并且在WAVE6000集成调试软件中调试成功。然后,在Protel中成功的画出时钟控制系统的原理图。参考文献:1 刘瑞新 单片机原理及应用教程 机械工业出版社 20072 姜沫岐 Protel2004原理图与PCB设计实例 机械工业出版社 20063 洪卫东 用51单片机制作六位数码管时钟 电子制作2007年第1期4 刘凤格 MCS_51单片机的时钟电路 菏泽师专学报2003年第2期5 徐爱钧 单片机实践教程 电子出版社 2005附录1:原理图- 13 -
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922