单片机课程设计报告电子时钟Word文档格式.docx
《单片机课程设计报告电子时钟Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告电子时钟Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
2、每个定时计数器既能够对系统时钟计数实现定时,也能够外部信号计数实现计数功能通过编程设定来实现。
3、每个定时计数器都有多种工作方式,其中T0有四种工作方式,T1有三种工作方式,T2有三种工作方式。
通过编程可设定工作于某种方式。
四种工作方式为:
13位定时\计数器、16位定时\计数器、8位自动重置定时\计数器、两个8位定时\计数器(只有T0有)
4、每一个定时计数器定时计数时刻到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。
中断系统:
1、MCS-51单片机提供5个硬件中断源,2个外部中断源,2个定时计数器T0和T1的溢出中断TF0和TF1,1个串行口发送TI和接收RI中断。
2、MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的承诺和屏蔽是由内部的中断承诺寄存器IE的各位来操纵的。
中断承诺寄存器IE的字节地址为A8H,能够进行位寻址。
系统复位时,中断承诺寄存器IE的内容为00H,如果要开放某个中断源,则必须使IE中的总控置位和对应的中断承诺位置“1”。
3、MCS-51单片机有5个中断源,为了处理方便,每个中断源有两级操纵,高优先级和低优先级。
通过由内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,能够进行位寻址。
如果某位被置“1”,则对应的中断源被设为高优先级;
如果某位被清零,则对应的中断源被设为低优先级。
关于同级中断源,系统有默认的优先权顺序,从高到低优先权顺序为外部中断0、定时计数器T0中断、外部中断1、定时计数器T1中断、串行口中断。
通过设置中断优先级寄存器IP能够改变系统默认的优先级顺序。
4、MCS-51单片机响应中断的条件为:
中断源有要求且中断承诺。
五、键盘和LED数码管显示器简介
键盘是单片机应用系统中最常用的输入设备,在单片机应用系统中,操作人员一样差不多上通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。
键盘实际上是一组按键开关的集合,平常按键开关总是处于断开状态,当按下键时它才闭合。
键盘的结构形式一样有两种:
独立式键盘和矩阵式键盘。
矩阵式键盘的工作方式有3种:
查询工作方式、定时扫描工作方式和中断工作方式。
LED数码管显示器:
在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED数码管显示器尽管显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,差不多上能够满足单片机应用系统的需要,因此在单片机应用系统中经常用到。
LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。
在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种。
所谓译码方式是指由显示字符转换得到对应的字段码的方式。
关于LED数码管显示器,通常的译码方式有两种:
硬件译码方式和软件译码方式。
LED数码管在显示时,通常有两种显示方式:
静态显示方式和动态显示方式。
在使用时能够把它们组合起来。
在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。
六、差不多原理
软时钟是利用单片机内部的定时器\计数器来实现的,它的处理过程如下:
第一设定单片机内部的一个定时器\计数器工作于定时方式,对机器周期计数形成基准时刻,然后用另一个定时器\计数器或软件计数的方法对基准时刻计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。
然后通过数码管把它们的内容在相应位置显示出来即可。
数码管显示能够采纳静态显示方法或动态显示方法。
静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示一样用6个或8个数码管。
由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一样采纳动态显示方式。
动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳固。
译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;
硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采纳软件译码。
在具体处理时,定时器计数器采纳中断方式工作,对时钟的形成在中断服务程序中实现。
在主程序中只需对定时器计数器初始化、调用显示子程序和操纵子程序。
另外,为了使用方便,设计了简单的按键,能够通过按键实现时、分的调整,如此在主程序中就加入了键盘设置子程序。
七、系统硬件电路的设计
八、系统软件程序的设计
电子时钟的软件系统由主程序和子程序组成,主程序程序包含初始化参数设置、按键处理、数码管显示模块等,
1.主程序
主程序执行流程如图11.2,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。
2.数码管显示模块
本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。
采纳软件译码动态显示。
3.定时器/计数器T0中断服务程序
定时器/计数器T0用于时刻计时。
选择方式1,重复定时,定时时刻设为50ms,定时时刻到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;
分单元加到60则对时单元加1,同时分单元清0;
时单元加到24则对时单元清0,标志一天时刻计满。
在对各单元计数的同时,把它们的值放到储备单元的指定位置。
定时器/计数器T0中断服务程序流程图如图11.3。
图11.2主程序流程图图11.3定时器/计数器T0中断服务程序流程图
4.按键处理模块
按键处理设置为:
如没有按键,则时钟正常走时。
当按下K0按键时,进入调分状态,时钟停止走动;
按K1可K2按键可进行加1或减1操作;
连续按K0键可分不进行分和小时的调整;
最后按K0键将退出调整状态,时钟开始计时运行。
5.汇编语言源程序清单
;
采纳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为调时按键计数器
ORG0000H
LJMPSTART
ORG000BH;
定时器/计数器T0中断程序入口
LJMPINTT0
主程序
START:
MOVR0,#70H
MOVR7,#0CH
INIT:
MOV@R0,#00H
INCR0
DJNZR7,INIT
MOV72H,#10
MOV75H,#10
MOVTMOD,#01H
MOVTL0,#0B0H
MOVTH0,#03CH
SETBEA
SETBET0
SETBTR0
START1:
LCALLSCAN
LCALLKEYSCAN
SJMPSTART1
延时1MS子程序
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
延时20MS子程序
DL20MS:
ACALLSCAN
ACALLSCAN
RET
数码管显示程序
SCAN:
MOVA,78H;
时刻存入显示缓冲区相应位置
MOVB,#0AH
DIVAB
MOV71H,A
MOV70H,B
MOVA,79H
MOV74H,A
MOV73H,B
MOVA,7AH
MOV77H,A
MOV76H,B
MOVR1,#70H;
循环扫描显示
MOVR5,#80H
MOVR3,#08H
SCAN1:
MOVA,R5
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVA,R5
LCALLDL1MS
INCR1
RRA
MOVR5,A
DJNZR3,SCAN1
MOVP2,#00H
MOVP0,#0FFH
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
;
“0~9”,“-”的共阳极字段码
定时器/计数器T0中断服务程序
INTT0:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
INC7BH
MOVA,7BH
CJNEA,#14H,OUTT0
MOV7BH,#00
INC78H
MOVA,78H
CJNEA,#3CH,OUTT0
MOV78H,#00
INC79H
MOVA,79H
MOV79H,#00
INC7AH
CJNEA,#18H,OUTT0
MOV7AH,#00
OUTT0:
SETBET0
POPPSW
POPACC
RETI
按键处理程序
KEYSCAN:
CLREA
JNBP1.0,KEYSCAN0
JNBP1.1,KEYSCAN1
JNBP1.2,KEYSCAN2
KEYOUT:
SETBEA
RET
KEYSCAN0:
LCALLDL20MS
JBP1.0,KEYOUT
WAIT0:
JNBP1.0,WAIT0
INC7CH
MOVA,7CH
CJNEA,#03H,KEYOUT
MOV7CH,#00
SJMPKEYOUT
KEYSCAN1:
JBP1.1,KEYOUT
WAIT1:
JNBP1.1,WAIT1
CJNEA,#02H,KSCAN11
INC79H
CJNEA,#3CH,KEYOUT
SJMPKEYOUT
KSCAN11:
CJNEA,#18H,KEYOUT
KEYSCAN2:
JBP1.2,KEYOUT
WAIT2:
JNBP1.2,WAIT2
CJNEA,#02H,KSCAN21
DEC79H
CJNEA,#0FFH,KEYOUT
MOV79H,#3BH
KSCAN21:
DEC7AH
MOV7AH,#17H
END
九、设计过程
1、在PROTEUS中设计硬件
PROTEUS软件使用过程如下:
1)选择元器件
2)放置元器件
3)连线
4)添加程序
5)运行仿真
元器件清单如下:
按键:
BUTTON
电阻:
RES
电容:
CAP
晶振:
CRYSTAL
LED数码管:
7SEG-MPX8-CA-BLUE(CA:
共阳,CC:
共阴)
地:
GRAND
电源:
POWER
2、在KEIL51中编写程序,编译、连接形成HEX文件。
3、在PROTEUS中把HEX文件加载到单片机芯片上。
4、运行仿真看结果。
十、总结
通过这次的课程设计,我了解了KeilC51集成环境和PROTEUS仿真软件的使用,用此软件练习电子时钟的设计,不仅能够把握此软件的使用方法,而且复习了原先的汇编语言,对电子时钟的原理和电子时钟的汇编程序有了更进一步的明白得。
仿真实现了把抽象的东西具体化,把理论和实际结合起来,更利于对单片机程序的明白得把握。
同时,在这次的课程设计中,我明白了,要自己熟练地把握一个软件,不能光看老师的演示过程,得自己去学习那个软件,明白每一个步骤的确切含义,自己逐步的亲手去进行演示,如此才能变成自己的知识来熟练应用。
班级:
07电本1班
姓名:
王少阳
学号:
200706021048