单片机课程设计实验报告lcd电子时钟_第1页
单片机课程设计实验报告lcd电子时钟_第2页
单片机课程设计实验报告lcd电子时钟_第3页
单片机课程设计实验报告lcd电子时钟_第4页
单片机课程设计实验报告lcd电子时钟_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计实验报告lcd电子时钟单片机课程设计实验报告lcd电子时钟单片机课程设计实验报告lcd电子时钟单片机原理与应用课程名称:单片机原理与应用设计题目:电子钟院系:电子信息工程学院班级:自动化设计者:全宏宇指导教师:一,设计目标LCD显示电子钟的基本功能1,实现时钟功能;2,实现闹铃功能;3,实现秒表功能;4,拥有必然的计时精度。LCD显示电子钟的基本要求1,掌握单片机开发编程设计的基本流程;2,认识Keil及Proteus软件的基本使用;3,认识LCD的基本使用;4,学习单片机硬件制作。二,详尽实现1,软件平台1)Keil编程Keil的开发工具的使用的基本过程:1创办C或汇编语言的源

2、程序;2编译或汇编源文件;3纠正源文件中的错误;4从编译器和汇编器连接目标文件;5测试连接的应用程序。2)Proteus仿真Proteus软件不但拥有其他EDA工具软件的仿真功能,还能够仿真单片机及外面器件。它是目前最好的仿真单片机及外面器件的工具。在编译方面,它也支持IAR,Keil,PLAB等多种编译器。2,硬件开发平台JD51开发板的基本资料1LED电路,8只独立LED发光管,可做指示或各种闪烁收功效。2数码管电路,4只共阳一体8段数码显示管,可实现各种数据显示,如计数、时钟等。3蜂鸣器电路,可用于设计各种提示音、演奏音乐等。4键盘电路,学习按键控制相关编程。5LCD显示电路,编程控制L

3、CD显示。6串口电路,学习编程实现JD51和PC或其他吻合该通信协议的电路之间的通信。7红外电路,经过选配的红外遥控器,学习红外解码并可实现红外遥控JD51。8温度模块电路,采用一线式温度传感器实现温度的采集并可显示在数码管也许LCD上,经过温度数据办理即可实现温度控制器功能。9除了以上提到的可编程电路本学习板还有一些常用的不能编程电路,包括电源电路、复位电路、晶振电路等。本次LCD电子钟实验用到其中的蜂鸣器,按键,LCD显示接口。3,整体设计1)基本资源的使用本次实验采用了型单片机,液晶显示屏,蜂鸣器。为了实现时钟,准时,闹钟,秒表的功能,用到了单片机的外面中断,计时器中断,及端口资源功能外

4、部中外面中断INT1模式选择(时钟,调时,秒表,闹断钟)外面中断INT0秒表的暂停,清零准时器准时器T0秒表,时钟准时基准准时器T1音乐闹铃的音符产生I/O端口P1,P2LCD接口,蜂鸣器2)软件仿真1)程序设计的一些要点问题(详尽参照后边的程序清单)1建立Keil工程时,注意对程序编译环境进行设置;设置内容包括器件,频率,产生文件等。2LCD管脚及控制字;LCD管脚的定义控制字1602液晶模块的读写操作,屏幕和光标的操作都是经过指令编程来实现的。指令1:清显示,指令码01H,光标复位到地址00H地址指令2:光标复位,光标返回到地址00H指令3:光标和显示地址设置I/D,光标搬动方向,高电平右

5、移,低电平左移,S:屏幕上所有文字可否左移或右移,高电平表示有效,低电平表示无效。指令4:显示开关控制。D:控制整体的显示开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标可否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时显示搬动的文字,低电平时搬动光标指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时为双行显示,F:低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地

6、址BF:忙标志位,高电平表示忙,此时模块不能够接收命令或数据,若是为低电平表示不忙。3LCD实现转动显示;方法一:采用控制命令,显示后画面搬动一个字符;方法二:循环使用显示不同样地址,形成转动收效。5秒表主若是产生计时基准.秒,有了基准此后需要解决的问题是如何实现有效的暂停,清零(达到精准动作),采用中断是很不错的结果。6闹铃主若是如何实现闹铃关闭的逻辑,if(f&g)语句能够实现这一动作。7提高计时精度本程序除了调时模式外,其他模式的时候时钟都在跑动,提高了因模式变换而以致的时间精度降低。2)Proteus仿真在Proteus中画出以下电路图,增加文件,进行虚假仿真。2)开发板运行调试在板上

7、烧制程序,依照实质的收效,对中断的反应时间,显示收效做出了调整,整体收效不错,可是音乐的收效不好,主若是由于若是将蜂鸣器换成扬声器收效会好些,还能够够在程序中增加节拍来增加音乐收效。4,硬件制作依照仿真电路图购买元件进行焊接,下载程序收效后,液晶显示器显示乱码,检查电路后已无连接错误,但功能仍旧没有实现,相关检查在进行中。三,设计领悟本次课程设计系统地学习了单片编程开发及实质电路的制作。学习了的语言编程的基本知识,Proteus仿真软件的模拟仿真,开发实验板的使用,本次课设,时间了很多的其他案例,比较全面的掌握了单片机的运营,包括编程,电路,器件等,在知识上有了很多的进步。本次课程设计还有很多

8、其他收获,锻炼了自学的能力,特别是着手实践方面的东西,让我深深感觉到理论与实质的差距,实质中间会有一些小的问题,这些问题是意想不到的,需要去思虑,去解决,这是很锻炼人的。四,程序#include#include#defineucharunsignedchar#defineulongunsignedlong#defineuintunsignedintucharidatawelcome16=clock;/定义第一行显示数组ucharidatalwelcome16=clock;/定义第一行显示数组ucharidatallwelcome16=clock;/定义第一行显示数组ucharidatalllw

9、elcome16=clock;/定义第一行显示数组ucharidatasslcdtimer16=00:00:00;ucharidatatsslcdtimer16=00:00:00;ucharidatalcdtimer16=00:00:00;/定义第二行显示数组ucharidatamlcdtimer16=00:;/定义第二行显示数组ucharidatahlcdtimer16=:00:;/定义第二行显示数组ucharidatasetlcdtimer16=00:01:00;uchartimecount;uchartemps;bittimeflag;bitsstimeflag;sbitring=P20

10、;/蜂鸣闹铃sbite=P27;/显示器sbitrw=P26;/显示器sbitrs=P25;/显示器sbitP10=P10;/测试用闪灯sbitKey=P32;/秒表暂停,清零sbitKey0=P33;/调时,设定闹钟时间,秒表选择sbitKey1=P34;/调时,设定闹钟时间改变ucharth1_f;/在中断中装载的T0的值高8位uchartl1_f;/在中断中装载的T0的值低8位uintm=0;uintn=0;ulongi;uintf=0,g=1;uintj,k;ucharcodefreq314=0 xF2,0 x42,0 xF3,0 xC1,0 xF5,0 x17,0 xF5,0 xB6

11、,0 xF6,0 xD0,0 xF7,0 xD1,0 xF8,0 xB6,0 xF9,0 x21,0 xF9,0 xE0,0 xFA,0 x8B,0 xFA,0 xD7,0 xFB,0 x68,0 xFB,0 xE8,0 xFC,0 x5B,0 xFC,0 x8D,0 xFC,0 xEE,0 xFD,0 x44,0 xFD,0 x6D,0 xFD,0 xB4,0 xFD,0 xF4,0 xFE,0 x2D,;/音乐频率表,低音,中音,高音,系统振荡频率11.0592MHzuintcodesong1=26,25,23,25,31,26,25,26,23,25,26,25,23,22,21,16,

12、25,23,22,22,23,23,23,26,23,22,21,25,23,22,21,16,21,15,26,25,23,25,31,26,25,26,23,25,26,25,23,22,21,16,25,23,22,22,23,23,23,26,23,22,21,25,23,22,21,16,21,15;编制音乐/*软件延时函数(系统晶振为11.0592MHz),延时时间约为40s/入口条件:无符号整型变量del1,最后的延时时间为(del1*40)s/*voiddelay(uintdel1)uchardel2;for(;del10;del1-)for(del2=10;del20;del

13、2-);/*液晶显示器判忙函数/*voidbusy()uchartemp;temp=0 x00;rs=0;rw=1;while(temp&0 x80)=0 x80)P0=0 xff;e=1;temp=P0;e=0;/*向液晶显示器写命令函数/*voidWR_Com(uchartemp)busy();rs=0;rw=0;P0=temp;e=1;e=0;/*向液晶显示器写数据函数/*voidWR_Data(ucharnum)busy();rs=1;rw=0;P0=num;e=1;e=0;/*向液晶显示器写入显示数据函数入口条件:液晶显示器行首地址(指示第一行还是第二行)和待显示数组的首地址/*/v

14、oiddisp_lcdchar(ucharaddr,uchartemp1)/WR_Com(addr);delay(100);WR_Data(temp1);/voiddisp_lcd(ucharaddr,uchar*temp1)uchari;WR_Com(addr);delay(100);for(i=0;i0;i-)P0=0 x30;rs=0;rw=0;e=1;e=0;delay(100);P0=0 x38;rs=0;rw=0;e=1;e=0;delay(100);/*液晶显示器复位函数/*voidlcd_Reset()WR_Com(0 x01);delay(100);WR_Com(0 x06)

15、;delay(100);WR_Com(0 x0c);delay(100);/*外面中断函数,秒表暂停,清零/*voidmodess()interrupt0using0delay(10000);n+;if(n=3)n=0;/*外面中断函数,模式选择/*voidmodepp()interrupt2using1delay(30000);m+;if(m=6)n=0;if(m=7)m=0;/*准时/计数器中断函数,1S及0.01S/*voidtimer0()interrupt1using2TH0=0 xdc;TL0=0 x23;sstimeflag=1;if(-timecount=0)timecount

16、=100;timeflag=1;/*准时/计数器中断函数,装入音乐频率计数初值/*voidtimer1()interrupt3using3TL1=tl1_f;TH0=th1_f;/调入预准市价ring=!ring;/取反音乐输出IO/*主函数/*voidmain()P10=1;lcd_ini();lcd_Reset();/*for(i=0;i=0 x3a)sslcdtimer11=0 x30;sslcdtimer10+=1;if(sslcdtimer10=0 x3a)sslcdtimer10=0 x30;sslcdtimer8+=1;if(sslcdtimer8=0 x3a)sslcdtime

17、r8=0 x30;sslcdtimer7+=1;if(sslcdtimer7=0 x36)sslcdtimer7=0 x30;disp_lcd(0 xc0,sslcdtimer);if(n=1)/秒表暂停disp_lcd(0 xc0,sslcdtimer);if(n=2)/秒表清零disp_lcd(0 xc0,tsslcdtimer);for(i=0;i=3)/时钟程序,只要不是调时,就素来运行IE=0 x86;if(timeflag=1)timeflag=0;lcdtimer11+=1;if(lcdtimer11=0 x3a)lcdtimer11=0 x30;lcdtimer10+=1;if

18、(lcdtimer10=0 x36)lcdtimer10=0 x30;lcdtimer8+=1;if(lcdtimer8=0 x3a)lcdtimer8=0 x30;lcdtimer7+=1;if(lcdtimer7=0 x36)lcdtimer7=0 x30;lcdtimer5+=1;if(lcdtimer5=0 x3a)lcdtimer5=0 x30;lcdtimer4+=1;if(lcdtimer4=0 x33&lcdtimer5=0 x35)lcdtimer5=0 x30;lcdtimer4=0 x30;if(m=0)disp_lcd(0 xc0,lcdtimer);if(!Key1)

19、/关掉闹钟g=0;if(lcdtimer8=setlcdtimer8&lcdtimer7=setlcdtimer7&lcdtimer5=setlcdtimer5&lcdtimer4=setlcdtimer4)f=1;/开启闹钟,播放音乐if(f&g)/*ring=1;delay(10000);ring=0;f=0;*/IE=0 x8e;j=song1i/10-1;k=2*(song1i%10-1);th1_f=freqjk;/取出对应的准市价送给T0tl1_f=freqj+k;TR1=1;for(n=0;n=0 x3a)lcdtimer8=0 x30;lcdtimer7+=1;if(lcdti

20、mer7=0 x36)lcdtimer7=0 x30;disp_lcd(0 xc0,lcdtimer);delay(8000);mlcdtimer11=lcdtimer11;mlcdtimer10=lcdtimer10;mlcdtimer5=lcdtimer5;mlcdtimer4=lcdtimer4;disp_lcd(0 xc0,mlcdtimer);while(m=2)/调时时if(!Key1)delay(10000);lcdtimer5+=1;if(lcdtimer5=0 x3a)lcdtimer5=0 x30;lcdtimer4+=1;if(lcdtimer4=0 x32&lcdtim

21、er5=0 x34)lcdtimer5=0 x30;lcdtimer4=0 x30;disp_lcd(0 xc0,lcdtimer);delay(8000);hlcdtimer11=lcdtimer11;hlcdtimer10=lcdtimer10;hlcdtimer8=lcdtimer8;hlcdtimer7=lcdtimer7;disp_lcd(0 xc0,hlcdtimer);while(m=3)/显示闹铃时间if(!Key1)delay(10000);disp_lcd(0 xc0,setlcdtimer);while(m=4)/调闹铃分if(!Key1)delay(10000);setlcdtimer8+=1;if(setlcdtimer8=0 x3a)setlcdtimer8=0 x30;setlcdtimer7+=1;if(setlcdtimer7=0 x

温馨提示

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

最新文档

评论

0/150

提交评论