电子时钟单片机课程设计文档格式.docx
- 文档编号:17899514
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:20
- 大小:456.81KB
电子时钟单片机课程设计文档格式.docx
《电子时钟单片机课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《电子时钟单片机课程设计文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
2.1设计方案:
1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。
2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;
软件编程简单,通常用在对时钟精度要求较高的场合。
2.2设计内容:
这里采用应用广泛的AT89C51作为时钟控制芯片,利用单片机内部的定时/计数器T0实现软时钟的目的。
首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,秒计60次形成分,分计60形成小时,小时计到12。
最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。
此外还要实现对时间的调整功能,89C51的P1.0、P1.1、P1.2外接三个独立按键,当按下P1.0按键时,系统进入调时间的状态或启动时间显示的功能;
当按下P1.1按键时,对显示的数码管进行加一的功能;
当按下P1.2按键时,对显示的数码管进行减一的功能,达到调整时间的目的。
2.3系统框图设计根据电子时钟能够实现的功能,采用单片机内部资源,设计出了系统原理框图,如图2-1所示。
图2-1
在单片机内部构建三个模块:
控制模块、译码模块、定时模块,用以实现自动计数、译码显示功能。
单片机外部构建四个电路:
时钟电路、复位电路、外部按钮电路、显示电路,用以实现对单片机内部计数控制以及译码输出的正确显示。
该电子时钟是将秒、分、时显示在人的视觉器官面前的一种计时装置。
故将计时周期设置为24小时,当显示满刻度是23时59分59秒时,数码管显示为0。
为了确保时间正常校对,在系统中设有校对按钮,用以实现对数码管显示的正确调整。
2.4系统电路原理设计在本次的设计中对12MHZ的系统时钟进行定时计数,初值设为B03CH。
形成定时时间为50ms。
用片内RAM的7BH单元对50ms计数,计20次1秒钟到,然后对秒计数器78H单元加1,秒计数器加到60后就向分进位,则分计数器79H单元加1而秒计数器78H单元清零;
分计数器加到60后又向时进位,则时计数器7AH单元加1而分计数器79H单元清零;
时计数器加到24则时计数器清零。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
图2-2
根据电路原理框图设计出电路原理图如图2-2所示,由12MHz的晶振给单片机提供固定的时钟频率,通过k1、k2、k0可以对显示电路时间进行位设定。
在图2-2中,复位电路、时钟电路、控制电路加上单片机组成单片机最小应用系统,能够实现很多复杂的功能。
系统由AT89C51、LED数码管、按键、电容、电阻等部分构成,能实现时间的调整、输出、调时间等功能。
系统中按钮k能对时间进行调整功能的按钮,采用单键控制调时功能,运用软件去判断按键的时间从而选择完成相对应的功能。
当按下k0第一次时,对hour来调节小时的时间;
当第二次按下k0时,对minute来调节分的时间;
第三次按下是对scoend来调节秒时间。
在设置秒位时间时,k1按下,秒就加1;
如果k2按下,秒就减1。
时、分调节与秒设定相同。
系统中的按键采用中断技术来检测,它在单片系统中有着十分重要的作用,它不仅可以提高单片机CPU的效率,也可以对突发事件处理。
所谓中断就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这是CPU暂停当前执行的程序A,立即转去执行处理事件B的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。
计数器采用软件编程来实现时钟,数码管显示采用动态显示。
第3章系统各单元电路分析3.1AT89C51AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS的8位微处理器,俗称单片机。
AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的
图3-1
由于电路原理中只用到单片机的p0、p1、p2口,所示下面对这三个端口进行详细介绍。
1)、P0口:
P00~P07统称为P0口,在不接片外存储器与不扩展I/O接口时,作为准双向输入/输出接口。
在接有片外存储器或扩展I/O接口时,P0口分时复用为低8位地址总线和双向数据总线。
P0口是一个三态双向口,由一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成。
在输入数据时,应人为地先向P0口写“1”,定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
2)、P1口:
P10~P17统称为P1口,可作为准双向I/O接口使用。
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4LSTTL门电流。
P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
3)、P2口:
P20~P27口统称为P2口,一般可以作为准双向I/O接口使用,在接有片外存储器或扩展I/O接口且寻址范围超过256字节时,P2口用作高8位地址总线。
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
3.2复位电路计算机在启动运行时都需要复位,复位时使中央处理器CPU和内部其他部件处于一个确定的初始状态,从这个状态开始工作。
AT89C51单片机有一个复位引脚RST,高电平有效。
在时钟电路工作以后,当外部电路使得RST端出现两个机器周期(24个时钟周期)以上的高电平,系统内部复位。
复位有两种方式:
上电复位和按钮复位。
在此次的设计中,我采用按键复位,
图3-2
只要RST保持高电平,AT89C51单片机将循环复位。
复位期间,ALE、PSEN输出高电平。
RST从高电平变为低电平后,PC指针变为0000H,使单片机从程序存储器地址为0000H的单元开始执行程序。
复位后,内容各寄存器的初始内容如表4-1所示,当单片机执行程序出错或进入死循环时,可按复位按钮重新启动。
3.3时钟电路在本次设计中,时钟电路设计就是采用内部方式,即利用芯片内部的振荡电路。
AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2是高增益反相放大器的输入端和输出端。
这个高增益反相放大器将与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体振荡器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中,对外接电容的值虽然没有严格的要求,但是电容的大小会影响起振的快速和温度的稳定性、振荡器的稳定性、振荡器频率的高低。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22uF。
在焊接刷电路板时,我们应注意晶体振荡器和电容尽可能安装的与单片机芯片靠近些,用以减少寄生电容,为了更好地保证振荡器可靠地工作和稳定行,其电路图如图3-3所示。
图3-3
3.4按键电路独立式键盘是各按键相互独立,每个按键各接一根I/O接口线,每根I/O接口线的按键是不会影响其他的I/O接口线。
在本次设计中,按键为K0、K1、K2,他们分别与单片机P10、P11、P12接口线相接。
通过按键控制显示器的显示。
其电路图
图3-4
3.5LED显示电路在本次的设计中,采用的8位的数码管显示器。
数码管如果按照段数分可为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多了一个小数点的显示;
如果按能够显示多少个“8”分类的话,也可以可分为1位、2位、4位等数码管。
如果按照发光二极管单元的连接方式又可以分为共阳极数码管和共阴极数码管。
共阳极的数码管是将所有发光二极管的阳极接到一起后就形成公共阳极(COM)的数码管,共阳极数码管在应用时要将公共极(COM)接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
共阴极数码管是将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴极数码管在应用时应将公共极(COM)接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
图3-5
第四章系统软件程序设计
4.1主程序
先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。
4.2数码管显示模块
本设计有8个数码管,从右到左为妙、横线、分、横线、时。
在本系统中数码管显示采用软件译码动态显示。
在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。
4.3定时器/计数器T0中断服务程序
T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。
秒单元加到60则对分单元加一,同时秒单元清0;
分单元加到60则对时单元加一,同时分单元清0;
时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把他们的值放到存储器单元的指定位置。
流程图如下:
4.4按键处理模块
按键设置为:
如果没有按键,则时钟正常走时。
当按下K0键时,进入调分状态,时钟停止走动;
按K1和K2按键可以进行加一和减一操作;
继续按K0键可以分别进行分和小时的调整;
最后按K0键启动计时。
第5章仿真实现
仿真实现在本课题中,采用AT89C51单片机作为主控制器,12MHZ晶振作为振荡源,P0口作为输出字段码,P2口作为输出位选码,采用共阳的LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。
片内RAM的70H到77H单元为LED数码管的显示缓冲区78H,79H,7AH分别为秒、分、小时计数单元。
7BH为50ms计数器,7CH为调时按键计数器。
具体的程序见附录。
第6章课程设计总结
做了一周的数字钟课程设计,让我感受颇深,在本次电子技术课程设计过程中,得到了老师和同学的帮助,让我学到了很多东西。
通过这次课程设计,在很高的程度上弥补了我们的理论的不足,通过设计进一步巩固了我们的理论知识,让我们学的更扎实。
总之,这次课程设计带给我很大的收获,再一次感谢学校给了我们一个展现自己才能的机会,这对我们以后的工作和学习都有很好的作用。
参考文献:
[1]林立.单片机原理与应用[M].北京:
电子工业出版社,2009[2]李守中.51单片机开发入门与经典实例[M].北京:
人民邮电出版社,2007
[3]丁元杰主编.单片微型计算机.北京:
机械工业出版社.2003[4]胡汉才.单片机原理与接口技术[M].北京:
清华大学出版社,1996
[5]李广第主编.单片机基础.北京:
北京航天工业出版社.2002
[6]杨加国.单片机原理与应用及C51程序设计(第二版)[M].北京:
清华大学出版社,2009
附录:
汇编语言程序
ORG0000H
LJMPSTART
ORG000BH
LJMPINIT0
START:
MOVR0,#70H;
主程序开始
MOVR7,#0CH
INIT:
MOV@R0,#00H
INCR0
DJNZR7,INIT
MOV72H,#10;
对连字符进行装值
MOV75H,#10
MOVTMOD,#01H;
选择定时器/计数器T0的方式1
MOVTL0,#0B0H;
对低位赋初值
MOVTH0,#03CH;
高位赋初值
SETBEA
SETBET0
SETBTR0
START1:
LCALLSCAN
LCALLKEYSCAN
SJMPSTART1
DL1MS:
MOVR6,#14H;
延时1子程序
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
DL20MS:
ACALLSCAN;
延时20ms子程序
ACALLSCAN
RET;
数码管显示程序开始
SCAN:
MOVA,78H
MOVB,#0AH
DIVAB;
时间秒的十位送给A,时间秒的个位送B
MOV71H,A;
时间秒要显示的十位
MOV70H,B;
时间秒要显示的个位
MOVA,79H
DIVAB;
时间分的十位送给A,时间分的个位送B
MOV74H,A;
时间分要显示的十位送地址
MOV73H,B;
时间分要显示的个位送地址
MOVA,7AH
时间时的十位送给A,时间时的个位送B
MOV77H,A;
时间时显示的十位送地址
MOV76H,B;
时间时要显示的个位送地址
MOVR1,#70H
MOVR5,#0FEH
MOVR3,#08H
SCAN1:
MOVA,R5;
数码管的显示程序
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR;
对字段表取值显示
MOVP0,A
MOVA,R5
LCALLDL1MS
INCR1
RLA
MOVR5,A
DJNZR3,SCAN1
MOVP2,#0FFH
MOVP0,#0FFH
RET;
"
0~9"
和"
-"
的字段表
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
;
定时/计数器T0中断程序
INIT0:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
MOVTL0,#0B0H
MOVTH0,#03CH
INC7BH
MOVA,7BH
CJNEA,#14H,OUTT0
;
50ms是否到20次,没有到就继续执行50ms的延时
MOV7BH,#00
INC78H
CJNEA,#3CH,OUTT0
一秒的延时是否计到60次,没有就继续执行
MOV78H,#00
INC79H
CJNEA,#3CH,OUTT0
MOV79H,#00
INC7AH
CJNEA,#18H,OUTT0;
60分钟的延时是否计到24次,没有就
继续执行程序
MOV7AH,#00
OUTT0:
SETBET0;
启动定时器T0
POPPSW
POPACC
RETI
按键处理程序
KEYSCAN:
CLREA
JNBP1.0,KEYSCAN0;
P1.0有按键按下则跳转到子程序
JNBP1.1,KEYSCAN1;
P1.1有按键按下则跳转到子程序
JNBP1.2,KEYSCAN2;
P1.2有按键按下则跳转到子程序
KEYOUT:
RET
KEYSCAN0:
LCALLDL20MS;
20ms的延时消抖
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;
如果功能键按下则对时加一调整
CJNEA,#3CH,KEYOUT;
如果加到60则清零
KSCAN11:
INC7AH;
如果功能键是按下第二次则对分进行加一调整
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子时钟 单片机课程设计 电子 时钟 单片机 课程设计