《基于proteus的数字电子钟的仿真设计.docx》由会员分享,可在线阅读,更多相关《基于proteus的数字电子钟的仿真设计.docx(10页珍藏版)》请在第一文库网上搜索。
1、成绩课程论文题目:基于PrOteUS的数字电子钟的设计与仿真课程名称:单片机系统设计与PrOteUS仿真学生姓名:M学生学号:1305010323系别:电子工程学院专业:通信工程年级:13级任课教师:徐卷电子工程学院2023年5月目录一、设计目的与要求3二、设计内容与方案制定3三、设计步骤31.硬件电路设计3.硬件电路组成框图3.各单元电路及工作原理413.绘制原理图51.4.元件清单列表62.程序设计6程序流程6汇编程序7四、调试与仿真12五、心得体会14六、参考文献:14基于PrOteUS的数字电子钟的设计与仿真一、设计目的与要求设计目的:通过课程设计,培养学生运用已学知识解决实际问题的能
2、力、查阅资料的能力、自学能力和独立分析问题、解决问题的能力和能通过独立思考。设计要求:设计一个时、分可调的数字电子钟、开机显示“9-58-00。二、设计内容与方案制定具有校时功能,按键控制电路其中时键、分键两个键分别控制时、分时间的调整。按分键分加1;按时键时加1。以AT89C51单片机进行实现秒、分、时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。三、设计步骤1、硬件电路设计单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中AT89C51单片机采用内部时钟方式。采用外接晶体和电容组成的并联谐振同路。其电路图如下:(2)键盘控制电路键盘可实现
3、对时间的校对,用两个按键来实现。按时键来调节小时的时间,按分键来U3U调节分针的时间。其电路连接图如下:3)显木电路1ED显示器是现在最常用的显示器之一发光二极管1ED)分段式显示器由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,采用动态显示方式显示时间,其硬件连接方式如下列图所示。其计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。整个设计图由晶振电路、复位电路、AT89C51单片机、键盘控制电路组成。显
4、示电路将“时、”分、“秒通过七段显示器显示出来,6个数码管的段选接到单片机的PO口,位选接到单片机的P2口。数码管按照数码管动态显示的工作原理工作。把定时器定时时间设为50ms,那么计数溢出20次即得时钟计时最小单位秒,而20次计数可用软件方法实现,每累计60秒进1分,每累计60分钟,进1小时。时采用24进制计时器,可实现对一天24小时的累计。校时电路时用来对“时、”分显示数字进行校对调整,时分秒三个控制键分别接单片机的p3.Kp3.0进行控制。按一下分键秒单元就加1,按一下时键分就加K单片机AT89C51*1电解电容CAP-E1ECIOuF*1瓷片电容CAP22pF*2电阻RES*10晶振*
5、1数码管7SEG-MPX8-CA-B1UE*1三极管NPN*8按钮BUTTON*3上位排阻RESPACK-8*1数字电子钟采用内部硬件定时器来进行定时,计时最小单位sec1OO为IOmS。假设sec1OO每计满100次时,表示已经计时1s,那么sec1OO清零且sec加Io如果sec等于60,应将SeC清零,同时min加1。如果II1in等于60,应将min清零,同时hour加1。如果hour大于23时,应将hour清零。通过分析可知,程序中可分别由inc_sec()inc_min()、inc_hour()这是三个函数负责秒、分、时的计时。SeC1oO的计时由TimerO()中断函数来实现。按
6、钮KI(INTO)和KI(INT1)为调时、调分控制按键。这两个按钮信号的输入采用外部中断方式来实现。假设产生外部中断时,通过调用injhour()或inc_min()函数来实现调时或调分操作。编写显示函数disp1ay。时,应考虑小时数小于10时,应屏蔽时的十位数,使其不显示。C语言编写的程序如下:Winc1udeWdefineucharunsignedcharWdefineunitunsignedintsbitk1=P32;sbitk2=P33;uchartab=0xC0,0xF9,0xA4,OxBO,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6
7、,OxA1,0x86,0x8E,OxBF;uchardis_buff8;ucharsec100,sec,min,hour;voidde1ay(unitk)unitm,n;for(m=0;mk;m+)for(n=0;n9)P2=0x01;)e1seP2=0X00;PO=tabdis_buff7;de1ay(2);voiddisp_data(void)dis_buff7=hour10;dis_buff6=hour%10;dis_buff5=16;disbuff4=min10;dis_buff3=min%10;dis_buff2=16;dis_buff1=sec10;disbuff0=sec%10;
8、voidinc_hour(void)(hour+;if(hour23)hour=0;)voidinc_min(void)(min+;if(min59)min=0;inc_hour();)voidinc_sec(void)sec+;if(sec59)sec=0;inc_min();)voidint()interrupt0de1ay(100);if(INTO=O)inc_hour();)voidinti()interrupt2de1ay(100);if(INTO=O)inc_min();)voidtimer()interrupt1THO=OxDC;T1O=OxOO;sec100+;if(sec10
9、0=100)sec100=0;inc_sec();)voidint_init(void)TMOD=OxOI;THO=OxDC;T1O=OxOO;TRO=I;ETO=I;EXO=I;IT0=0;EX1=I;IT1=O;EA=I;)voidmain(void)int_init();PO=OxFF;P2=0x00;hour=9;min=58;sec=0;sec100=0;whi1e(1)disp_data();disp1ay();)四、调试与仿真翻开kei1程序,创立“数字电子钟工程,输入C语言源程序,保存为“。在工程管理窗口中选中文件组,单击鼠标右键,在弹出的菜单中选择“AddFi1etoGrou
10、SourceGroUP1、,添加源程序“到工程组。执行命令Project-BUiIdTarget,编译源程序,如果编译成功,那么在输出窗口中显示没有错误,并创立了“文件。在已绘制好原理图的PrOteUSIS1S中,双击单片机,在弹出的对话框选择。开始仿真,刚运行时1数码管显示“9-80-00,而后每隔Is进行累计显示,如下图,每按一次K1时,小时数会加1,每按一次K2时,分钟数加1。:;五、心得体会按分键对分进行调整,按一下加一分;按时键对时进行调整,按一下加一小时,从而到达快速设定时间的目的。假设满足以上要求那么符合方案要求。假设按一下连续加假设干位,那么按键延时时间设置太短,可以通过增大延时时间进行改良。通过本次仿真设计,根本掌握了简单的单片机应用设计,以及ProteUS仿真设计,数字电子钟设计比拟简单,以后应多注意设计方面的问题并解决。六、参考文献1陈中平、基于Proteus的51系列单片机设计与仿真第二版)、电子工业出版社.2023.2谭浩强、C程序设计第四版)、清华大学出版社.2023.