《毕业设计(论文)基于C语言的电子钟设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于C语言的电子钟设计.doc(24页珍藏版)》请在三一办公上搜索。
1、ANYANG INSTITUTE OF TECHNOLOGY 专 科 毕 业 论 文 基于C语言的电子钟的设计 Design of the Electronic Clock Based on C系(院)名称: 电子信息与电气工程学院 专业班级: 2008级电气自动化2班 学生姓名: 指导教师姓名: 指导教师职称: 讲师 2011年 05月目 录中文摘要、关键词I英文摘要、关键词.II第一章 前言.1 1.1 单片机与其发展史1 1.2课题的背景与目的.2第二章 总体方案设计.3 2.1 设计内容.3 2.2 设计方案32.2 设计原理图4第三章 单元模块设计.5 3.1实时时钟模块.5 3.2
2、存储器模块.5 3.3单片机接口电路.6 3.4系统供电模块.73.5串口下载电路模块.83.6显示模块.8第四章 软件设计.10 4.1软件设计流程104.2实时时钟流程11第五章 系统调试.12 5.1软件调试.12结论.17致谢.18参考文献.19基于C语言的电子钟的设计摘 要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片
3、机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。关键字:AT89C2051,C语言程序,电子钟。Design of the Electronic Clock Based on CAbstract:The traditional digital c
4、lock adopted more division components, not only occupied the very large space and also the efficiency is very low, with than the continuous improvement of the system design complexity, with traditional clock system design method is difficult to meet the design requirements.Single-chip microcomputer
5、CPU, RAM is set, ROM, timer/counter and multiple interface in the integration of micro controller. Its small size, low cost, the function is strong, widely used in intelligent product and industrial automation. But the 51 series single chip computer is the most typical and every SCM most representat
6、ive one. The proposed system design, overall design scheme, and design the hardware modules each part and the flow of software in use C Language design, the specific software program, will each module completely compile, results show that after the feasibility of the design of the system. This desig
7、n is given based on AT89C2051 as the core, of the microcontroller calculation and control function, and by using the systematic LED display module real-time display digital design scheme, properly solved practical production and daily life time high accuracy of the request, so this design in modern
8、society have widely applied.Keywords: AT89C2051, C Language Program, Electric Clock.前言1.1 单片机与其发展史 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。Intel的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和
9、专用处理器的发展便分道扬镳。1971年Intel公司研制出世界上第一个4位的微处理器;Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel 4004,标志着第一代微处理器问世,微处理器和微机时代从此开始。因发明微处理器,霍夫被英国经济学家杂志列为“二战以来最有影响力的7位科学家”之一 。早期的单片机都是8位或4位的。其中最成功的是Intel的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS-51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。9
10、0年代后随着消费电子产品大发展,单片机技术得到了巨大提高。单片机集成度高。单片机包括CPU、4KB容量的ROM(8031 无)、128 B容量的RAM、2个16位定时/计数器、4个8位并行口、全双工串口行口;系统结构简单,使用方便,实现模块化;单片机可靠性高,可工作到106 107小时无故障;处理功能强,速度快。为满足不同的要求,出现了高速、大寻址范围、强运算能力和多机通信能力的8位、16位、32位通用型单片机,小型廉价型、外围系统集成的专用型单片机,以及形形色色各具特色的现代单片机。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习
11、使用单片机是了解计算机原理与结构的最佳选择。单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,价钱也相对廉价。1.2课题的背景与目的电子钟是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。本设计主要采用AT89C2051单片机作为主控核心, LED动态扫描显示屏显示。数字钟是一种用数字电
12、路技术实现时、分、秒计时的装置,另外应有校时功能和闹钟等附加功能。与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。AT89C2051是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含2KB的可反复擦写的只读程序存储器(PEROM)和128B的随机数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C2051单片机在电子类产品中有广泛的应用。AT89C2051单片机电压可选用4-6V电压供电;显示器采用LED数码管来显示,
13、数码管成本低廉,系统不但接口设计简单、便于控制,而且具有很好的人机界面,可以对当前的时间进行调整。第二章 总体方案设计2.1设计要求数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,节省了电能,因此得到了广泛的使用。数字钟是一种典型的数字电路,包括了组合逻辑电路和时序电路。主要实现以下功能:(1)时钟功能:计时、时间、日期可设置。(2)闹钟功能:闹钟,开关时间可调。(3)6路开关TTL电平输出。(4)显示设置:数码管。(5)设置方式:按钮。2.2 设计方案采用以AT89C2051为核心的芯片来实现多功能的数字钟。该设
14、计选用实时时钟芯片D1302 提供当前时间数据,并将实时的时间数据通过软件译码过在七段数码管上动态显示出来。该方案中还用到一个存储器,由于设计要求的闹钟路数较多,且每一路均要设置相应的开关时间,如果系统一掉电就又得重新设置,这样就比较麻烦了。本次设计的多功能数字钟采用按钮方式对时间进行控制设置,采用七段数码管显示当前的时间,且时间以24小时的计时方式,在本次设计中,电路不仅具有显示时间,还可以实现对它们的调整。该系统是利用单片机最小系统再加上数码管、时钟芯片、EEPROM存储器等电路组成。基于单片机作为主控芯片,使用支持I2C的存储器芯片对各路闹钟设置数据进行保存,以达到掉电后不用重新设置的目
15、的。并且很容易控制操作,况且输入输出能很好的扩展,以便于修改更正。2.3 设计原理图第三章 单元模块设计3.1实时时钟模块DS1302是Dallas公司生产的实时时钟芯片,该器件具有高性能、低功耗的特点,内置一个实时时钟/日历和31个字节静态RAM。它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。增加了以下的特性:双电源管脚用于主电源和备份电源供应,Vcc1为课编程涓流充电电源,附加七个字节存储器。各引脚的功能为:Vcc1:主电源;Vcc2:备份电源。当Vcc2 Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时, 由Vcc1
16、向DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出。图3.1 实时时钟模块3.2存储器模块24C08是一个8KB位串行CMOS EEPROM,内部含有256个8位字节,Catalyst公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个16B页写缓冲器。该器件通过IC总线接口进行操作,有一个专门的写保护功能。AT24C02支持IC,总线数据传送协议IC,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。图3.2 存储器模块3.3单片机接口电路图3.3 单片机接口电路AT89C2051是Atmel公司生产的低电压,高性能CMOS8位
17、单片机,片内含4KB的可反复擦写的只读程序存储器(PEROM)和128B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,可灵活应用于各种控制领域。其主要功能有:与MCS-51产品指令系统完全兼容;4k字节可重擦写Flash闪速存储器;1000次擦写周期;全静态操作:0Hz24MHz;三级加密程序存储器;1288B内部RAM;32个可编程I/O口线;2个16位定时/计数器;6个中断源;可编程串行UART通道;低功耗空闲和掉电模式。本次设计的微控制器主要采用单片机来设计,芯片
18、AT89C2051是带2KB字节快闪存储器的8位单片机。P0-P3口都是并行I/O口,都可用于数据的输入和输出,但P0口和P2口除了可进行数据的输入和输出外,通常都用来构建系统的数据总线和地址总线。在这4个口中只有P0口是一个真正双向的口,P1-P3这3个口都是准双向口。P3口的口线具有第二功能,为系统提供一些控制信号。其接口如图3.3所示。3.4系统供电模块图3.4 系统供电电路电源电路主要是为系统提供电源,LM317作为输出电压可变的集成三端稳压块,是一种使用方便、应用广泛的集成稳压块。稳压电源的输出电压可用下式计算,Vo1.25(1R2/R1)。仅仅从公式本身看,R1、R2的电阻值可以随
19、意设定。然而作为稳压电源的输出电压计算公式,R1和R2的阻值是不能随意设定的。首先317稳压块的输出电压变化范围是Vo1.25V37V(高输出电压的317稳压块如LM317HVA、LM317HVK等,其输出电压变化范围是Vo1.25V45V),所以R2/R1的比值范围只能是028.6。其次是317稳压块都有一个最小稳定工作电流,有的资料称为最小输出电流,也有的资料称为最小泄放电流。最小稳定工作电流的值一般为1.5mA。此电路由LM317稳压产生一个5V电压,外接69V直流电压输入,通过二极管桥式整流,电容C滤波后送入LM317稳压,为整个系统供电。3.5串口下载电路模块图3.5串口下载电路模块
20、图3.5中电路是为单片机下载程序用的,MAX232是电压转换芯片,将TTL电平转换成可以和电脑串口匹配的电压。此电路的主要作用是把通过DB9下载线缆与电脑连接,可以将程序下载到单片机上。方便程序的调试。3.6显示模块电路中的显示模块部分采用八位七段数码管来对当前的日期或时间进行动态显示,日期和时间用键盘进行切换。设计中由P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7根据设计要求选中数码管,驱动LED的段码显示。由P2.0、P2.1、P2.2 、P2.3、P2.4、P2.5 、P2.6、P2.7控制LED数码管的数字显示。图3.6系统显示模块第四章 软件设计4.1
21、软件设计流程图4.1 软件设计流程图本设计采用时器中断控制键盘的扫描,将实现电子闹钟的各种功能分成了不同的模块,采用子程序的调用方法来实现电子闹钟的各种功能,主要由以下几个模块组成,本系统用到了两个I2C芯片,一个是实时时钟DS1302,一个是EEPROM24CO8,这个两个芯片的读写,均采用子程序的方式,还有键盘扫描模块和显示模块都写成了子程序,在系统上电后调用子程序来实现,定时、显示、闹钟等各种功能。其主要过程是,系统一上电,就显示当前的时间,并将设置闹钟开关时间从存储器中读入到定义好的结构体中,然后用一定的时间进行扫描,判断是否有闹钟被触发,如果有被触发,下一次扫描的时候,就增加一个是否
22、有闹钟到了关断时间,如果有就将其关断。而键盘模块,考虑到若系统资源用太多在扫描过程上,会影响其性能,所以键盘就采用了定时器中断的方式,引入中断的方法定时对外部输入进行扫描,如果有键被按下,经过处理确认后就采取相应的响应,如显示的切换、时间、日期的校正、闹钟的设置等等。其主程序的流程框图如图4.1所示。4.2实时时钟流程图4.2 实时时钟程序框图第五章 系统调试5.1软件调试由于是用C语言设计的是一个数字闹钟,且将整个程序分成了不同的模块。程序代码如下:#include#include intrins.h#define uchar unsigned char#define uint unsign
23、ed intvoid I2cDelay()_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();void DelayX1ms(unsigned char count)unsigned char i,j;for(i=0;icount;i+)for(j=0;j240;j+);void Start() SDA_PIN=1; I2cDelay();DSSCLK=1; I2cDelay();SDA_PIN=0; I2cDelay();DSSCLK=0;void Stop()I2cDelay(); SDA_PIN=0;I2cDelay(); DSSCLK=
24、1;I2cDelay(); SDA_PIN=1;I2cDelay();bit SendByte(unsigned char value)unsigned char i;bit no_ack=0;for(i=0;i8;i+)I2cDelay();if(value&0x80) SDA_PIN=1;else SDA_PIN=0;value=value1;I2cDelay(); DSSCLK=1;I2cDelay();I2cDelay(); DSSCLK=0;I2cDelay(); SDA_PIN=1;I2cDelay(); DSSCLK=1;I2cDelay();if(SDA_PIN=1) no_a
25、ck=1;I2cDelay(); DSSCLK=0;return no_ack;void mywrite(unsigned char address,unsigned char value)Start();SendByte(0xa0);SendByte(address);SendByte(value);Stop();DelayX1ms(10);unsigned char ReadByte()unsigned char i,bval;bval=0;for(i=0;i8;i+) I2cDelay();SDA_PIN=1;I2cDelay(); DSSCLK=1;I2cDelay(); bval=b
26、val1;if(SDA_PIN) bval=bval|0x01;I2cDelay(); DSSCLK=0;I2cDelay(); SDA_PIN=1;I2cDelay(); DSSCLK=1;I2cDelay();I2cDelay();return(bval);unsigned char myread(unsigned char address)unsigned char tmp;Start();SendByte(0xa0); SendByte(address);Start();SendByte(0xa1); tmp=ReadByte();Stop();DelayX1ms(2);return(
27、tmp);void main()char i;IE=0; IP=0; sound=0;TMOD=0x01; attr=0xff;TH1=0x15; TL1=0xa0; TR1=1;ET0=1; ET1=1; EA=1;new_alarm_info=0;show_status=2;for(i=0;i18;i+)alarmi.h_b=myread(i*4); alarmi.m_b=myread(i*4+1);alarmi.h_s=myread(i*4+2); alarmi.m_s=myread(i*4+3);while(1)display();if(new_alarm_info)new_alarm
28、_info=0;for(i=0;i18;i+) mywrite(i*4,alarmi.h_b); mywrite(i*4+1,alarmi.m_b);mywrite(i*4+2,alarmi.h_s); mywrite(i*4+3,alarmi.m_s);alarm_act();结论本设计采用AT89C2051单片机为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,实现了电子钟的在7段数码管上的实时显示以及闹钟的设定。论文几乎是在参考各种资料和相关的专业文献的基础上完成的,所参考的专业文献在论文中会列单出来,但还有部分来源资料参差不齐不能在论文中详细列出,在
29、这里也说明一下。论文在整个制作过程费了很大的心血,但是在这个过程中自己还是很充实的,而且在整个设计的过程中,自己对所学的专业课知识进行了系统化的整理,而且又根据自己所欠缺的参考了相关资料,在很大的一方面提升了自己对专业的了解和对专业知识的掌握程度。致谢在这里,首先我要感谢我的指导老师雷慧杰老师。本论文从题目的确定、写作、修改到最后定稿得到了雷老师的悉心指导。在此,谨向雷慧杰老师致以诚挚的谢意和崇高的敬意。此外,还要感谢我的同学,他们在我的论文写作过程中给了我大的帮助。我最想对他们说的是:能够顺利完成论文,是因为一路上有你们的支持,谢谢!最后,感谢各位评审老师的评阅。由于本人水平有限,论文中难免
30、存在一些不足和错误,请各位老师批评指正。参考文献1 付家才.单片机控制工程实践M.化学工业出版社.20042 王正勇. Protel DXP实用教程M.高等教育出版社.20093 谭浩强. C语言程序教程M.清华大学出版社.20044 张毅刚.单片机原理及其应用M. 高等教育出版社.20035 张顺兴.数字电路与系统M.东南大学出版社.20016 杨崇志,康博南.电子爱好者实用技术手册M.福建科学技术出版社.20027 黄正谨.综合电子设计与实践M.东南大学出版社.20028 谢维成,刘勇.微机原理与接口技术M.华中科技大学出版社.20099 谢自美.电子线路设计实验测试M.华中理工大学出版社. 2000