1.熟悉DS1302的工作原理与过程
2.熟悉LCD1602液晶屏的工作原理和过程
3.熟悉掌握51的c程序编写
4结合DS1302和LCD1602液晶屏设计出电子表
1.2 设计内容1.使液晶屏中显示秒分时日月年星期等功能
2.液晶屏中的初始时间可调节
3.液晶屏中的时间日期可调
4每次调节时都有光标闪烁
1.3 设计目标1.在51开发板上能够实现时间日期的显示
2.学会开发板的基础知识
3.可稳定调节和计时
4.熟悉掌握c语言的编写
2 方案论证用开发板进行设计时,可以采用keil4软件中51功能,在其中编写c语言,然后生成hex文件,根据设计的需要查资料进行编写。对于新手来说,这是一个不错的选择,可以随时进行错误的识别和更改,大大提高了效率,为以后的单片机学习打下基础。在用开发板进行编写程序时,先进行主函数的编写,然后根据主函数所需要的东西,再继续编写其他程序。在主函数中,主要是按键的设置和时间调节的循环。然后再加入lcd和ds1302的功能便可以实现时钟的显示。这样做不仅节约了成本,还为以后编写程序打下了基础。
2.2 用实物进行电子钟的用实物进行设计,需要进行元器件的焊接,并且在焊接过程中易出现错误导致设计的失败,而且用汇编语言进行编写程序时,会增加设计难度,通常来说,一条c语言可以转化成多条汇编语言,相比较,用开发板进行设计更方便,所以选择用开发板进行设计。
3 硬件设计开发板通过USB自动下载电路下载开发板连接电脑的装置,然后给开发板供电,然后通过DS1302时钟芯片、LCD1602、开关、STC89C52芯片各自引脚连接在一起,组成基本的硬件连接,然后在keil4上面编写软件,经过开发板自带的烧录软件运行程序。
图一:系统工作原理图
3.2 部分电路图
图二:STC89C52芯片引脚连线
图三:LCD1602液晶屏引脚连线
图四:开关引脚连线
图5:USB自动下载电路引脚连线
图6:DS1302时钟芯片引脚连线
3.3 I/O分配LCD1602的DB0到DB7 8个引脚接p0口,RS接p2.6口,RW接p2.5口,E接p2.7口。如图三所示
开关的K1接RXT(p3.1),K2接TXD(p3.0),K3接p3.2,K4接p3.3。如图四所示
DS1302芯片的SCLK引脚接p3.6,I/O引脚接p3.4,CE引脚接p3.5。如图六所示
3.4 元器件选型LCD1602液晶屏一个
DS1302时钟芯片一个
STC89C52芯片一个
晶振、电阻、电容、开关若干
下载开发板自带的烧录软件,调试运行结果如下
图7:运行结果
图8:运行初始状态
图9:调节后的时间
在调试过程中,一开始没有光标的闪烁,不确定具体调节的是那一位,后来根据lcd1602的原理设置其闪烁,知道调节后是哪一个时间和日期。后来在设置星期的时候怎么都设置,怎么都不出来7,后来检查源程序,发现程序中不包含7,修改以后,可以实现时间日期的准确调节,并能够准确的按照时钟连续运行下去。
设计心得
经过这次课程设计,让我充分认识了自己的不足,太多的基础知识不知道,导致这个过程变得非常艰难。最开始的时候是准备做一个上课讲过的简单的时钟,仅仅包含有时分秒,直接弄上一个编程语言然后就可以实现了,但是还有许多的
定义不知道如何去设置,于是就在开发板上面找到包含时分秒日月星期年的程序,然后看最基础的教学视频,把lcd1602和1302时钟芯片还有开关等组装成一个时钟秒表,其中的程序有错误的,有何自己设计不同的,于是便根据最基本的知识来看程序,然后进行修改,稍微有点错误就会导致程序的无法进行,可见学习单片机是一个严谨的过程,容不得丝毫马虎。反正是最后做出来的时候,只有一个感觉,太累了,好不容易。如果基础知识牢固的话,那么现在的我应该是很随意的就设计出来这个电子表,但是实际情况却不是这样,花了大量的时间去重新学习基础知识,使设计缓慢的进行下去。
在设计的过程中,遇到过很多的困难,像windows8上面装keil4,出现了不兼容的问题,在网上多处搜索得到的答案都是换windows7,但问了多个以前装过keil4的同学,终于知道了如何解决,设置系统不更新,然后根据开发板赠送的光盘上面的步骤一步步完成了安装,然后对整个程序进行修改,无奈的是改完程序后编译没有错误,但是就是显示不出来东西,找了好久也找不到解决的办法,只好用源程序进行简单的修改来实现我的功能。可以这样说,这次的课程设计是一次不成功的设计。在以后的学习中,一定要认真学习,熟练的掌握单片机与编程知识。
4.2 lcd1602源程序
void LcdDisplay()
{
LcdWriteCom(0x80+0X40);
LcdWriteData('0'+TIME[2]/16); //时
LcdWriteData('0'+(TIME[2]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[1]/16); //分
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[0]/16); //秒
LcdWriteData('0'+(TIME[0]&0x0f));
LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16); //年
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16); //月
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16); //日
LcdWriteData('0'+(TIME[3]&0x0f));
LcdWriteCom(0x8D);
LcdWriteData('0'+(TIME[5]&0x07)); //星期
4.3 1302时钟源程序
完整的Word格式文档51黑下载地址:
基于51单片机的电子表.docx
(1.06 MB, 下载次数: 19)
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |