proteus仿真大作业-数字时钟_第1页
proteus仿真大作业-数字时钟_第2页
proteus仿真大作业-数字时钟_第3页
proteus仿真大作业-数字时钟_第4页
proteus仿真大作业-数字时钟_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实 验 报 告Proteus仿真大作业课题:数字时钟实验报告系部:电子工程系班级:xxxx姓名:xxx指导老师:xxx前 言数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机AT89C51在Proteus软件中实现数字时钟的定时、时间调整、闹正设置等功能。具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。时钟电路在计算机系统中起着非常重要的作

2、用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。Protues软件不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上

3、唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,它也支持IAR、Keil和MPLAB等多种编译器。本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C51芯片和LED1602液晶显示屏为核心,辅以必要的电路,构成了一个单片机电子时钟。目录 TOC o 1-3 h z u HYPERLINK l _Toc295595794 第一章 电子时钟、单片机简介 PAGEREF _Toc295595794 h 4 HY

4、PERLINK l _Toc295595795 1、电子时钟工作原理 PAGEREF _Toc295595795 h 4 HYPERLINK l _Toc295595797 2、单片机简介 PAGEREF _Toc295595797 h 4 HYPERLINK l _Toc295595798 第二章 数字时钟电路设计 PAGEREF _Toc295595798 h 5 HYPERLINK l _Toc295595799 2.1 设计要求 PAGEREF _Toc295595799 h 5 HYPERLINK l _Toc295595800 2.2 数字电路模块图: PAGEREF _Toc29

5、5595800 h 6 HYPERLINK l _Toc295595801 PAGEREF _Toc295595801 h 6 HYPERLINK l _Toc295595802 2.2 模块简介: PAGEREF _Toc295595802 h 6 HYPERLINK l _Toc295595803 2.3 系统功能操作实现 PAGEREF _Toc295595803 h 7 HYPERLINK l _Toc295595804 2.4 方案设计元件清单 PAGEREF _Toc295595804 h 8 HYPERLINK l _Toc295595805 第三章 Protues仿真电路 PA

6、GEREF _Toc295595805 h 9 HYPERLINK l _Toc295595806 3.1 绘制数字时钟电路Protues仿真原理图: PAGEREF _Toc295595806 h 9 HYPERLINK l _Toc295595807 3.1.1 启动ISIS 7 Professional软件 PAGEREF _Toc295595807 h 9 HYPERLINK l _Toc295595808 3.1.2 仿真电路绘制 PAGEREF _Toc295595808 h 9 HYPERLINK l _Toc295595809 3.1.3 数字时钟原理图 PAGEREF _To

7、c295595809 h 10 HYPERLINK l _Toc295595810 3.1.4 电路检测 PAGEREF _Toc295595810 h 11 HYPERLINK l _Toc295595811 3.2 软件设计: PAGEREF _Toc295595811 h 12 HYPERLINK l _Toc295595812 3.2.1 运行keil软件编写程序 PAGEREF _Toc295595812 h 12 HYPERLINK l _Toc295595813 3.2.2 编译、连接 PAGEREF _Toc295595813 h 12 HYPERLINK l _Toc2955

8、95814 3.2.3 将程序烧入单片机 PAGEREF _Toc295595814 h 13 HYPERLINK l _Toc295595815 、程序运行 PAGEREF _Toc295595815 h 13 HYPERLINK l _Toc295595816 附录 PAGEREF _Toc295595816 h 14 HYPERLINK l _Toc295595817 程序: PAGEREF _Toc295595817 h 14 HYPERLINK l _Toc295595818 总结 PAGEREF _Toc295595818 h 24 HYPERLINK l _Toc29559581

9、9 参考资料 PAGEREF _Toc295595819 h 25第一章 电子时钟、单片机简介1、电子时钟工作原理电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有年、月、时、分、

10、秒以及星期、温度等显示功能,还可以进行时和分的校对以及定时闹钟功能,片选的灵活性好。该电子时钟由89C51,BUTTON,7SES六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。2、单片机简介1972年,美国Intel公司首先推出8位微处理器8008,并于19

11、76年9月率先推出MCS-48系列单片机。在这以后,8位单片机纷纷面市。例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。这类单片机的寻址能力达64KB,片内ROM容量达4-8KB,片内除带有并行IO口外,还有串行IO口,甚至还有AD转化器功能。8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。单片机全称为单片机微型计算机(Single C

12、hip Microsoftcomputer)。从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51

13、可为许多嵌入式控制应用系统提供高性价比的解决方案。综上所诉,数字时钟设计方案采用单片机机型:AT89C51;计时方案设计采用单片机内部计数/定时功能,利用软件控制单片机实现数字时钟时间设置功能;显示方案中利用单片机并行I/O端口,实现LED动态显示;第二章 数字时钟电路设计2.1 设计要求 设计并制作出具有以下功能的数字钟:(1)自动计时,由六位LED显示器显示时、分、秒(2)具备校准功能,可以设置当前时间。(3)具备定时启闹功能,可以设置启闹时间,启闹10s后自动关闭闹铃2.2 数字电路模块图:主程序函数LED显示函数键盘检测函数查键值函数闹钟设置函数时钟设置函数闹钟判断启动函数定时器中断函

14、数加1修改功能函数 2.2 模块简介:(1)主程序函数main:完成系统初始化,包括时钟、闹铃初始参数及初始标志的设定;I/O端口、定时/计数器初始状态的设定:更新显示时间,循环扫描按键,根据案件分别进行闹铃和时钟的设置管理。 (2)LED显示函数dispiay:根据显示单元首地址显示时钟(或闹铃)时间,实现6位LED的动态显示功能。(3)键盘检测函数keytest和查键值函数search:这两个函数都属于键盘扫描模块,函数keytest判断是否有按键输入,函数search识别并返回行列式按键的键号。(4)时钟设置函数ftion0:根据用户按下0#键的次数,依次选择设置时钟的秒、分、时的修改标

15、志位。加1修改功能函数将根据该标志位进行时钟时间的设置修改。(5)闹铃设置函数ftion1:根据用户按下:1#键的次数,依次选择设置闹铃的分、时的修改标志位。加1修改功能函数将根据该标志位进行时钟闹铃的设(6)加1修改功能函数cum:用户按下2#键后,根据时钟和闹铃设置函数设置的标志位将时钟(或闹铃)相应的时、分、秒计数单元加1。(7)闹铃判断启动函数alarm:半段闹铃启动时间到否,若时间到,则启动闹铃,延时10s后自动关闹铃,并清除闹铃设置标志。(8)定时器中断函数clock:定时修改时钟参数中断服务子程序。综上各模块功能,数字时钟设计方案采用单片机机型:AT89C51;计时方案设计采用单

16、片机内部计数/定时功能,利用软件控制单片机实现数字时钟时间设置功能;显示方案中利用单片机并行I/O端口,实现LED动态显示;2.3 系统功能操作实现(1)键盘功能定义。系统采用4*3矩阵键盘。共计12个按键任务中使用了三个按键,0#、1#和2#键,其余按键为系统功能扩展预留。0#键:时钟参数表修改功能选择键。按一次修改秒,按二次修改分,按三次修改小时,按四次确认修改完毕。1#键:闹铃时间设置功能选择键。按一次修改分,按两次修改小时,按三次确认修改完成。2#键:增1功能键,每按一次该键,根据0#、1#键的选择结果将相应单元内容加1。修改“小时”时,加到23后再加1“清零”;修改“分”时,加到59

17、后再加1“清零”。(2)显示定义。6位LED从左到右依次显示时、分、秒,采用24小时计时。(3)系统工作流程设计时间显示:上电后,系统自动进入时钟显示,从00:00:00开始计时。时间调整:按下0#键,系统停止计时,进入时间设定状态,保持原有显示。按一次修改秒表,按二次修改分,按三次修改小时,直至按四次确认修改完成,系统由设定后的时间开始计时显示。闹铃设置/启闹/停闹:按下1#键,数码管显示00:00:00,进入闹铃设置状态。等待键入启闹时间,按一次设置分,按两次设置小时,按三次确认设置完毕。将启动定时启闹功能,并恢复时间显示。当定时时间到,蜂鸣器鸣叫10s后停闹。在闹铃设置过程中,系统继续计

18、时。在时间调整和闹铃设置状态下,均可以按2#键,采用增1方式修改相应的参数。2.4 方案设计元件清单元件名称数量参数名称所属库单片机1AT89C51AT89C51MCS8051按钮12BUTTONACTIVE晶振112MHZCRYSTLEDEVICE电阻8RESDEVICE13电阻排110KRESPACK-8电解电容110uF/16VGENELECT10U16VCAPACITORS瓷片电容230pFCERAMIC33PCAPACITORS或非门1-71LS02DEVICE蜂鸣器1-BUZZERACTIVE第三章 Protues仿真电路3.1 绘制数字时钟电路Protues仿真原理图:3.1.1

19、 启动ISIS 7 Professional软件元件的加载:找到原件后双击原件即可完成加载原件。 仿真电路绘制放置元件调整原布局连线绘制总线放置网络标号网络标号放置如下图所示。3.1.3 数字时钟原理图连线后最终数字时钟电路原理图如下 电路检测电路连接完毕后,单击运行按钮(如下图)检测电路是否有误, 如果电路如果无误进行软件检测。3.2 软件设计:3.2.1 运行keil软件编写程序3.2.2 编译、连接 将程序烧入单片机3.2.4、程序运行附录程序:/*数字钟程序*/#pragma SMALL#include #include #define uchar unsigned charsbit

20、P2_7=P27; /定义蜂鸣器控制端口/*函数声明*/void delay(uchar x);void display(uchar *p);uchar keyscan(); /扫描键盘有无键按下uchar search(); /按键识别void alarm(); /闹钟判断启动void ftion0(); /时钟修改void ftion1(); /闹钟修改void cum(); /加1修改/*全局变量定义*/uchar clockbuf3=0,0,0;/存放时钟时分秒的十进制数uchar bellbuf3=0,0,0;/存放闹钟时分秒的十进制数uchar msec1; /10ms中断次数uc

21、har msec2; /1s循环次数uchar timdata,rtimdata;/时钟和闹钟修改位置标志uchar count;/闹钟启动后10s计时单元uchar *dis_p;/显示缓冲区指针bit armbit;/闹钟标志,为0闹钟未设定,为1已设定bit rtimbit;/闹钟是否启动标志,为1已启动bit rhourbit;/闹钟小时修改标志,为1正在修改闹钟小时bit rminbit;/闹钟分修改标志,为1正在修改闹钟分bit hourbit;/时钟小时修改标志,为1正在修改时钟小时bit minbit; /时钟分修改标志,为1正在修改时钟分bit secbit;/时钟秒修改标志

22、,为1正在修改时钟秒/*主函数*/void main()uchar a;armbit=0; /清零闹钟标志位msec1=0; /设置10ms中断次数初值msec2=0; /设置1s中断次数初值timdata=0; /时钟内容修改位置记忆单元清零rtimdata=0;/闹钟内容修改位置记忆单元清零count=0; /闹钟启动后保持10s计时单元清零TMOD=0 x02; /定时器T0为工作方式2TL0=0 x06; /定时初始值为250usTH0=0 x06;EA=1; /中断总允许位开启ET0=1; /定时器0开中断TR0=1; /启动定时器T0dis_p=clockbuf;/将时钟值所在地址

23、送入显示指针while(1)a=keyscan(); /调用键盘扫描子程序if(a=0 x0f)display(dis_p);/无键输入调用显示程序if(armbit=1)alarm();/判断闹钟设定否,若设定则调用闹钟启动函数elsedisplay(dis_p);/调用显示子函数作为延时去抖动a=keyscan();if(a!=0 x0f) /没有抖动,表示有键按下a=search();/调用查键值子函数switch(a)case 0 x00:ftion0();break; /是时钟参数修改功能键,调用时钟设置子函数case 0 x01:ftion1();break; /是闹钟参数修改功能

24、键,调用闹钟设置子函数case 0 x02:cum();break; /是加1功能键,调用加1修改功能子函数default:break;void delay(uchar x)char j;while(x-)for(j=0;j123;j+);/*6位LED显示函数*/void display(uchar *p)uchar buffer=0,0,0,0,0,0;uchar k,i,j,temp;uchar led=0 x3f,0 x06,0 x58,0 x4f,0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f;buffer0=p0/10;buffer1=p0%10;buff

25、er2=p1/10;buffer3=p1%10;buffer4=p2/10;buffer5=p2%10;for(k=0;k3;k+)temp=0 xfe;for(i=0;i6;i+)P1=0 xff; /关显示j=bufferi;P1=ledj; /P1送断码P0=temp; /P0对应端口低电平选位temp=1;delay(5);/每一位显示延时/*键盘扫描函数*/uchar keyscan()uchar c;P0=0 xf0;c=P2;c=c&0 x07; /按键行输入为P2.0-P2.2,屏蔽无关位return(c);/*查键值函数*/uchar search()uchar a,b,c,

26、d,e;c=0 xfe; /首列扫描字送变量ca=0; /首列号送awhile(1)P0=c; /列扫描字送P0口d=P2; /读入P2口的行状态if(d&0 x01=0)b=0;break; /第0行有键按下,第0行行首号送belse if(d&0 x02=0)b=4;break; /第1行有键按下,第1行行首号送belse if(d&0 x04=0)b=8;break; /第2行有键按下,第2行行首号送ba+; /扫描列号加1c=1; /修改列扫描字,扫描下一列e=a+b; /将行首号与列号相加,求键号dodisplay(dis_p);while(d=keyscan()!=0 x07);

27、/等待释放按键return(e);/*闹钟判断启动函数*/void alarm()if(clockbuf0=bellbuf0)&(clockbuf1=bellbuf1)P2_7=0;rtimbit=1; /设置闹钟计时标志,时钟将进行10s计时标志elseif(count=10) /判断闹钟保持10s时间到否 count=0;/清除闹钟保持10s计时 P2_7=1;/清除闹钟 armbit=0; /清闹钟标志,否则闹钟设置将继续有效 rtimbit=0;/*时钟设置函数*/void ftion0()TR0=0; /关定时器rhourbit=0; /禁止闹钟时间参数修改,请闹钟修改标志rminb

28、it=0; dis_p=clockbuf; /将时钟缓冲区首地址送显示指针rtimdata=0; /清闹钟修改位置标志记录timdata+; /将时钟修改记录值加1switch(timdata)case 0 x01:secbit=1;break;/记录值为1,则将时钟秒修改标志置1case 0 x02:secbit=0;minbit=0;break;/记录值为2,则将时钟分修改标志置1case 0 x03:minbit=0;hourbit=1;break;/记录值3,则将时钟时修改标志置1case 0 x04:timdata=0;hourbit=0;TR0=1;break;/按4次则清时钟单元

29、修改位置 /记录,定时器重新开启default:break;/*闹钟设置函数*/void ftion1()secbit=0;/禁止时钟时间修改minbit=0;hourbit=0;dis_p=bellbuf;/设置闹钟显示标志timdata=0;/清时钟修改位置标志记录rtimdata+;/将闹钟修改记录值加1switch(rtimdata)case 0 x01:rminbit=1;break;/记录值为1,将闹钟分修改标志置1case 0 x02:rminbit=0;rhourbit=1;break; /记录值为2,将时钟分修改标志置1case 0 x03:rtimdata=0;rhourb

30、it=0;/按3次则清闹钟单元修改位置记录armbit=1; /设置闹钟已设置标志位dis_p=clockbuf;/恢复时钟显示标志break;default:break;/*加1修改功能函数*/void cum()if(secbit=1) /时钟秒修改标志为1,秒单元内容加1if(clockbuf2=59) clockbuf2=0;else clockbuf2+;else if(minbit=1)/时钟分修改标志为1,分单元内容加1if(clockbuf1=59) clockbuf1=0;else clockbuf1+;else if(hourbit=1) /时钟小时修改标志为1,小时单元内

31、容加1if(clockbuf0=23) clockbuf0=0;else clockbuf0+;else if(rtimbit=1) /闹钟分修改标志为1,分单元内容加1if(bellbuf1=59) bellbuf1=0;else bellbuf1+;else if(rhourbit=1) /闹钟小时修改标志为1,小时单元内容加1if(bellbuf0=23) bellbuf0=0;else bellbuf0+;/*定时器中断函数*/void clock() interrupt 1EA=0; /关中断if(msec1!=40)msec1+;elsemsec1=0; /到10ms否,不到则msec1加1if(msec2!=100)msec2+; /到1s否,不到则msec2加1elseif(rtimbit=1)count+;msec2=0;if(clockbuf2!=59)clockbuf2+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论