电子系统设计课程设计报告1目录第一章设计概述…………………………………………………………………21.1使用软件简介………………………………………………………….31.2设计目的及要求………………………………………………………….3第二章总体设计…………………………………………………………………42.1设计框图………………………………………………………42.2设计框图概述…………………………………………………….5第三章硬件设计………………………………………………………………53.1数字时钟的结构……………………………………………………….63.2数字时钟的功能实现……………………………………………………….73.3数字时钟的功能模块设计…………………………………………………….7第四章程序框图和清单……………………………………………………………94.1程序框图……………………………………….……94.2程序……………………………………………………………….9第五章实验结果和体会………………………………………………………………16体会…………………………………………………………………………………16电子系统设计课程设计报告2第一章设计概述1.1使用软件简介a.使用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。KEILuVISION是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。KEILuVision5是uVision4的升级版本,页面有了进一步的优化,使用起来更加的人性化。b.仿真软件ProtuesProteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译。c.综合工具ModelsimMentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。电子系统设计课程设计报告3按键数码管显示数码管驱动时钟芯片Dc887复位电路主控STC89C52晶振电路1.2设计目的及要求a、设计要求(1)设计一个基于单片机和CPLD的数字时钟;(2)根据性能指标,计算元件参数,选好元件,设计电路并画出电路图;对设计电路进行模拟与测试。(3)撰写设计报告。b、技术指标使用单片机和CPLD设计,显示年、月、日、小时、分钟、秒,时间可以调整。第二章总体设计2.1设计框图电子系统设计课程设计报告42.2设计框图概述a.晶振电路:12MHZ晶振和两个22PF的电容,产生标准脉冲信号。b.复位电路:利用它把电路恢复到起始状态。c.时钟芯片:本设计采用高精度时钟芯片DS12C887,自带晶体振荡器和锂电池。在没有外部电源的情况下可工作10年。在运行中,单片机从时钟芯片读取当前时间,然后送到数码管显示。d.数码管显示:本设计采用八段共阴极数码管,可以同时显示年月日或者时分秒。e.数码管驱动:选用两个74HC573锁存器,分别控制数码管的段码显示和位码显示。f.按键:采用四个独立按键,分别用来实现调整时间及其它功能。第三章硬件设计3.1数字时钟的结构运用protues软件进行仿真,keil软件与其调试电子系统设计课程设计报告5显示时分秒显示年月日电子系统设计课程设计报告63.2数字时钟的功能实现本设计一共使用五个独立按键来实现数字时钟的功能,正常情况下显示时间,当按下“显示月份”键时,显示年月日,松开后继续显示时间。当按一次“调时或调年”键时,可以用“时,分,秒”键调时分秒,当按下两次“调时或调年”键时,可以用“年,月,日”键调年月日,当按下三次“调时或调年”键时,返回正常情况,显示时间。3.3数字时钟的功能模块设计本设计中需要用到CPLD的有两个74HC573锁存器,下面用Quartusii9.0软件进行锁存器设计.74HC573:3态非反转透明锁存器,74HC573的输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。电子系统设计课程设计报告7当锁存使能变低时,符合建立时间和保持时间的数据会被锁存.本设计利用verilog语言对74HC573进行描述。锁存器代码:moduleverilog_74hc573(LE1,OE_N1,D1,Q1,LE2,OE_N2,D2,Q2);inputLE1,OE_N1,LE2,OE_N2;input[7:0]D1,D2;output[7:0]Q1,Q2;reg[7:0]Q_r1,Q_r2;wire[7:0]D_r1,D_r2;assignD_r1=D1;always@(OE_N1,LE1,D1)beginif(OE_N1)beginQ_r1=8'hz;endelseif(LE1)beginQ_r1=D_r1;endelsebeginQ_r1=Q_r1;endendassignQ1=Q_r1;assignD_r2=D2;always@(OE_N2,LE2,D2)beginif(OE_N2)beginQ_r2=8'hz;endelseif(LE2)beginQ_r2=D_r2;end电子系统设计课程设计报告8elsebeginQ_r2=Q_r2;endendassignQ2=Q_r2;endmodule仿真结果输入信号第四章程序框图和清单4.1程序框图电子系统设计课程设计报告94.2程序#includereg52.hsbitduan=P2^0;sbitwei=P2^1;sbitxuanze=P2^7;sbitmiao1=P1^7;sbitfen1=P1^6;sbitshi1=P1^5;intnian=15,yue=1,ri=13,shi,fen,miao,iyuefen,x,tian,zhuan;inti=0;voiddelay(unsignedinttime)//延时函数{unsignedintj;for(time;time0;time--)for(j=150;j0;j--);}开始初始化显示按下显示时间显示日期中断调时转=1转=2调年返回是否是否是否电子系统设计课程设计报告10display(inta,b,c);//显示函数voididentify(){//月份判断函数switch(yue){case1:iyuefen=32;break;case2:iyuefen=30;break;case3:iyuefen=32;break;case4:iyuefen=31;break;case5:iyuefen=32;break;case6:iyuefen=31;break;case7:iyuefen=32;break;case8:iyuefen=32;break;case9:iyuefen=31;break;case10:iyuefen=32;break;case11:iyuefen=31;break;case12:iyuefen=32;break;}}voidinitial(){//初始化函数TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;IT0=1;EX0=1;}unsignedcharcodetable[]={0x3F,//00x06,//10x5B,//20x4F,//30x66,//40x6D,//50x7D,//60x07,//7电子系统设计课程设计报告110x7F,//80x6F};//9voidmain(){initial();while(1){identify();if(xuanze==1&x==0)display(shi,fen,miao);//按键显示月份elsedisplay(nian,yue,ri);while(zhuan==1&x==1){display(shi,fen,miao);//调时间函数if(shi1==0){shi++;if(shi==24)shi=0;while(shi1==0){display(shi,fen,miao);}}if(fen1==0){fen++;if(fen==60)fen=0;while(fen1==0){display(shi,fen,miao);}}if(miao1==0){miao++;if(miao==60)miao=0;while(miao1==0){display(shi,fen,miao);}}}while(zhuan==2&x==1){display(nian,yue,ri);//调月份函数identify();if(miao1==0){ri++;if(ri==iyuefen)ri=1;while(miao1==0){display(nian,yue,ri);}}电子系统设计课程设计报告12if(fen1==0){yue++;if(yue==13)yue=1;while(fen1==0){display(nian,yue,ri);}}if(shi1==0){nian++;if(nian==20)nian=15;while(shi1==0){display(nian,yue,ri);}}}}}voidzhongduan()interrupt1{//1秒中断TH0=0x3c;TL0=0xb0;i++;if(i==20){miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;ri++;if(ri==iyuefen){ri=0;yue++;if(yue==12){yue=1;nian++;}}}}}i=0;}}display(inta,b,c){//显示函数wei=1;P0=0x7f;wei=0;P0=0xff;duan=1;P0=table[c%10];duan=0;电子系统设计课程设计报告13delay(1);P0=0xff;wei=1;P0=0xbf;wei=0;P0=0xff;duan=1;P0=table[c/10];delay(1);duan=0;P0=0xff;wei=1;P0=0xdf;wei=0;P0=0xff;duan=1;P0=0x40;duan=0;delay(1);P0=0xff;wei=1;P0=0xef;wei=0;P0=0xff;duan=1;P0=table[b%10];duan=0;delay(1);P0=0xff;wei=1;P0=0xf7;wei=0;P0=0xff;duan=1;P0=table[b/10];电子系统设计课程设计报告14duan=0;delay(1);P0=0xff;wei=1;P0=0xfb;wei=0;P0=0xff;duan=1;P0=0x40;duan=0;delay(1);P0=0xff;wei=1;P0=0xfd;wei=0;P0=0xff;duan=1;P0=table[a%10