《基于单片机的电子数字钟》课程设计报告专业:电子信息工程班级:姓名:学号:指导教师:2010年6月一、课程设计的目的本课程设计是自动化专业、电子信息技术专业学生在学完单片机原理及课程之后必修课程,它的教学目的和任务是综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下基础。二、设计内容利用单片机的定时/计数器,中断系统,以及阵列键盘和LED显示器进行设计。在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制。用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己计算)。形成定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器7BH单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理。三、设计要求1、在PROTEUS中设计硬件,在KEIL51中编写软件,在PROTEUS中运行程序仿真实现。2、写课程设计报告,给出设计思想,原理,硬件电路图,给出相应程序,并写出设计过程。课程设计报告格式:1、课程设计的目的2、课程设计具体要求3、MCS-51单片机系统简介4、MCS-51单片机内部定时器/计数器简介5、键盘和LED数码管显示器简介6、基本原理7、硬件电路8、软件程序流程及代码9、设计制作过程10、总结四、MCS-51单片机系统简介MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52两个子系列。对于51子系列,主要有8031、8051、8751三种机型,它们的指令系统与芯片引脚完全兼容,仅片内程序存储器有所不同,8031芯片不带ROM,8051芯片带4KROM,8751芯片带4KEPROM。-2-51子系列的主要特点为:◆8位CPU。◆片内带振荡器,频率范围1.2~12MHZ。◆片内带128字节的数据存储器。◆片内带4K的程序存储器。◆程序存储器的寻址空间为64K字节。◆片外数据存储器的寻址空间为64K字节。◆128个用户位寻址空间。◆21个字节特殊功能寄存器。◆4个8位的并行I/O接口:P0、P1、P2、P3。◆2个16位定时器/计数器◆2个优先级别的5个中断源。◆1个全双工的串行I/O接口,可多机通信。◆111条指令,含乘法指令和除法指令。◆片内采用单总线结构。◆有较强的位处理能力。◆采用单一+5V电源。PSENALERESETXLAT1P0.0~P0.7P2.0~P2.7RAM地址寄存器RAMP0锁存器P2锁存器EPROM或ROM程序地址寄存器缓冲器B寄存器ACC暂存器2暂存器1ALUPSWSPPC增量器PCDPTRP0驱动器P2驱动器特殊功能寄存器指令寄存器定时及控制P1锁存器P3锁存器P1驱动器P3驱动器振荡器VssP1.0~P1.7P3.0~P3.7EAXLAT2VccPSENALERESETXLAT1P0.0~P0.7P2.0~P2.7RAM地址寄存器RAMP0锁存器P2锁存器EPROM或ROM程序地址寄存器缓冲器B寄存器ACC暂存器2暂存器1ALUPSWSPPC增量器PCDPTRP0驱动器P2驱动器特殊功能寄存器指令寄存器定时及控制P1锁存器P3锁存器P1驱动器P3驱动器振荡器VssP1.0~P1.7P3.0~P3.7EAXLAT2Vcc图一、MCS-51系列单片机的内部结构五、MCS-51单片机内部定时器/计数器中断系统简介定时/计数器的主要特性:1.MCS-51系列中51子系列有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/计数器T2。2.每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。3.每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有-3-三种工作方式。通过编程可设定工作于某种方式。4.每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。TH1TL1TH0TL0TCONTMOD启动启动溢出溢出工作方式工作方式中断请求内部总线TcyT1T0TH1TL1TH0TL0TCONTMOD启动启动溢出溢出工作方式工作方式中断请求内部总线TcyT1T0图二、定时/计数器T0、T1的结构及工作原理定时/计数器的工作方式:方式0是13位的定时/计数方式,因而最大计数值(满值)为2的13次幂,等于8192。如计数值为N,则置入的初值X为:X=8192-N方式1的结构与方式0结构相同,只是把13位变成16位,16位的加法计数器被全部用上。由于是16位的定时/计数方式,因而最大计数值(满值)为2的16次幂,等于65536。如计数值为N,则置入的初值X为:X=65536-N方式2下,16位的计数器只用了8位来计数,用的是TL0(或TL1)的8位来进行计数,而TH0(或TH1)用于保存初值。当TL0(或TL1)计满时则溢出,一方面使TF0(或TF1)置位,另一方面溢出信号又会触发图6.5上的三态门,使三态门导通,TH0(或TH1)的值就自动装入TL0(或TL1)。由于是8位的定时/计数方式,因而最大计数值(满值)为2的8次幂,等于256。如计数值为N,则置入的初值X为:X=256-N方式3只有定时/计数器T0才有,当M1M0两位为11时,定时/计数器T0工作于方式3。方式3下,定时/计数器T0被分为两个部分TL0和TH0,其中,TL0可作为定时/计数器使用,占用T0的全部控制位:GATE、C/T、TR0和TF0;而TH0固定只能作定时器使用,对机器周期进行计数,这时它占用定时/计数器T1的TR1位、TF1位和T1的中断资源。-4-六、键盘简介1、键盘的工作原理键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。它的结构和产生的波形如图所示。P1.1VCCGND断开闭合断开P1.1(a)(b)P1.1VCCGND断开闭合断开P1.1(a)(b)图三、键盘开关及波形示意图2、键盘抖动的消除消除按键盘抖动通常有两种方法:硬件消抖和软件消抖。断开闭合+5V+5V输出断开闭合+5V+5V输出图四、硬件消抖电路硬件消抖可以采用R—S触发器或单稳态电路。软件消抖是利用延时来跳过抖动过程3、键盘的结构形式键盘的结构形式一般有两种:独立式键盘与矩阵式键盘。独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,每根I/O口线上的按键都不会影响其它的I/O口线。矩阵式键盘又叫行列式键盘。用I/O口线组成行、列结构,键位设置在行列的交点上。例如4×4的行、列结构可组成16个键的键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O口线。-5-七、LED数码管显示器简介abcdefgdpcomabcdefgdpcomabcdefgdp10987612345gfcomabedcomcdp(a)(b)(c)abcdefgdpcomabcdefgdpcomabcdefgdp10987612345gfcomabedcomcdp(a)(b)(c)图五、LED显示器的结构LED数码管的显示方式:LED静态显示时,其公共端直接接地(共阴极)或接电源(共阳极),各段选线分别与I/O口线相连。要显示字符,直接在I/O线送相应的字段码。LED动态显示是将所有的数码管的段选线并接在一起,用一个I/O口控制,公共端不是直接接地(共阴极)或电源(共阳极),而是通过相应的I/O口线控制。LED显示器从译码方式上有硬件译码方式和软件译码方式。从显示方式上有静态显示方式和动态显示方式。在使用时可以把它们组合起来。在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。-6-八、基本原理本设计考虑到仅仅是数字钟,就用内部的定时计数器来技术,并过中断来处理。在硬件的设计上采用C51单片机作为核心部件。在按键上,只用到位选择、位加和位减,就采用独立式的键盘。显示上采用数码管的动态显示。译码采用软件译码。显示码通过P0口输出,为选择通过P2口输出。软件设计流程图如下:图六、主程序流程图图七、定时计数器T0中断服务程序流程图开始显示单元清零T0、T1设为16位计数模式允许T0中断调用显示子程序进入功能程序按下键否?是否开始中断返回保护现场,重置初值启动下一个50MS50MS计数器加1秒单元加1,50ms计数器清0分单元加1,秒单元清0时单元加1,分单元清0时单元清050ms计数器=20?秒单元=60?分单元=60?时单元=24?是是是是否否否否-7-九、硬件电路XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51R35.1kR45.1kR55.1kVCCK2K1K0GNDX1CRYSTALC247uFC347uFK0键为模式选择键,按第一次暂停,设小时;按第二次暂停,设分,按第三次重新开始走动。K1为加1键,K2为减1健。C11nFR11k对应元器件如下:单片机:80C52按键:BUTTON电阻:RES电容:CAP晶振:CRYSTAL地:GRAND电源:POWERLED数码管:7SEG-MPX8-CA-BLUE(CA:共阳,CC:共阴)运行效果如下:-8-十、软件程序流程及代码;采用8位LED软件译码动态显示程序;使用AT89C51单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳;LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。;片内RAM的70H到77H单元为LED数码管的显示缓冲区;78H,79H,7AH分别为秒、分、小时计数单元;7BH为50ms计数器,7CH为调时按键计数器ORG0000HLJMPSTARTORG000BH;定时器/计数器T0中断程序入口LJMPINTT0;主程序START:MOVR0,#70HMOVR7,#0CHINIT:MOV@R0,#00HINCR0DJNZR7,INITMOV72H,#10MOV75H,#10MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#03CHSETBEASETBET0SETBTR0START1:LCALLSCANLCALLKEYSCANSJMPSTART1;延时1MS子程序DL1MS:MOVR6,#14HDL1:MOVR7,#19HDL2:DJNZR7,DL2DJNZR6,DL1RET;延时20MS子程序DL20MS:ACALLSCANACALLSCANACALLSCANRET;数码管显示程序SCAN:MOVA,78H;时间存入显示缓冲区相应位置MOVB,#0AHDIVABMOV71H,AMOV70H,BMOVA,79HMOVB,#0AHDIVABMOV74H,AMOV73H,BMOVA,7AHMOVB,#0AHDIVABMOV77H,AMOV76H,BMOVR1,#70H;循环扫描显示MOVR5,#80HMOVR3,#08HSCAN1:MOV