电子设计竞赛报告数字电子时钟加模拟指针_第1页
电子设计竞赛报告数字电子时钟加模拟指针_第2页
电子设计竞赛报告数字电子时钟加模拟指针_第3页
电子设计竞赛报告数字电子时钟加模拟指针_第4页
电子设计竞赛报告数字电子时钟加模拟指针_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、作品名称:数字电子时钟加模拟指针目录:申报者信息:1一、作品类别:基本电子技术应用类1二、引言:1三、方案设计11、方案选择11.1 显示方案22、 方案确定23、理论分析与方案论证3四、总体设计3五、单元电路(或软件模块)设计41.STC89C52STC89C52单片机介绍52.1602LCD 介绍7六、单元电路测试7九、附录8十、参考文献:29 申报者信息:队员1:姓名 卓友维,性别 男,所在学院 电子科学与工程学院 、专业 电子信息科学与技术、年级 2012级,队员2:姓名 徐嵩,性别 男,所在学院 电子科学与工程学院、专业 电子信息工程 、年级 2012级 ,队员3:姓名 余枭昆,性别

2、 男,所在学院 电子科学与工程学院 、专业 电子信息工程、年级 2012级 ,一、作品类别:基本电子技术应用类二、引言:电子时钟简介 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。三、方案设计1、方案选择 1.1 显示方案 方案一:静态显示就是当CPU将要显示的字或字段码送到输出口,显示器就可以显示出所要显示的字符,如果CPU

3、不去改写它,它将一直保持下去;静态显示硬件开销大,电路复杂,信息刷新速度慢。方案二:动态显示则是一位一位地轮流点亮显示器地各个位(扫描)。对于显示器的每一位而言,每隔一段时间点亮一次;动态显示耗能较小,但编写程序较复杂。动态显示硬件连接简单,信息刷新速度快。方案三:LCD显示,同时用了17个发光二级管构成模拟指针。1.2 键盘方案 方案一:独立式键盘。独立式键盘的各个按键相互独立,每个按键独立地与一根数据输入线(单片机并行接口或其他芯片的并行接口)连接。独立式键盘配置灵活,软件结构简单,但每个按键必须占用一根接口线,在按键数量不多时,接口线占用多。所以,独立式按键常用于按键数量不多的场合。 方

4、案二:矩阵式键盘。矩阵式键盘采用的是行列式结构,按键设置在行列的交点上.(当接口线数量为8时,可以将4根接口线定义为行线,另4根接口线定义为列线,形成4*4键盘,可以配置16个按键。)2、 方案确定 显示方案:由于本次设计是对时间进行显示,如采用静态显示,则所占用的I/O口较多,电路较复杂,所以在此选择的是方案三,采用LCD显示,用模拟指针增显时间的流动性。键盘方案:由于本设计只用了四个按键,不需要采用矩阵式键盘,所以选用第一种方案,采用独立式键盘。 该电子时钟由89C52,发光二级管,液晶等构成,利用单片机内部定时器产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,同时严格

5、按照时间的规则显示,比如闰年二月为29天。3、理论分析与方案论证本次设计时钟电路,使用了STC89C52单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一蜂鸣器和发光二极管来进行闹钟提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过五个模块:键盘、蜂鸣器、显示屏、模拟指针即可满足设计要求。(1) 单片机发送的信号通过程序控制最终液晶上显示出来。(2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。 (3)为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正液晶显示器上显示的时间。四

6、、总体设计根据题目要求,把技术指标分配到方框图或主流程图中各部分(即各单元电路或程序模块中)。设计各单元之间的匹配关系对各单元的技术要求。1、 实现十二、二十四时制切换;2、 屏幕用AM、PM区分上午与下午;3、 有闹钟设置,并可设置闹钟响的持续时间,闹钟时间精确到秒;4、 可以设置时间:年、月、日、时、分、秒;5、 闹钟是否开启在屏幕上用ON与OFF区分;6、 启动闹钟后,蜂鸣器响,同时有一灯闪烁,闹钟结束后,灯灭,蜂鸣器不响;7、 如果设置了闹钟,有一发光二极管点亮;8、 在设置时间时,显示二十四制时间,时间设置完后如果处于十二时制,自动转化为十二时制显示。显示单片机按键电源模拟指针五、单

7、元电路(或软件模块)设计1.STC89C52STC89C52单片机介绍 STC89C52单片机是由深圳宏晶公司代理销售的一款MCU,是由美国设计生产的一种低电压、高性能CMOS 8位单片机,片内含8kbytes的可反复写的FlashROM和128bytes的RAM,2个16位定时计数器。STC89C52单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0P3、定时器/计数器、串行I/O接口以及定时控制逻辑电路等。这些部件通过内部总线联接起来,构成一个完整的微型计算机。VCC:电源。 GND:接

8、地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位

9、双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入

10、。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口。P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的

11、输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号

12、将不出现。 EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 2.1602LCD 介绍1602LCD 采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表8-1所示: 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12

13、D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 表8-1:引脚接口说明表 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示

14、地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。 1602LCD的指令说明及时序 1602液晶模块内部的控制器共有11条控制指令。六、单元电路测试根据总体设计对各单元电路的要求,用万用表实测该单元电路的对应指标正常。七、整体测试根据题目技术要求,测试作品整体技术指标正常。8、 结论 我们学习了电路,对电子技术有了一些初步了解,但那都是一些理论的东西。通过这次数字电子钟的课程设计,我们才把学到

15、的东西与实践相结合。从中对我们学的知识有了更进一步的理解。 在此次的数字钟设计过程中,更进一步地熟悉了单片机的结构及掌握了单片机的工作原理和其具体的使用方法。也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。虽然这只是一次简单的电子设计,但通过这次电子设计我们了解了电子设计的一般步骤,和设计中应注意的问题。九、附录#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table="0123456789:APM"uchar code table

16、1="OF"uchar code table2="ON"uchar code table3=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/指针信号sbit lcden=P12;sbit lcdrs=P10;sbit lcdrw=P11;sbit k1=P37;sbit k2=P36;sbit k3=P35;sbit k4=P34;sbit spk=P15; sbit led=P17;sbit d1=P32;sbit d2=P33;sbit d3=P16;uint num,num1,num2,qian,num3=6,nu

17、m4=4,num5=4,c,d,num6=13,e,f,i,j,k,temp,shu,q=0,w,z=1,num7=1,num8,l,m,n,o,r,num9,num10,num11,num12,xian,yu,num31,a1,b1,num32,num20,num21,num23=6,c2,c3;uchar a,b,bai,ge,shi,num30,e3,e4;bit wei,si;void delay(uint z) /延时函数uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)/写命令lcdrs

18、=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)/写数据lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;void naozhong()/屏幕ON与OF的显示函数if(wei=0)write_com(0x80);for(num11=0;num11<2;num11+)write_data(table1num11);if(wei=1)write_com(0x80);for(num12=0;num12<2;num12+)write_data(ta

19、ble2num12);void qidong()/闹钟启动函数if(wei=1)if(num3=num8)if(num2=num7)if(num30=num1)TR1=1;void shijian1() /时间显示函数if(si=0)/二十四时制下的小时显示a=num3/10;b=num3%10;write_com(0x80+5);write_data(tableb);write_com(0x80+4);write_data(tablea);write_com(0x80+9);/固定符号与数字的显示 write_data(table10);write_com(0x80+6);write_dat

20、a(table10); write_com(0xc0+3);write_data(table0);write_com(0xc0+2);write_data(table2);shi=num1/10; /其他单位的时间显示,先分解成两位,再显示出来!ge=num1%10;bai=num2%10;qian=num2/10;c=num4/10;d=num4%10;e=num5/10;f=num5%10;i=num6/10;j=num6%10;write_com(0x80+11);write_data(tablege);write_com(0x80+10);write_data(tableshi); w

21、rite_com(0x80+8);write_data(tablebai);write_com(0x80+7);write_data(tableqian);write_com(0xc0+11);write_data(tabled);write_com(0xc0+10);write_data(tablec);write_com(0xc0+8);write_data(tablef);write_com(0xc0+7);write_data(tablee);write_com(0xc0+5);write_data(tablej);write_com(0xc0+4);write_data(tablei

22、); void shijian2()/闹钟时间显示l=num7/10;m=num7%10;n=num8/10;o=num8%10;e3=num30/10;e4=num30%10;write_com(0x80+9);write_data(tablee3);write_com(0x80+10);write_data(tablee4);write_com(0x80+3);write_data(tablen);write_com(0x80+4);write_data(tableo);write_com(0x80+5);write_data(table10);write_com(0x80+8);writ

23、e_data(table10);write_com(0x80+6);write_data(tablel);write_com(0x80+7);write_data(tablem);void ap() /AM,PM,显示函数。当处于12时制时通过num32的值来判断上午下午if(si=1)write_com(0x80+15);write_data(table13);a1=num31/10;b1=num31%10; /显示十二时制下的小时write_com(0x80+5);write_data(tableb1);write_com(0x80+4);write_data(tablea1); if(n

24、um32=0)write_com(0x80+14);write_data(table11);if(num32=1) write_com(0x80+14);write_data(table12);void shijianjiafa() /时间的循环加法函数if(num1=60)num1=0;num2+;if(num2=60)num2=0;if(si=0)num3+;if(num3=24)num3=0;num4+;if(si=1)num31+;if(num31=13)num31=1;num32+;if(num32=2) num32=0;num4+;yu=num6%4; if(yu=0) switc

25、h(num5)case 4:if(num4=31)num5+;num4=1; break;case 6:if(num4=31)num4=1;num5+; break;case 9:if(num4=31)num4=1;num5+; break;case 11:if(num4=31)num4=1; num5+; break;case 2:if(num4=30) num4=1;num5+; break;default:if(num4=32)num4=1;num5+;break; else switch(num5)case 4:if(num4=31)num5+;num4=1; break;case 6

26、:if(num4=31)num4=1;num5+; break;case 9:if(num4=31)num4=1;num5+; break;case 11:if(num4=31)num4=1; num5+; break;case 2:if(num4=29) num4=1;num5+; break;default:if(num4=32)num4=1;num5+;break; if(num5=13) num6+;num5=1;if(num6=100)num6=0; void keyscan()/键盘检测 .k1进入不同时间单位,k2进行界面切换,k3调大,k4调小,if(k1=0) / 每增大或减

27、小都用屏幕显示出来delay(10);if(k1=0)temp=1;while(!k1);if(shu=0) /调时间 ,这是24小时制if(temp=1) /进入设置时间,可以调分TR0=0; /关闭定时器num1=0; /秒置零write_com(0x0f); /开光标闪烁while(1)write_com(0x80+8) ; /光标定位在分if(k3=0)while(!k3);num2+;if(num2=60)num2=0;bai=num2%10;qian=num2/10; write_com(0x80+8);write_data(tablebai);write_com(0x80+7);

28、write_data(tableqian);if(k4=0)while(!k4); num2-;if(num2=-1)num2=59;bai=num2%10; qian=num2/10;write_com(0x80+8); write_data(tablebai); write_com(0x80+7); write_data(tableqian);if(k1=0) /按下k1跳出分,进入小时temp=2;while(!k1);break;if(temp=2)/小时while(1)write_com(0x80+5);if(k3=0)while(!k3);num3+;if(num3=24)num3

29、=0; a=num3/10;b=num3%10; write_com(0x80+5);write_data(tableb);write_com(0x80+4);write_data(tablea);if(k4=0)while(!k4);num3-;if(num3=-1)num3=23; a=num3/10;b=num3%10; write_com(0x80+5);write_data(tableb);write_com(0x80+4);write_data(tablea);if(k1=0)temp=3;while(!k1);break;if(temp=3) /日while(1)write_co

30、m(0xc0+11);if(k3=0)while(!k3);num4+;yu=num6%4; if(yu=0) switch(num5)case 4:if(num4=31)num4=1; break;case 6:if(num4=31)num4=1; break;case 9:if(num4=31)num4=1; break;case 11:if(num4=31)num4=1; break;case 2:if(num4=30)num4=1; break;default:if(num4=32)num4=1;break; else switch(num5)case 4:if(num4=31)num

31、4=1; break;case 6:if(num4=31)num4=1; break;case 9:if(num4=31)num4=1; break;case 11:if(num4=31)num4=1; break;case 2:if(num4=29)num4=1; break;default:if(num4=32)num4=1;break; c=num4/10;d=num4%10; write_com(0xc0+11);write_data(tabled);write_com(0xc0+10);write_data(tablec);if(k4=0)while(!k4);num4-;yu=nu

32、m6%4;if(yu=0) switch(num5)case 4:if(num4=0)num4=30; break;case 6:if(num4=0)num4=30; break;case 9:if(num4=0)num4=30; break;case 11:if(num4=0)num4=30; break;case 2:if(num4=0)num4=29; break;default:if(num4=0)num4=31;break; else switch(num5)case 4:if(num4=0)num4=30; break;case 6:if(num4=0)num4=30; break

33、;case 9:if(num4=0)num4=30; break;case 11:if(num4=0)num4=30; break;case 2:if(num4=0)num4=28; break;default:if(num4=0)num4=31;break; c=num4/10;d=num4%10; write_com(0xc0+11);write_data(tabled);write_com(0xc0+10);write_data(tablec);if(k1=0)temp=4;while(!k1);break; if(temp=4) /调月while(1)write_com(0xc0+8)

34、;if(k3=0)while(!k3);num5+;if(num5=13)num5=1;e=num5/10;f=num5%10; write_com(0xc0+8);write_data(tablef);write_com(0xc0+7);write_data(tablee);if(k4=0)while(!k4);num5-;if(num5=0)num5=12;e=num5/10;f=num5%10; write_com(0xc0+8);write_data(tablef);write_com(0xc0+7);write_data(tablee);if(k1=0)temp=5;while(!k

35、1);break; if(temp=5)/调年while(1)write_com(0xc0+5);if(k3=0)while(!k3);num6+;if(num6=100)num6=0;i=num6%100/10;j=num6%100%10; write_com(0xc0+5);write_data(tablej);write_com(0xc0+4);write_data(tablei);if(k4=0)while(!k4);num6-;if(num6=-1)num6=99; i=num6%100/10;j=num6%100%10; write_com(0xc0+5);write_data(t

36、ablej);write_com(0xc0+4);write_data(tablei);if(k1=0)temp=6;while(!k1);break; if(temp=6)/结束调整时间temp=0;if(si=1) /如果处于12小时制,将时间换算成十二小时制if(num3<13)num31=num3;num32=0; if(num3>12)num32=1;num31=num3-12;write_com(0x0c); /取消光标闪烁,启动定时器TR0=1;if(shu=1) /设置闹钟时间以及开关闹钟和12,24小时制切换if(temp=1) /设置闹钟秒while(1)wri

37、te_com(0x0f);write_com(0x80+10);shijianjiafa();if(k3=0)while(!k3);num30+;if(num30=60)num30=0; e3=num30/10;e4=num30%10;write_com(0x80+9);write_data(tablee3);write_com(0x80+10);write_data(tablee4);if(k4=0)while(!k4);num30-;if(num30=-1) num30=59; e3=num30/10;e4=num30%10;write_com(0x80+9);write_data(tab

38、lee3);write_com(0x80+10);write_data(tablee4); if(k1=0) temp=2;while(!k1);break; if(temp=2) /设置闹钟分while(1)write_com(0x80+7);shijianjiafa();if(k3=0)while(!k3);num7+;if(num7=60)num7=0; l=num7/10;m=num7%10;write_com(0x80+6);write_data(tablel);write_com(0x80+7);write_data(tablem);if(k4=0)while(!k4);num7-;if(num7=-1) num7=59; l=num7/10;m=num7%10;write_com(0x80+6);write_data(tablel);write_com(0x80+7);write_data(tablem); if(k1=0) temp=3;while(!k1);break; if(temp=3) /设置闹钟小时while(1)write_com(0x80+4); shijian

温馨提示

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

评论

0/150

提交评论