1、用单内部的定时器实现的数字钟智能测控仪器设计用单内部的定时器实现的数字钟_智能测控仪器设计 用单内部的定时器实现的数字钟_智能测控仪器设计 “智能测控仪器设计”课程 项目设计总结报告 项目名称: 用单片机内部定时器实现的数字钟 指导老师: 学 号: 专业年级: 完成时间: 2013 年 7 月 用单片机内部定时器实现的数字钟 摘要:近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器
2、等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善本文介绍了基于单片机AT89C51的数字钟的设计,详细讨论了它从软件上实现的过程,重点在时钟调整的方式:查询和中断的比较,然后,对数字钟的稳定性和精确性作了相关的讨论在文章的最后,给出了采用中断方式实现的数字钟的源程序本次设计通过对一个时钟显示手动校时等功能的时间系统的设计,其中结合了LCD1602显示单片机定时中断等技术 关键词:单片机的应用,AT89C51,LCD 19 Abstrct:In recent years along with computer penetration
3、 in the social sphere and the large scale integrated circuit development, MCU applications are constantly deepening, because it has strong function, small volume, low power consumption, low price, reliable work, so that the use is convenient wait for a characteristic, thus it is especially suitable
4、for and control of relevant system, more and more widely and its application in automatic control, intelligent instruments, instrumentation, data acquisition, military products and household appliances and other fields, the microcontroller is often used as a core component to use, in accordance with
5、 the specific hardware structure, and the specific characteristics of the target application software node, to make perfect. This article introduced based on the single-chip digital clock design, discussed in detail from the software implementation process, heavy in the clock adjustment way: queries
6、 and disruption of comparison, and then, on the digital clock made of the stability and accuracy of closed the discussion. At the end of the article, gives the interrupt mode to achieve digital clock source. This design through to a clock display, manual school functions when the time system design,
7、 which combines the LCD1602 display, dynamic scanning, SCM timer interrupt technology. Key words: The application of MCU, AT89C51, LCD 1. 项目研究意义与研究现状 数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,与机械式时钟相比具有更高的准确性和直观性,装置,具有更长的使用寿命,已得到广泛的使用数字钟的设计方法有许多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现
8、电子钟等等这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,并便于功能的扩展数字钟广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能诸如定时自动报警按时自动打铃时间程序自动控制定时广播自动起闭路灯定时开关烘箱通断动力设备甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的因此,研究数字钟及扩大其应用,有着非常现实的意义 本课题研究的基于51单片机数字钟采用专用实时时钟芯片,走
9、时准确,且具有掉电保持功能,采用新颖简单的图像点阵液晶显示,开机有启动画面,具有良好的人机界面;是很好的时间指示工具 2. 研究的内容与预期目标 2.1 研究内容 单片机经过1233代的发展,正朝着多功能高性能低电压低功耗低价格大存储容量强I/O功能及较好的结构兼容性方向发展其发展趋势不外乎以下几个方面: 1多功能 单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能比如A/DPWMPCA(可编程计数器阵列)WDT(监视定时器-看家狗)高速I/O口及计数器的捕获/比较逻辑等 有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量例如,
10、有的芯片以51内核为核心,集成了USB控制器SMART CARD接口MP3解码器CAN或者I*I*C总线控制器等,LEDLCD或VFD显示驱动器也开始集成在8位单片机中 2高效率和高性能 为了提高执行速度和执行效率,单片机开始使用RISC流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制 由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序使用高级语言可以降低开发难度,缩短开发周期,增强软件
11、的可读性和可移植性,便于改进和扩充功能 3低电压和低功耗 单片机的嵌入式应用决定了低电压和低功耗的特性十分重要由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级这些特性使得单片机系统可以在更小电源的支持下工作更长的时间 2.2 预期目标 该多功能数字钟的设计,总体上大致可分为以下几个部分组成:1. 时钟电路部分;2.复位电路部分;3.LCD显示电路部分;4.按键选择电路部分;5. 蜂鸣器电路部分系统原理框图如图1所示 整个电路的工作原理是由晶振芯片提供准确的时钟电路,由键盘调整数字钟的功能,并通过软件编程把时间数字通过LCD显示出来 时钟
12、电路 复位电路 LCD显示电路 按键选择电路 AT89C51 图1 系统原理框图 3. 总体结构设计 1.系统的基本原理及设计思想 本设计采用AT89C51单片机模块晶振电路模块复位电路模块独立键盘模块和显示电路模块 晶振电路用于产生AT89C51单片机工作时所必需的控制信号AT89C51单片机的内部电路正是在时钟信号的控制下,严格地按时序执行指令进行工作在执行指令时,CPU首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号完成指令所规定的操作 复位是单片机的初始化操作,只需给AT89C51的复位引脚RESET加上大于2个机器周期的高电平就可使AT89C51复
13、位当AT89C51进行复位时,PC初始化为0000H,使AT89C51单片机从程序存储器的0000H单元开始执行程序除了进入系统的正常初始化之外,当程序运行出错(如程序“跑飞”)或操作错误使系统处于“死锁”状态时,也需要按复位键即RESET为高电平,使AT89C51摆脱“跑飞”或“死锁”状态而重新启动程序 键盘的任务有三项:(1)首先判别是否有键按下若有,进入下一步工作(2)识别哪一个键被按下,并求出相应的键值(3)根据键值,找到相应键值的处理程序入口在本设计中,键盘具有向单片机输入数据命令等功能,是人与单片机对话的主要手段 2.计时方案 电脑数字钟的秒信号是利用AT89C51单片机内部定时器
14、TO产生的由于振荡器的晶振频率为12MHz,使得TO的最大定时时间远远小于1秒,因此,在设计时采用了硬件计数与软件计数相结合的方式,即通过TO产生0.1S的时基信号,然后再利用软件进行计数,从而产生1秒钟的时间信号 在设计中,定时器TO采用了中断方式当定时时间到时,定时器向CPU申请一次中断,CPU响应中断后转入中断服务程序,在TO的中断服务程序中实现时分秒的累加,即每产生一次中断,0.1S时基单元的内容加1,当0.1S时基单元的内容等于10时,便产生1S信号,使秒计数单元的内容加1,并将0.1S时基单元的内容清0;当秒计数单元计满60后,向分计数单元进位,使分计数单元的内容加1,并将秒计数单
15、元的内容清0;当分计数单元计满60后,向时计数单元进位,使时计数单元的内容加1,并将分计数单元的内容清0;时计数单元计满24后清O 4.硬件设计 4.1 单片机的选择 本课程选用AT89C51型号的单片机 AT89C51 是美国ATMEL 公司生产的低电压,高性能CMOS8 位单片机,片内含4k bytes 的可反复擦写的只读程序存 储器(PEROM)和128 bytes 的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度非易失性存储技术生产, 兼容标准MCS-51指令系统,片内置通用8 位 央处理器(CPU)和Flash 存储单元,功能强大AT89C51 单片机可为您提供许多
16、高性价比的应用场合,可灵活应用于各种控制领域 主要性能参数: 1与MCS-51产指令系统完全兼容 2 4k字节可重擦写Flash 闪速存储器 3 1000 次擦写周期 4 全静态操作:0Hz-24MHz 5 三级加密程序存储器 6 1288 字节内部RAM 7 32 个可编程I /O口线 8 2 个16 位定时/计数器 4.2 定时/计数器 8051系列单片机至少有两个16位内部定时器/计数器8052有三个定时器/计数器,其中连个基本定时器/计数器是定时器/计数器0和定时器/计数器1他们既可以编程为定时器使用,也可以编程为计数器使用若是计数内部晶振驱动时钟,则它是定时器;若是计数8051的输入
17、引脚的脉冲信号,则它是计数器 8051的T/C时加一计数的定时器实际上也是工作在技术方式下的,只不过对固定频率的脉冲计数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能 当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加一,频率加=fosc/12晶振为6MHz,计数频率=500KHz,每2Us计数加一 当T/C工作在计数器时,计数脉冲来自外部脉冲输入引脚T0或T1当T0或T1脚上负跳变需2个机器周期,即24个振荡周期所以T0或T1脚输入的计数外部脉冲的最高频率为fosc/12当晶振为12MHz时,最高技术频率为500KHz,高于此频率将计数出错 4.3 显示电路
18、1602字符型LCD简介 1602LCD主要技术参数: 显示容量:162个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 引脚功能说明 表1:引脚接口说明表 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 第1脚:VSS为地电源
19、第2脚:VDD接5V正电源 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器低电平时选择指令寄存器 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令 第714脚:D0D7为8位双向数据线 4.3.1 液晶显示器各种图形的显
20、示原理 字符型液晶显示模块是一种专门用于显示字母数字符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法一般1602字符型液晶显示器实物如图5,仿真图6: 1.线段的显示 点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应例如屏的第一行的亮暗由RAM区的000H00FH的16字节的内容决定,当(000H)=FF
21、H时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线这就是LCD显示的基本原理 2.字符的显示 用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮这样一来就组成某个字符但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让
22、控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可 4.3.2 时钟电路 图2 时钟电路图 时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式本文用的是内部时钟方式电路图如图7: MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2这两个引脚跨接石英晶体振荡器
23、和微调电容,就构成一个稳定的自激振荡器 4.3.3 按键电路 图 3 独立式按键电路图 独立式按键是各按键相互独立,每个按键占用一根I/O端线,每根I/O端线上的按键工作状态不会影响其他I/O端线上按键的工作状态如图9所示: 独立式按键电路配置灵活,软件结构简单,但每个按键必须适用于按键数量较少的场合本设计中用到4个按键数量较少,所以采用的是独立式按键 5.软件设计 系统的软件设计也是工具系统功能的设计单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计单片机的软件设计通常要考虑以下几个方面的问题: (1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合
24、理的总体结构,使软件开发清晰简洁和流程合理; (2)培养良好的编程风格,如考虑结构化程序设计实行模块化子程序化既便于调试链接,又便于移植和修改; (3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数; (4)绘制程序流程图; (5)合理分配系统资源; (6)为程序加入注释,提高可读性,实施软件工程; (7)注意软件的抗干扰设计,提高系统的可靠性 5.1 主控模块设计 开始 初始化 启动定时器,主程序开始运行 按键检测 时间显示 图4 主程序流程图 开始工作时,先把一切都初始化,然后单片机里的定时器开始工作,主程序开始运行,同时对按键进行检测,检测完就可以开始计时 以下是本实验程序
25、: #include #include #include sbit RS=P2_; sbit RW=P2_; sbit E=P2_; sbit BF=P0_; sbit K1=P3_; sbit K2=P3_; sbit K3=P3_; sbit K4=P3_; unsigned char t; unsigned char s,m,h; unsigned char code string=“Beijing Time”; unsigned char code digit=“0123456789“; void delay(unsigned char i) unsigned char j; whil
26、e(i-) for(j=0;j115;j+) ; unsigned char BusyTest() bit result; RS=0; RW=1; E=1; _nop_(); _nop_(); _nop_(); _nop_(); result=BF; E=0; return result; void Write_com(unsigned char dicate) while(BusyTest()=1); RS=0; RW=0; E=0; _nop_(); _nop_(); P0=dicate; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_();
27、_nop_(); _nop_(); _nop_(); E=0; void WriteAddress(unsigned char x) Write_com(x|0x80); void WriteData(unsigned char y) while(BusyTest()=1); RS=1; RW=0; E=0; _nop_(); _nop_(); P0=y; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; void Lcdint() delay(15); Write_com(0x3
28、8); delay(5); Write_com(0x38); delay(5); Write_com(0x38); delay(5); Write_com(0x0c); delay(5); Write_com(0x06); delay(5); Write_com(0x01); delay(5); void Displayhour() unsigned char i,j; i=h/10; j=h%10; WriteAddress(0x44); WriteData(digiti); WriteData(digitj); void Displayminute() unsigned char i,j;
29、 i=m/10; j=m%10; WriteAddress(0x47); WriteData(digiti); WriteData(digitj); void Displaysecond() unsigned char i,j; i=s/10; j=s%10; WriteAddress(0x4a); WriteData(digiti); WriteData(digitj); void main() unsigned char i; Lcdint(); TMOD=0x01; EA=1; ET0=1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR
30、0=1; t=0; s=0; m=0; h=0; WriteAddress(0x02); i=0; while(stringi!= 0 ) WriteData(stringi); i+; WriteAddress(0x46); WriteData( : ); WriteAddress(0x49); WriteData( : ); while(1) Displayhour(); delay(5); Displayminute(); delay(5); Displaysecond(); delay(5); if(K1=0) delay(15); if(K1=0) h+; if(h=24) h=0;
31、 while(K1=0); delay(15); if(K2=0) delay(15); if(K2=0) m+; if(m=60) m=0; while(K2=0); delay(15); if(K3=0) delay(15); if(K3=0) m-; if(m=0) m=59; while(K3=0); delay(15); if(K4=0) delay(15); if(K4=0) h-; if(h=0) h=23; while(K4=0); delay(15); void timer0(void) interrupt 1 t+; if(t=20) t=0; s+; if(s=60) s
32、=0; m+; if(m=60) m=0; h+; if(h=24) h=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; 图5 实验结果图 6. 结果与讨论 7. 体会与建议 经过将近一个月学习和设计,我收获颇多,有深刻的心得体会让我受益匪浅关于单片机方面的知识,我学到了许多关于单片机系统开发的知识,使我们各个方面都得到了充分的锻炼 通过本次设计,使我更加扎实的掌握了有关电子线路单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的讨论,一遍又一遍的检查我们终于找出了问题所在,也暴露出了前期在这方面的知识欠缺和经验不足实践才能出真知,实践才是检验真理的唯一标准,唯有通过亲自动手制作,才能令我们掌握的知识不再是一些纸上谈兵的东西 在这次的设计中,我们遇
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1