1、51单片机实时时钟设计完成内容:完成一个简易数字时钟的软硬件设计,首先利用protus完成功能方真,再利用dxp完成原理图和pcb的绘制,该数字时钟可具备如下功能:1、实现最基本的计时功能,显示时、分、秒,可以通过按键设置时间。要求:时钟计时精确,按键操作不影响计时。2、具备秒表计时功能。要求:记时精度达到100ms,计时支持启动、暂停、继续和停止操作。3、具备整点响铃提示功能。要求:整点闹铃五短一长,闹钟响铃时可以按键清楚响铃。4、具备日期显示和调整功能。说明:以上功能中,1为必备功能,2、3、4为选做功能。采用数码管完成显示,按键进行调整,供电采用usb供电,其中数码管和按键的个数以及操作
2、方式自己决定。系统操作以简洁,方便,原理图绘制正确,PCB布局布线规整为宜。评测内容:protus的功能仿真测试,dxp原理图以及pcb绘制结果。本设计使用89C51芯片作为控制芯片,复位电路和时钟电路构成单片机最小系统。利用P0口8个引脚接上拉电阻,驱动LCD液晶显示时钟。 总体设计思路图2.3单元电路设计 本设计主要分为时钟电路模块,复位电路模块,显示模块和控制模块。设计方案如下 2.3.1 时钟模块 89C51单片机的时钟信号通常用内部振荡方法得到,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方法。由于单片机内部有一个高增益反相放大器,当外接晶振后
3、就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选择6MHz、12MHz、24MHz。本设计采用12MHz晶振。图中电容C1、C2起到稳固振荡频率、快速起振的作用。电容值一般为530pF。本设计选用33pF电容。 2.3.2 复位电路模块 图2.4 复位电路 复位操作完成电路的初始化,使单片机从一种确定的状态开始运行。 由上图可知,控制模块实际上就是单片机的最小系统。本设计采用常用的上电且开关复位电路。上电后,由于电容的充电,使RST持续一段高电平时间。当单片机已在运行中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。此处 C3电容取10uF,R2=K。 2.3.3
4、控制模块 图2.5 控制电路 2.3.4显示模块 显示部分电路设计如下图图2.6 显示模块电路图 三、软件设计 3.1 程序设计思路(流程图) 否 3.2源程序#includeunsigned char tab= 23:58:48; unsigned char code tab2=hello; #define lcdp P0 sbit rs=P35; sbit rw=P36; sbit en=P37; sbit led=P17; sbit s1=P10; sbit s2=P11; sbit s3=P12; unsigned char n,count,mu; char ss=23,ff=58,m
5、m=55; void delay(unsigned char z) unsigned char i,j; for(i=z;i0;i-) for(j=110;j0;j-); void write_com(unsigned char com)/写指令 rs=0; rw=0; en=0; lcdp=com; delay(5); en=1; delay(5); en=0; void write_date(unsigned char date)/写数据 rs=1; rw=0; en=0; lcdp=date; delay(5); en=1; delay(5); en=0; void write_sj(u
6、nsigned add,unsigned date) unsigned char shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(shi+0x30); write_date(ge+0x30); void init() /初始化 write_com(0x38); /设置16x2显示,5x7点阵,8位数据接口 write_com(0x06); /写一个字符后地址指针自动加1 write_com(0x01); /显示清零,数据指针清零 write_com(0x0c); /开显示,不显示光标 /write_com(0x0
7、8); /write_com(0x0e);/光标开启,但不闪烁 write_com(0x80); /显示位置 for(n=0;n10;n+) write_date(tabn); delay(1); write_com(0x80+0x40+3);/第二行显示 for(n=0;n8;n+) write_date(tab2n); delay(1); /定时器初始化 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TMOD=0x01; EA=1; ET0=1; TR0=1; void key() if(s1=0) delay(5); if(s1=0) mu+
8、; while(!s1); if(mu=1) TR0=0; write_com(0x80+9); write_com(0x0f);/光标闪烁 if(mu=2) write_com(0x80+6); write_com(0x0f);/光标闪烁 if(mu=3) write_com(0x80+3); write_com(0x0f);/光标闪烁 if(mu=4) TR0=1; mu=0; write_com(0x0c);/关闭光标 if(mu!=0) if(s2=0) delay(5); if(s2=0) while(!s2); if(mu=1) mm+; if(mm=60) mm=0; write
9、_sj(8,mm); write_com(0x80+9); if(mu=2) ff+; if(ff=60) ff=0; write_sj(5,ff); write_com(0x80+6); if(mu=3) ss+; led=!led; if(ss=24) ss=0; write_sj(2,ss); write_com(0x80+3); if(s3=0) delay(5); if(s3=0) while(!s3); if(mu=1) mm-; if(mm=-1) mm=59; write_sj(8,mm); write_com(0x80+9); if(mu=2) ff-; if(ff=-1)
10、ff=59; write_sj(5,ff); write_com(0x80+6); if(mu=3) ss-; led=!led; if(ss=-1) ss=23; write_sj(2,ss); write_com(0x80+3); void main() init(); while(1) key(); void time0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; count+; if(count=20) count=0; mm+; if(mm=60) mm=0; ff+; if(ff=60) ff=0; ss+
11、; if(ss=24) ss=0; write_sj(2,ss); write_sj(5,ff); write_sj(8,mm); 四、仿真调试 总体仿真电路图如下图所示 图4.1 整体仿真原理图 4.1 keil简介 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。4.2 keil与protues联调 双击图标进入Keil uVision2编程环境,输入程序。返回桌面双击图标进入PROTEUS仿真环境。点击左上角选项P后根据设计的电路图调出所需元件画好硬件原理图如图4.1所示。然后按照4.1节所写步骤设置keil和proteus的工作环境。实现keil和proteus的连调。 4.3 仿真结果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1