郑州轻工业学院微控制器应用系统设计题目:电子时钟仿真设计学生姓名:张康专业班级:电子信息工程12-2班学号:541201030252院(系):电子信息工程学院电子时钟仿真设计一、背景随着电子技术的不断发展,单片机技术在设计中所体现出来的优势越来越明显,它不仅是电子信息类专业的一个重要部分,而且在其他类专业工程中也是不可缺少的。广泛地应用于家电、工业过程控制、仪器仪表、智能武器、航天和空间飞行器等领域,已成为新一代一些电子设备不可缺少的核心部件。目前世界上单片机年产量已达十亿多片,通常是当年微处理器产量的4-5倍以上。用最少的芯片就能够实现最强大的功能。可以想见,这是将来电子产品的主流方向,他将无可置疑地一步步取代其它同类产品,其数量之大和应用面之广,是其他任何类型的计算机所无法比拟的。单片机是应工程测控需要而诞生的。它把计算机最基本的功能电路,如CPU、程序存储器、数据存储器、I/O接口、定时、计数器、中断系统等集成到一块芯片上,形成单片形态的计算机。单片机通常以最小系统运行,在家用电器中和常用的智能仪器仪表中常常可以“单片”工作,同时单片机在我们日常生活中叶经常见到,同时单片机在我们日常生活中也经常见到,如电子表、舞厅里的一些等国的控制、工厂一些自动化控制等。将来只要有自动控制方面的都会离不开单片机的开发和使用,对于现代的自动化控制起着举足轻重的作用。一、总体方案设计1、设计方案的对比、选择及确定电子时钟的核心内容是对时间的处理。具体说是对各位时间的正常运行、进位、调节和定时。用什么来处理时间就成为了关键问题。大体思路有两种,一种是直接用89C51内部的定时器,另一种是用专门的时间处理芯片。决定选取89C51内部时钟来设计电子时钟。而在芯片的选择上,使用了以下几种芯片:AT89C51、DS18B20和LM016L。2、系统设计思路此设计即在液晶屏上显示年、月、日、时、分、秒、星期及温度(原理框图如图1.1),电路包括一下几个部分:键盘、单片机、温度传感器及显示电路。各部分说明:(1)键盘用于校正、调节液晶上显示的时间。(2)单片机通过输出各种电脉冲信号开驱动控制各部分正常工作。(3)温度传感器用来采集温度值。(4)单片机发送的信号经过显示电路通过译码最终在液晶上显示出来。系统工作过程:1、时间的主要处理过程是在CPU中完成的。CPU会随时对时间进行读取数据的操作。在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过I/O口把数据传入LM016L。2、LM016L在接受到数据后在相应的位置上进行显示。3、温度信号会通过DS18B20进行采集,然后通过CPU处理后同样传给LM016L。系统的设计按照系统的工作过程,将CPU相应的I/O口分配给对应的芯片完成相应的控制和数据的传输。简单地概括为以CPU为中心,将DS18B20的时间和温度信号通过CPU处理后输入到LM016L进行输出显示。三、单元模块设计①AT89C51单片机系统设计AT89C51是一种低电压、高性能CMOS8位微处理器,内部有2K字节的闪速PEROM,该芯片采用ATMEL公司的高密度、非挥发性存储器工艺制成,且与工业标准MCS-51系列的引脚和指令兼容,FLASH系列存储器为快速擦写存储器。其最小系统设计如图所示:②DS18B20温度传感器电路设计DS18B20温度传感器是美国Dallas公司生产的最新的单线数字温度传感器,支持“1-Wire”接口。其DQ端经上拉电阻接在P3.3引脚。③液晶LM016L电路设计液晶LM016L用来显示时间、日期、星期及温度。其数据口与P0口相连,P2.0、P2.1和P2.2分别控制数据命令选择端、读写选择端及使能端。④键盘电路键盘用来调节时间。分别于P1.4、P1.5、P1.6和P1.7连接。电路如图所示。键盘功能描述:Key_2键为时间设置键Key_3键为时间加一键Key_4键为时间减一键四、程序设计流程①主程序设计流程开始②键盘扫描程序设计流程调时方法:按下Key_2键为设置时间按键次数功能1设置时间秒2设置时间分3设置时间时4设置日期日5设置日期月6设置日期年7设置闹铃秒8设置闹铃分9设置闹铃时10设置闹铃开关11设置完成③液晶电路部分函数分为:液晶写入指令函数、液晶写入数据函数和液晶初始化函数液晶写入指令函数液晶写入数据函数开始数据/指令选择置为指令读写选择置为写送入数据产生下降沿,指令执行结束开始数据/指令选择置为数据读写选择置为写送入数据产生下降沿,指令执行结束开始设置液晶屏工作模式开显示,不显示光标④显示类函数其中包括:温度显示子函数、时间格式显示子函数、日期格式显示子函数、写星期函数和显示日期和时间子函数。附:温度显示子函数、时间格式显示子函数、日期格式显示子函数和显示日期和时间子函数均符合此程序流程图。开始读取个位数读取十位数在相应位置上显示结束写星期函数五、系统功能和指标参数本次设计中,基本的程序要求已达到,既可以修改时间和闹铃,在闹铃响时,长按减一键停止响。时间精度有待提高。六、总结通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。开始确定星期字符显示的位置判断是星期几星期为一星期为二星期为三星期为四星期为五星期为六星期为日显示MON显示TUE显示WED显示THU显示FRI显示STA显示SUN结束参考文献【1】张俊漠.单片机中级教程-原理与应用(第2版).北京:北京航天航空大学出版社,2006【2】赵晓安.MCS-51单片机原理及应用.天津:天津大学出版社,2001.3【3】李广第.单片机基础(第1版).北京:北京航空航天大学出版社,1999【4】徐惠民、安德宁.单片微型计算机原理接口与应用.第1版.北京:北京邮电大学出版社,1996【5】何立民.从Cygnal80C51F看8位单片机发展之路.单片机与嵌入式系统应用,2002年,第5期:P5-8附录附录1原器件清单:芯片器件数目芯片器件数目AT89C511电阻1K1DS18B201按钮5LM016L1蜂鸣器1电容33pF2三极管2N54011108排阻13.6V直流电源1喇叭1电解电容40uF1晶振11.0592MHz1附录2程序设计原理图:附录3主程序:#includereg51.h#defineucharunsignedchar#defineuintunsignedintsbitrs=P0^5;sbitrw=P0^6;sbite=P0^7;sbitk1=P3^2;sbitk2=P3^1;sbitk3=P3^0;ucharcount,k1value;charyear,month,day,hour,min,second;ucharcodetable[]=5-172009sun;ucharcodetable1[]=00:00:00;voiddelay(uintz){uintx,y;for(x=z;x0;x--)for(y=120;y0;y--);}voidwrite_command(ucharcommand){rs=0;e=0;P2=command;delay(5);e=1;delay(5);e=0;}voidwrite_datas(uchardatas){rs=1;e=0;P2=datas;delay(5);e=1;delay(5);e=0;}voidwrite_time(ucharadd,uchardatas){ucharhigh,low;high=datas/10;low=datas%10;write_command(0x80+0x40+add);write_datas(0x30+high);write_datas(0x30+low);}voidkeyscan(){if(k1==0){delay(5);if(k1==0){k1value++;while(!k1);if(k1value==1){TR0=0;write_command(0x0f);write_command(0x80+0x40+11);}if(k1value==2){write_command(0x80+0x40+8);}if(k1value==3){write_command(0x80+0x40+5);}if(k1value==4){k1value=0;write_command(0x0c);TR0=1;}}}if(k1value!=0){if(k2==0){delay(5);if(k2==0){while(!k2);if(k1value==1){second++;if(second==60){second=0;}write_time(11,second);write_command(0x80+0x40+11);}if(k1value==2){min++;if(min==60){min=0;}write_time(8,min);write_command(0x80+0x40+8);}if(k1value==3){hour++;if(hour==24){hour=0;}write_time(5,hour);write_command(0x80+0x40+5);}}}}if(k1value!=0){if(k3==0){delay(5);if(k3==0){while(!k3);if(k1value==1){second--;if(second==-1){second=59;}write_time(11,second);write_command(0x80+0x40+11);}if(k1value==2){min--;if(min==-1){min=59;}write_time(8,min);write_command(0x80+0x40+8);}if(k1value==3){hour--;if(hour==-1){hour=23;}write_time(5,hour);write_command(0x80+0x40+5);}}}}}voidmain(){ucharnum;rw=0;e=0;write_command(0x38);write_command(0x0c);write_command(0x06);write_command(0x01);write_command(0x80);for(num=0;num15;num++){write_datas(table[num]);delay(20);}write_command(0x80+0x40);for(num=0;num14;num++){write_datas(table1[num]);delay(20);}TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1){keyscan();}}voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;second++;if(second==60){second=0;min++;if(min==60){min=0;hour++;if(hour==24){hour=0;}write_time(5,hour);}write_time(8,min);}write_time(11,second);}}