数字时钟课程设计
- 格式:doc
- 大小:292.00 KB
- 文档页数:18
目录1.引言 (2)1.1设计任务与要求 (2)1.2数字钟得实用价值和理论意义 (2)1.3设计所用器件简介 (2)1.3.1 单片机简介 (2)1.3.2 1602LCD的基本参数及引脚功能 (3)2.设计内容 (6)3.程序设计及硬件电路 (7)3.1原理图(protues) (7)3.2原理图(protel) (8)4.仿真结果 (8)5.收获、体会和建议 (11)6.参考文献 (11)7.附:源程序 (11)1.引言近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
1.1设计任务与要求1.利用AT89C51定时器设计一个电子时钟;2.显示格式位“XX XX XX”,从左向右分别是:时、分、秒;3.显示部分用1602LCD显示屏;4.具有四个调整键K0,K1,K2,K3;5.按下相应的键可以调整时,分,秒;6.调整到哪一位哪一位闪烁;7.在1602上方显示“年,月,日,星期”。
1.2数字钟得实用价值和理论意义数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
1.3设计所用器件简介1.3.1 单片机简介MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
以后我们将用89C51、89S51来完成一系列的实验。
MCS-51系列单片机MCS-51系列单片机分为两大系列,即51子系列与52子系列。
51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、895152子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952这两大系列单片机的主要硬件特性如下表:上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。
51系列的中断源为5个,52系列的中断源为6个。
1.3.2 1602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:图10-54 1602LCD尺寸图1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V2.设计内容3.程序设计及硬件电路程序流程图3.1原理图(protues )D 0D 1D 2D 3D 4D 5D 6D 7R SE R W D0D1D2D3D4D5D6D7E RS R WXTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC133pFC233pFC31nFR1240R22kD 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD3LM016LRV11k3.2原理图(protel)4.仿真结果上电后按下K0开始运行:按下K3秒闪烁单片机课程设计说明书D 0D 1D 2D 3D 4D 5D 6D 7R SE R W D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LCD3LM016LRV11kD 0D1D 2D 3D 4D 5D 6D 7R S E R W D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LCD3LM016LRV11k按下K2根据按下K0的次数可以改变闪烁的位置进行分,时,年,月,日,星期的调整调整分 D 0D 1D 2D 3D 4D 5D 6D 7R S E R W D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LM016L调整时D 0D 1D 2D 3D 4D 5D 6D 7R SE R W D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LM016L调整年单片机课程设计说明书D 0D 1D 2D 3D 4D 5D 6D 7R SE R W D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LCD3LM016L调整月D 0D 1D 2D 3D 4D 5D 6D 7R SE R W D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LM016L调整日D 0D 1D 2D 3D 4D 5D 6D 7R SE R W D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LM016L调整星期D 0D 1D 2D 3D 4D 5D 6D 7R SE R W D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E 3LM016L5.收获、体会和建议单片机数字钟可以说是一个较小的系统,开始时我们觉得通过C语言较容易实现,确实,只实现一个能够正常走时并且能够校时的数字钟是比较容易的。
但我们想错了,毕竟是第一次从总体角度来考虑地完成一个小系统,好多的实际性的问题我们没有考虑,所以造成我们最终设计的数字钟精度不高,并且存在好多问题,当然问题多了对我们来说是好事,这样我们在解决更多问题时学会更多解决问题的方法,对我们也算是长长经验吧。
通过这次对数字钟的设计,让我了解了设计电路的程序,也让我了解了关于数字钟的原理与设计理念,要设计一个完整的电路总要经过多次的失败才能成功的,在设计中,遇到了许多匪夷所思的问题,一个人就是想破脑子也做不出来,这时候,就需要去询问老师、和同学探讨,共同解决出现的问题,也许就是因为老师的一句提醒、同学的探讨中就会豁然开朗。
从这次设计中我也觉得自己还对单片机的功能了解只是个皮毛,单片机强大的功能还等着我们去开发。
通过这次设计,不仅使我学到了知识,让我对电路设计有了大概的了解;其次,还体会到了团队精神。
总而言之,这次设计是成功的。
6.参考文献1 杨文龙.单片机原理及应用.西安:西安电子科技大学出版社,19932 李朝青.单片机原理及接口技术.北京:北京航空航天大学出版社,20033 胡汉才.单片机原理及系统设计.北京:清华大学出版社,20034 杨忠煌,黄博俊,李文昌.单芯片8051实务与应用.北京:中国水利水电出版社,2001 7.附:源程序#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar code table1[]={" 2011-00-00-MON"};//星期一MON 星期二TUE 星期三WED 星期四THU 星期五FRI 星期六SA T 星期天SUNuchar code table2[]={" 00:00:00 "};uchar code table[]={'0','1','2','3','4','5','6','7','8','9'};uchar num,count,miao,fen,xiao,week,day,month,year,shi,ge,flag,num1;sbit LCD_RW=P3^7;sbit LCD_RS=P3^5;sbit LCD_E=P3^4;sbit k1=P1^0;//选择sbit k2=P1^1;//增加sbit k3=P1^2;//减少sbit k4=P1^3;//开始void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/////////////////////////////////////////////////////////////////////////////////////////lcd显示void init(void);//初始化函数void write_com(uchar command);//写指令函数void write_date(uchar dat);//写数据函数void LCD_disp_char(uchar x,uchar y,uchar dat);//在某个屏幕位置上显示一个字符,X(0-16),y(1-2) //void LCD_check_busy(void);//检查忙函数。