(完整word版)单片机课程设计实验报告(时钟、日历).._第1页
(完整word版)单片机课程设计实验报告(时钟、日历).._第2页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、1基于单片机的电子钟设计目录第一章电子时钟设计-21.1 设计原理简介-21.2 设计功能-3第二章主要电路元器件介绍 -32.1 STC89C52 单片机简介-32.1.1 单片机简介-32.1.2 主要特性-32.1.3 管脚功能说明-42.1.4 LCD1602-5第三章单元电路的硬件设计-63.1 硬件原理框图 -63.2 单片机 STC89C52 系统的设计- 63.3 时钟电路- 73.4 复位电路-73.5 键盘接口电路- 83.6 LCD1602 显示-8第四章设计总原理图-9第五章心得体会-92第六章 源程序-103刖言:课程设计题目电子时钟、日历任务下达日期2013 年 6

2、 月 17日设计提交期限2013 年 7 月 5 日设计主要内容使用 89C51、LCD1602,设计一个能同时显示“年月 日”“时分秒”和“星期”的电子作品主要技术要求及参数基本要求:1 时钟走一天的误差小于 1 秒钟2 .时间、星期、日历均可以通过按键调节设置成果提交 形式技术报告一份,制作实物一件。设计进度安排第 1 周查资料,研究设计题目、内容及要求并进行初步设计。 第 2 周设计、安装及调试,并撰写设计报告。第 2 周周五上午提交设计报告并现场答辩。4摘要数字钟已成为人们日常生活中必不可少的必需品, 广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

3、由于数字 集成电路技术的发展和采用了先进的石英技术, 使数字钟具有走时准确、性能稳 定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目 前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。单片 机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业控领 域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落, 有 力地推动了各行的

4、技术改造和产品的更新换代,应用前景广阔。一、 作品介绍该电子钟使用 AT89S5 伪核心,采用 LCD1602 液晶屏显示,动态显示技术。产用 外部接5V 电源供电,内部添加了一个 4.8V 左右的电池以防突然断电后还能保持 原先数据不变。该产品简单易于操作,可以实现以下功能:1、显示年份,格式“年、月、日”2、时间显示为 24 小时制,格式“时时” “分分” “妙妙”3、显示星期,用英文字符表示如星期一“ MON二、设计目的1、巩固、加深和扩大 51 系列单片机应用的知识面,提高综合及灵活运用所学知 识解决工业控制的能力;2、学会怎么使用 LCM602 并且要知道它的组成与构造。3、 学会查

5、阅书籍,并且要能够熟练编写程序、 仿真、绘画流程图、原理图及 BCP 图。4、对课题设计方案的分析、选择、比较、熟悉用 51 单片机做系统开发、研制的 过程,软硬件设计的方法、内容及步骤。三、 设计要求1 上电以后自动进入计时状态。2、设计键盘调整时间,完成年月日、星期、时间的设计。3、采用 AT89S5 伪核心控制芯片,用 LCD1602 乍为显示屏。5第一章1.1 设计原理简介该设计设计一个电子时钟,我们采用的是STC89C52 单片机用软件实现计数和显示。该单片机是一个微型计算机,包括中央处理器CPU, RAM,ROM、I/O 接口电路、定时计数器、串行通讯等,是时钟计数设计的核心。该时

6、钟原理框图如图1.1,总体原理为:利用STC89C52 单片机构造电子时钟,可显示年、月、日星期、时、分、秒,通过C 语言对单片机的编程即可产生相应的计时功能,并可以通过键盘进行时间的调整的控制。图 2.1信号发生器原理框图本方案其主要模块包括复位电路、时钟信号、键盘控制、LCD1602 显示。其各个模块的作原理如下:(1)复位电路是为单片机复位使用,使单片机接口初始化;89C52 等 CMOS51 系列单片机的复位引脚 RET 是施密特触发输入脚,内部有一个上拉低电阻,当振荡器起振以后, 在 RST 引脚上输出 2 个机械周期以上的高电平,器件变进入复位状态开始,此时ALE、PSEN、PO、

7、P1、P2、P3 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始 工作。该方案采用的是人工开关复位,在系统运行时,按一下开关,就在RST 断出现一段高电平,使器件复位。(2)时钟信号是产生单片机工作的时钟信号,控制着计算机的工作节奏,可以通过提高时钟频率来提高 CPU 的速度。89C52 内部有一个可控的反相放大器,引脚XTAL1、XTAL2 为反相放大器输入端和输出端,在XTAL1、XTAL2 上外接 12MHZ 晶振和 30pF电容便组成振荡器。时钟信号常用于CPU 定时和计数。(3)键盘模块是是用于控制信号输入的类型,当按键按下时,可以通过单片机编 STC89C52单片机数

8、接口电路键盘输入程读取闭合的键号,实现相应的时间调整。其步骤主要是 a、断是否有键按下;b、去抖动,延时 20ms 左右;c、识别被按下的键号;d、处理,实现功能。(4) LCD1602 显示,通过单片机控制把数据送到LCD1602 上显示。61.2 设计功能(1) 本设计利用 3 位(P3.0、P3.1、P3.2)控制时间的调整,其中当 P3.0=0 对要调 整的年、月、日星期、时、分、秒的切换;当 P3.1=0 进行加 1 设置;当 P3.2=0 进行减 1 设置。(2) 本设计利用 LCD1602 液晶显示进行时间的显示,由单片机的P0 端口进行数据的传输;LCD 的 4 (RS)接 P

9、2.5,5( RW)接 P2.6,6( E)接 P2.7。第二章主要电路元器件介绍2.1.2 主要特性(1)兼容性能强(2)4K 字节可编程 FLASH 存储器(3)全静态工作:0Hz-24MHz(4) 128X8 位内部 RAM2.1 STC89C52 单片机简介2.1.1 单片机简介AT89C51 是一种带 4K 字节 FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。该芯片具 有优异的性价比,集成度高,体积小, 可靠性强,控制功能强等优点。其外 形及引脚排列如图 2.1 所示。电子斤发网dzkfw. co m . cn(TO) PBO (T1)PB1 (AINO)PB2

10、 (AIN1)PB3(SS) PB4(MOSI) PB&(MISO) PB6(SCK) PB7RESET(RXD)PDC(TXD) PD1(INTO) PD2(INT1J PD3PD4 (PCIA)PD5 (WR) PDB(RD) PD7XTAL2XTAL1GND匚匚匚匚匚匚匚匚匚匚匚匚匚匸匸匚匚匚匚匸393837363534333231302928272625242322vccPM(ADO)PAI(AD1)PA2(AD2)PA3(AD3)PM(AD4)PAS(AD5)PAft(AD6)PAT (AD 7)ICFALEOC1BPCT (A16)PCS(A14)PCS (A1 9)PC4

11、 (A12)PC3(A11)PC2 (A10)PC1 LCDlbO2单片机显示H4t+1般设计的标:图 3.110单片机引脚分配如下:XTAL1 , XTAL2 :外接晶振,产生时钟信号;RES:复位电路;P0 口:接 LCD1602 的第 714 脚进行数据的传输;P2 口: LCD 的 4 (RS)接 P2.5,5( RW)接 P2.6, 6 (E)接 P2.7;P3 口 :接按键开关,对时间进行设置。3.3 时钟电路单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚 XTAL1和 XTAL2 外接晶体振荡器,构成了内部振荡方式。 由于单片机内部有一个高增益的反相放器,

12、当外接晶振后,就构成了自激振荡,并产生振动时钟脉冲。晶振通常选用 6MHZ、12MHZ、24MHZ。本设计中时钟电路图如图3.2,我们选择了 12MHZ 和晶振分别接引脚 XTAL1 和XTAL2,电容 C1,C2 均选择为 30pF,对振荡器的频率有稳定作用。图 3.23.4 复位电路复位引脚 RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。本设计选择了按键复位如图4.3,在系统运行时,按一下开关,就在 RST 断出现

13、一段高电平, 使器件复位。此时 ALE、PSEN、PO、P1、P2、P4 输出高电平,RST 上输入返回低电平以后,变退出 复位状态开始工作。3.5 键盘接口电路P3.0、P3.1、P3.2 控制时间的调整,其中当日、星期、时、分、秒的切换;当11P3.0=0 对要调整的年、月、P3.1=0 进行加 1 设置;当 P3.2=0 进行减123.6 LCD1602 显示对于 1602 与单片机的连接方法如图第四章设计总原理图1 设置。图 3.43.5 所示:图 3.513五、实验心得体会该电子时钟在调试时,总是出现许多的错误,软件上出了许多的问题,之后纠正,和组 员慢慢调试修改了好多次。可是在仿真

14、时依然存在很多的问题,开始的时候是仿真没有时间显示,之后改了改电路的 P0 数据传输线后时间就显示出来了。在时间的调整上问题更多, 刚开始时按键没有反应,然后加上了消抖延时后才有反应,但是设的延时时间太长就出现按键不灵,再改后就正常了。在开发板上调试时, 背光是亮着,但是没有数字出现, 经过查看 1602 的资料才发现仿真 不需要调节 3 脚的变位器,而在电路板上时就需要调节变位器才能使它正常显示。第六章 源程序#in elude #defi ne uchar un sig ned char#defi ne uint un sig ned intuchar ds1302_readbyte();

15、void ds1302_writebyte(uchar dat);uchar ds1302_readdata(uchar addr);void ds1302_writedata(uchar addr,uchar dat);void ds1302_settime(uchar *p);void ds1302_gettime(uchar *p);void ds1302_i ni tial();40JIn17 PR1aI nir w*jK1RV1PO 旳卽曲XTMJ:powa POSftXPC.紳闻R9TPt临肚小閨PTirs-冋坤iFE 曰ALEpa.juftteH 弾汕RiTiWKP1&T

16、2P1pgawP3 iir.) )ah 也丽丽1 A.ri.JI円肇吊师QjPMfflP1.gpgiiw,卩鬲 7Sil由T址旳2013-06-2?THU14sbit dssclk=P1A6;sbit dslO=P1A7;sbit dsrs=P1A5;sbit lcd_rs=P2A5;sbit lcd_write=P2A6;sbit lcd_e n=P2A7;sbit key1=P3A0;/ 设置sbit key2=P3A1;/ 加sbit key3=P3A2;/ 减uchar table_r= 2013-01-01 MON ;uchar table_s= 00:00:00;uchar tab

17、le_week3=M,O,N,T,U,E, W,E,D, T,H,U, F,R,T, S,A,T, S,U,N;uchar i,t,ke ynu ml;char sec, min, hour,week,day=1,m on=1;uint year=2013;uchar Con vert(uchar In_Date)uchar i, Out_Date = 0, temp = 0;for(i=0; i i) & 0 x01; Out_Date |= (temp (7 - i);return Out_Date;void delay(uchar z)/ 延时程序uchar x,y;for(x=

18、0;x148;x+)for(y=0;yz;y+);void write_com(uchar com)/ 往液晶中写指令lcd_rs=0;lcd_en=0;P0=C on vert(com);delay(2);lcd_en=1;delay(2);lcd_en=0;void write_data(uchar date)/ 往液晶中写数据lcd_rs=1;15lcd_en=0;P0=Co nvert(date);delay(2);lcd_en=1;delay(2);lcd_en=0;void data_refresh_O(uchar add,uchar date)/ 第一行二位数调整uchar sh

19、i,ge;shi=date/10;ge=date%10;write_com(0 x80+add);write_data(0 x30+shi);write_data(0 x30+ge);void data_refresh_1(uchar add,uchar date)/ 第二行二位数调整uchar shi,ge;shi=date/10;ge=date%10;write_com(0 x80+0 x40+add);write_data(0 x30+shi); write_data(0 x30+ge);void data_refresh_2(uchar add,uchar date)星期调整switc

20、h(date)case 0:write_com(0 x80+add);write_data(table_weekOO);write_data(table_week01);write_data(table_week02); break;case 1:write_com(0 x80+add);write_data(table_week10);write_data(table_week11);write_data(table_week12); break;case 2:write_com(0 x80+add);write_data(table_week20);write_data(table_wee

21、k21);write_data(table_week22); break;case 3:write_com(0 x80+add);16write_data(table_week30);write_data(table_week31);write_data(table_week32); break;case 4:write_com(0 x80+add);write_data(table_week40);write_data(table_week41);write_data(table_week42); break;case 5:write_com(0 x80+add);write_data(ta

22、ble_week50);write_data(table_week51);write_data(table_week52); break;case 6:write_com(0 x80+add);write_data(table_week60);write_data(table_week61);write_data(table_week62);break;void data_refresh_4(uchar add,ui nt date)四位数调整uchar qia n,bai,shi,ge;qia n=date/1000;bai=date%1000/100;shi=date%1000%100/1

23、0;ge=date%1000%100%10;write_com(0 x80+add);write_data(0 x30+qia n);write_data(0 x30+bai);write_data(0 x30+shi);write_data(0 x30+ge);void lcdn it()/液晶显示初始化lcd_write=0;lcd_rs=0;lcd_en=0;write_com(0 x38);write_com(0 x0c);write_com(0 x06);write_com(0 x01);write_com(0 x80);for(i=0;i15;i+)write_data(table

24、_ri);17delay(10);write_com(0 x80+0 x40);for(i=0;i11;i+)write_data(table_si);delay(10);timer0_init()定时器 0 初始化TMOD=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;18EA=1;ET0=1;TR0=1;void keysca n()按键扫描if(key1=0)delay(5);if(ke y 仁=0)TR0=0; keynu m1+; delay(10); while(!key1);write_com(0 x80+0 x40+10); wri

25、te_com(0 x0f);if(keynum 仁=2)/ 分 write_com(0 x80+0 x40+7);if(keynum 仁=3)/ 时 write_com(0 x80+0 x40+4);if(keynum1=4) 年 write_com(0 x80+4);if(keynum 仁=5)/ 月 write_com(0 x80+7);if(keynum 仁=6)/ 日 write_com(0 x80+10);if(keynum 仁=7)/ 星期 write_com(0 x80+14);if(ke ynu m1=8)keynu m1=0;TR0=1;write_com(OxOc);if(

26、key nu m1!=0)if(ke ynu m1=1)19if(key2=0)delay(5);if(key2=0)sec+;if(sec=60) sec=0;delay(10);while(!key2); data_refresh_1(9,sec);write_com(0 x80+0 x40+10);if(key3=0)delay(5);if(key3=0)sec-;if(sec=-1) sec=59;delay(10);while(!key3);data_refresh_1(9,sec); write_com(0 x80+0 x40+10);if(ke ynu m1=2)if(key2=

27、0)delay(5);if(key2=0)mi n+;if(min=60) min=0;delay(10);while(!key2); data_refresh_1(6,mi n);write_com(0 x80+0 x40+7);if(key3=0)delay(5);20if(key3=0)min-;if(min=-1) min=59;delay(10);while(!key3);data_refresh_1(6,mi n); write_com(0 x80+0 x40+7);if(ke ynu m1=3)if(key2=0)delay(5);if(key2=0)hour+;if(hour=

28、24) hour=0; delay(10);while(!key2);data_refresh_1(3,hour);write_com(0 x80+0 x40+4); if(key3=0)delay(5);if(key3=0)hour-;if(hour=-1) hour=23; delay(10);while(!key3); data_refresh_1(3,hour); write_com(0 x80+0 x40+4);if(ke ynu m1=7)if(key2=0)delay(5);if(key2=0)week+;if(week=7) week=0; delay(10);while(!k

29、ey2); data_refresh_2(12,week); write_com(0 x80+14);if(key3=0)delay(5);if(key3=0)week-;if(week=-1) week=7; delay(10);while(!key3); data_refresh_2(12,week); write_com(0 x80+14);if(ke ynu m1=6) if(key2=0)delay(5);if(key2=0)day+;if(mon=1|m on=3|m on=5|m on=7|m on=8|m on=10|m on=12) if(day=32) day=1;22if

30、(mon=2)if(year%400=0|(year%100!=0&year%4=0) if(day=30) day=1;elseif(day=29) day=1;if(mon=4|m on=6|m on=9|m on=11)if(day=31) day=1;delay(10);while(!key2);data_refresh_0(9,day);write_com(0 x80+10);if(key3=0)delay(5);if(key3=0)day-;23if(mon=1|m on=3|m on=5|m on=7|m on=8|m on=10|m on=12) if(day=O) d

31、ay=31;if(mon=2)if(year%400=0|(year%100!=0&year%4=0) if(day=0) day=29;elseif(day=0) day=28;if(mon=4|m on=6|m on=9|m on=11)if(day=0) day=30;delay(10);while(!key3);data_refresh_0(9,day);write_com(0 x80+10);if(ke ynu m1=5)if(key2=0)delay(5);if(key2=0)mon+;if(mon=13) mon=1;delay(10);while(!key2);data

32、_refresh_0(6,m on);write_com(0 x80+7);if(key3=0)24delay(5);if(key3=0)mon-;if(mon=0) mon=12; delay(10);while(!key3); data_refresh_0(6,m on); write_com(0 x80+7);if(ke ynu m1=4)if(key2=0)delay(5);if(key2=0)year+;if(year=2100) year=2010; delay(10);while(!key2); data_refresh_4(1,year); write_com(0 x80+4)

33、;if(key3=0)delay(5);if(key3=0)year-;if(year=2009) year=2099; delay(10);while(!key3);data_refresh_4(1,year);write_com(0 x80+4);void mai n()/主函数25lcdn it();timer0_i nit();ds1302_i ni tial();ds1302_gettime();while(1)delay(5);keysca n();/按键扫描void timer0() in terrupt 1TH0=(65536-50000)/256;TL0=(65536-500

34、00)%256;t+;if(t=20)t=0;sec+;if(sec=60)sec=0;mi n+;if(mi n=60)mi n=0;hour+;if(hour=24) hour=0; day+; week+;if(week=7) week=0;if(mon=1|m on=3|m on=5|m on=7|m on=8|m on=10|m on=12)2if(day=32)day=1;mon+;if(mon=13)mon=1;year+;if(year=2100) year=2010;data_refresh_4(1,year);data_refresh_0(6,m on);if(mon=2)

35、if(year%4OO=O|(year%1OO!=O& year%4=0)if(day=30)day=1;mon+;if(mon=13)mon=1;year+;if(year=2100) year=2010;data_refresh_4(1,year);data_refresh_0(6,m on);elseif(day=29)day=1;mon+;if(mon=13)mon=1;year+;if(year=2100) year=2010;data_refresh_4(1,year); data_refresh_0(6,m on);27if(mon=4|m on=6|m on=9|m on=11)if(day=31)day=1;mon+;if(mon=13)mon=1;year+;if(year=2100) year=2010;data_refresh_4(1,year);d

温馨提示

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

评论

0/150

提交评论