




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机实训课题 电子时钟班级 11电气本1班学号4110211140姓名 陈后亥指导教师叶文通E| 期2013.12.302014.1.3摘要随着时代的进步,越来越多的电子厂品趋向于低成本,高性能,耐用性好的方向发展。特别是趋向于自动化控制的方向走。89c51作为控制芯片是最好不过的选择啦。它具有强大的功能,并且简单易于操作,安全性与稳定性较高,价格便宜,适合中小型电 子厂品开发中的控制器。就像我们的课程设计,基于 89c51单片机的电子时钟的课程设 计。这款课程设计用到的主要材料有 89c51单片机,1602液晶显示屏,矩阵键盘,以及 一些电容电阻元件等等。使用89c51作为电子时钟的控制器
2、很简单,就是由于其经济型与稳定性和易操作性。 显示电路上,选择使用1602液晶显示屏上。1602不仅操作上臂数码管简单许多,而且 使用1602能在很大程度上是电路图尽量简化,便于操作与错误的检修。并且1602价格也比较便宜。基于89c51电子时钟的设计,利用了单片机内部的一个自带定时 /计数器来实现定时 功能,并通过内部程序,实现对时分秒,年月日这几个输出数值的自增,并且通过编写 程序,实现通过键盘控制时分秒,年月日大小的调整,这是必要的功能。最后通过1602液晶显示电路将时间显示在其上。这样的电子时钟比较精准,其主要误差来源与晶振的误差,即使是这样,他的误差也 只是微妙级别,对于日常生活中的
3、时间计数是足够的。关键词:89c51单片机;1602液晶显示屏;矩阵键盘;keil软件摘要1单片机简介1.1 单片机概述1.2 单片机基本结构2 1602液晶显示屏简介1.1 1602显示原理1.2 1602指令集合3电子时钟硬件设计3.1 功能框图3.2 单片机复位与晶振电路3.3 1602显示电路3.4 总体电路设计4电子时钟软件设计4.1 程序流程框图4.2 程序源代码参考文献致谢1单片机简介1.1 单片机概述单品微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit ), 常用英文字母的缩写MCUS示单片机,单片机又称单片微控制器,它不是完成某个逻辑 功
4、能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和 计算机相比,单片机只缺少了 I/O设备。单片机作为应用最广泛的控制系统之一,具有体积小,易于控制,价格便宜,安全 可靠等等优良的性能而被广泛的关注。无论是小到儿童玩具,到工业控制系统,大到航 大航空系统的设计与操作之中,随处可见单片机的踪影。大学电子专业,电气专业,通 信等专业开设单片机课程,对人才的培养无疑是有着重大的意义的。单片机的学习,主要是注重于对单片机内部存储结构,引脚的结构与功能,以及各 引脚之间的区别,用法上面的不同。同样,单片机是一门技术,需要大量的动手实践才 能真正的掌握其基本原理,才能真正的控制单片
5、机并设计其程序,使其运行在指定的程 序之下。由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPUB专用处理器发 展而来。最早的设计理念是通过将大量外围设备和 CPUB成在一个芯片中,使计算机系 统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。其中最成功的是INTEL的8031,此后在8031上发展出了 MCS5保列单片机系统。 因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARME经发展出了 32位的主频超过300M的高端单片机,直到目前基于8031的单片机还在广泛的使用。在很多 方
6、面单片机比专用处理器更适合应用于嵌入式系统,因此它得到了广泛的应用。事实上 单片机是世界上数量最多处理器,随着单片机家族的发展壮大,单片机和专用处理器的 发展便分道扬镀。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同 时工作!单片机的数量不仅远超过 PC机和其他计算的总和,甚至比人类的数量还要多。1.2 单片机基本结构单片机由运算器、控制器、存储器、定时/计数器、I/O输入输出通信接口等等2 1602液晶显示简介2
7、.1 1602显示原理图2.1 1602显示屏如图2.1所示为1602显示屏的实物图,共有16各管脚,其管脚功能如下所示:1号管脚为GND是电源接地端。2号管脚为VCC是电源端,接到5v电源。3号管脚为VCOM5,为屏幕显示亮度调节段,通过一个电位器来实现亮度调节。4号管脚为RS端,为数据/指令输入控制端。5号管脚R/W端,为读/写控制端。6号管脚为LCDEFNrn,显示屏使能端。7号至14号管脚为数据/指令输入端口。15号与16号管脚为电压偏置端。1602显示屏的控制是通过4、5、7号管脚来实现控制它数据指令的写入也数据的显 示功能,他的一半电路接线法是:1号与16号管脚接地;2号与15号管
8、脚姐5V直流电 源;3号管脚接一滑动变阻器并串联一电阻实现电流的调节实现显示亮度的调节;4号、5号、6号分别为控制端,接在单片机的任意三个管脚上,实现控制功能;7号至14号管脚为数据输入端;接在单片机的一组I/O 口上,实现数据的传输与通信。器电路的一 般电路接法如图2.2所示。1602显示屏的工作原理是根据它的时序图来实现的,如图 2.3所示,为1602的时 序图。由于本课程设计只需要将数据写于 1602显示屏上,所以可以将R/W端一直拉低, 始终处于向1602写数据/指令的状态;在向1602写指令的时候,给RS一个高电平,进 入写指令的初始段,之后再给 E端口高电平,随之将数据通过一组I/
9、O 口送至1602的 数据/指令输入端,即实现指令的输入;对于数据的输入,与指令的输入相似,唯一不 同之处在于,指令的输入,RS位高电位,而数据的输入时,RS为低电位。对于时序图 上面的标注的时间,都是以毫秒来计数的,而单片机的机器周期或是说指令周期是以微 妙来计数的,所以在此就不过多的讨论时间的准确性问题。但对于一些其他的对时间要 求很严格的芯片,就不能将时间差不考虑,不如说温度检测传感芯片18B20等等;1602 可以显示两行数据,每行16个字符,不能显示汉字。在进行操作的时候需要 注意的是每行显示数据地址的选择。1602的第一行可见地址为输入指令 0X8Q第二行 的地址为输入指令0X80
10、+0X4球实现的。图2.3 1602时序图2.2 1602指令集合1602的指令如下所歹【:显示模式设置指令:一般使用0X38;显示开/关光标设置:00001DCB D=1C=1B=1000001NS: N=1S=1指针设置:0X80+4址;清屏指令:0X01;开显示;D=0关显示;显示光标;C=0 不显示光标;光标闪烁;B=0 光标不闪烁;写后指针加一;N=0写后屏幕移动;S=0写后指针减一; 写后屏幕不移动;1602的指令并不是很多,但是他最重要的是一定的顺序,他的指令从左一般的顺序第一步清屏,将指令0X01输入到1602中,实现平平功能。第二步选择显示方式,我们的电子时钟并不需要光标的闪
11、烁与显示,所以我们选择 0X38。第三步选择是否需要移屏,不需要的话则输入0X06;最后设置显示的地址,输入0X80+4址码(地址码为要在1602显示上的第几位)。若需要输入到第二行,则输入 0X80+0X40地址码。3电子计时器硬件设计3.1 功能框图功能框图3.1所示,可由3个部分组成。如下:第一部分:通过USB的物理特性,再通过芯片MAX23如现在线提供单片机5V电压 第二部分:单片机控制模块,有编写程序控制单片机引脚点位的变化来时时控制1602的显示。第三部分:显示模块,为1602液晶显示 第四部分:键盘扫描控制模块。图3.1电子计时器功能3.2 单片机复位与晶振电路单片机的工作需要外
12、部固定提供的频率,才能使单片机正常的工作,复位电路是为 了方便单片机调试的时候便于恢复。该电路使用的晶振时11.0592MHZ其基本的机器周期时1微妙。复位电路是通过电容的充放电来实现的。具体来说,在单片机上电时,电容进行充 电,充满后电容支路断开。在这整个过程中产生了一个脉冲信号并且连接到复位脚上实 现复位。对于案件复位的原理也是通过电容的放电来实现的,只不过这次是利用电容的 放电性质,在两个电阻分压的基电压在加一个放电时的脉冲电压,产生脉冲信号实现 复位的。具复位与晶振电路如图 3.2所示。Cl .1 30pF -* <TEKT-fi -.X1 .-: sJ> C2 <r
13、 . 一30pF11- wTE端Tm - -"U119>XTAL1AT09C51- 12MHH -XTAL2图3.2复位电路3.3 1602显示电路本实验使用的1602液晶为5V电压驱动,带背光,可显示两行,每行 16个字符, 不能显示汉字,内置含128个字符的ASCII字符集子库,只有并行接口,无用行接口。1602的具体电路接法见上一章。19其事物图如图3.3所示CO Q LU >C/) D LUCO > 0btMm q ggz> > >tr QT LU QQQQQQQQ图3.3 1602 液晶显示实物图3.4 总体电路设计总体电路是实现电路设计
14、功能的一个重要部分,它是整个设计思路的载体,所以, 设计一个合理,简单的电路无论是对程序的编写还是事物的制造都是非常有好处的,我 们的课程设计整体电路如下图 3.4所示。它主要由:复位电路;晶振电路;单片机控制电路;键盘扫描电路;1062液晶显示电路组成。同时,在P0口上接了一个排阻,用作上拉电阻。这是由于 P0口内部没有 上拉电阻,所以输出的电流很小,无法驱动液晶显示,所以增加一个上拉电阻来驱动液 晶显小0对于整体电路图中,所用到的元器件主要有:电解电容:C1,C2;电阻:R5, R7;大小为30PE大小分别为:10KQ ,220 Q 。排阻:RP1; 单片机:U1 液晶显示屏: 蜂鸣器:1
15、个 按钮:4个。LCD1大小为型号为型号为4.7KQ。AT89C51 1602LCD.4电子计时器软件设计4.1 程序流程框图程序流程图是程序编写的原始理论依据,具有较强的综合体概括性和综合理论 性。好的程序流程图不仅能使得程序的编写变得简单,减少程序员的负担,同时还有利 于编程效率的提高,有益于错误的查找,这样可以大大的增加工作效率,减少成本,提 高竞争力。如图4.1为本电路的程序流程图。由于比较复杂,所以一些细节在图上有所 省略,省略部分在程序流程图的右边有详细的注解。部分注解:初值的装入只要指 电子时钟刚上电时定时 所定义好的时间进行, 是2020年12月21号 时间为00:00:00
16、;按键判断是指首先 判断功能键是否按下,若 按下了,则进行时间调节 如果没有按下,则进入下 层。时间的判断与清 零是指:秒到六十则自动 清零且分加一,分到了六 十自动清零,时加一,时 到二十四,则时清零,月 一.年月日的调节相同每判完一次时间需重新判断是否有键按下。图4.1电子计时器流程框图4.2 程序源代码#include<reg52.h>#define uchar unsigned char/S4用作功能键#define uint unsigned int sbit key1=P2AQ;sbit key2=P2A1;sbit key3=P2A2;/S13用作增加键/s17用作减
17、小键sbit dula=P2A6;sbit wela=P2A7;液晶使能端液晶数据命令选择端/分别是定时器0和定时器1的自加数/分别代表时间的秒,分,时传说中的标识符sbit led=P0A1;sbit beep=P2A4;sbit lcden=P3A4;sbit lcdrs=P3A5;uchar t0;uchar miao,fen,shi;uchar num;uchar keylnum;uchar flag1,flag,flag_ri;uchar afen,ashi,amiao,miao1,fen1,shi1;void write_sfm(uchar add,uchar date);ucha
18、r code table=" chen hou hai " /第行是自己的名字 /void delay(uint xms)/延时函数uint i,j;for(i=xms;i>0;i-) for(j=110;j>0;j-);/*其1602设置 */void write_com(uchar com)lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date) lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init
19、_lcd()dula=0;wela=0;lcden=0;write_com(0x38);/显示模式设置write_com(0x0c);0x0f 开显示显示光标光标闪烁write_com(0x06);0x06 读或写字符后地址指针加一,且光标加一write_com(0x01);/清屏所有显示清零write_com(0x80);/使光标指向外部0x80是第一位指针void led1()beep=0;delay(100);/*beep=1;键盘检测程序 */void keyscan()if(flag1=1)if(key1=0|key2=0|key3=0)delay(5);if(key1=0|key2
20、=0|key3=0) while(!key1|!key2|!key3);beep=1;flag1=0;if(key1=0)delay(5);if(key1=0)key1num+;记录keyl被按下的次数 while(!key1);led1();if(key1num=1)flag=0;TR0=0;/在设置时间是关闭定时器write_com(0x80+0x40+10);write_com(0x0f);同时打开显示光标if(key1num=2)flag=0;write_com(0x80+0x40+7);if(key1num=3)write_com(0x80+0x40+4);if(key1num=4)
21、flag=1;TR0=1;write_com(0x80+0x40);write_com(0x0c);write_date('R');write_date('i');write_com(0x80+0x40+3);write_sfm(4,ashi);用来显示设置闹钟时候的情景write_sfm(7,afen);write_sfm(10,amiao);if(key1num=5)flag=1;write_com(0x80+0x40+10);write_com(0x0f);同时打开显示光标if(key1num=6)write_com(0x80+0x40+7);if(key
22、1num=7)write_com(0x80+0x40+4);if(key1num=8)flag=0;key1num=0;write_com(0x80+0x40);write_date('');write_date('');write_sfm(4,shi);write_sfm(7,fen);write_sfm(10,miao); write_com(0x0c);if(key1num!=0)if(key2=0)delay(5);if(key2=0)while(!key2);led1();if(key1num=1|key1num=5)/判断if(flag=0)条件,判
23、断是不是为 0,为0就处于非闹钟设置状态,为 1就是闹钟设置状态miao+;if(miao=60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);)if(flag=1)(amiao+;if(amiao=60)amiao=0;write_sfm(10,amiao);write_com(0x80+0x40+10);)if(key1num=2|key1num=6)(if(flag=0)(fen+;if(fen=60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+7);)if(flag=1)(afen+;if(
24、afen=60)afen=0;write_sfm(7,afen);write_com(0x80+0x40+7);)if(key1num=3|key1num=7)(if(flag=0)(shi+;if(shi=24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);if(flag=1)ashi+;if(ashi=24)ashi=0;write_sfm(4,ashi);write_com(0x80+0x40+4);if(key3=0)delay(5);if(key3=0)while(!key3);led1();if(key1num=1|key1num=5)
25、if(flag=0)miao-;if(miao=-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);if(flag=1)amiao-;if(amiao=-1)amiao=59;write_sfm(10,amiao);write_com(0x80+0x40+10);if(key1num=2|key1num=6)if(flag=0)fen-;if(fen=-1)fen=59;write_sfm(7,fen);wAte_com(0x80+0x40+7);if(flag=1)afen-;if(afen=-1)afen=59;write_sfm(7
26、,afen);write_com(0x80+0x40+7);if(key1num=3|key1num=7)if(flag=0)shi-;if(shi=-1)shi=24;write_sfm(4,shi);write_com(0x80+0x40+4);if(flag=1)ashi-;if(ashi=-1)ashi=24;write_sfm(4,ashi);write_com(0x80+0x40+4);/*定时器设置函数*/void init_timer()定时器初始化设置/定时器0高位和低位赋上初值TMOD=0x11;TH0=(65536-45872)/256;TL0=(65536-45872)
27、%256;EA=1;/开总中断ET0=1;打开定时器0的中断TR0=1;启动定时器0void init()uchar num;fen=0;miao=0;shi=0;t0=0;key1num=0;init_lcd();for(num=0;num<15;num+)输出 LCD 端的第一行显示函数把数字分离再显示 write_date(tablenum); delay(5); write_com(0x80+0x40+6); write_date(':'); 冒号 delay(5); write_com(0x80+0x40+9); write_date(':'); delay(5); write_sfm(10,miao); write_sfm(7,fen); write_sfm(4,shi); init_timer(); void write_sfm(uchar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙古机电职业技术学院《张量与变分原理》2023-2024学年第二学期期末试卷
- 曲阜远东职业技术学院《编程语言与技术》2023-2024学年第二学期期末试卷
- 小学防震安全教育
- 牙列缺损的分类与设计
- 噪声抵消技术设计原理
- 公司2024年会流程安排
- 2025中外合作企业技术咨询合同范本
- 2025林地买卖合同范本样本
- 幼儿园语言类课程设计
- 2025石油交易合同市场
- 穿孔机作业指导书
- 统考考生本科志愿样表
- 人教鄂教版六年级下册科学全册知识点汇总
- 新航道托福雅思培训班
- 数车实训图纸
- 1小学英语教师面试:听力课SpecialdaysinApril全英文教案及试讲逐字稿
- 人教版小学数学一年级下册期末黄冈测试卷(三)
- GB/T 38058-2019民用多旋翼无人机系统试验方法
- GB/T 35354-2017船舶和海上技术大型游艇甲板起重机和登船梯强度要求
- 湖南省2023年普通高等学校对口招生考试电子电工
- 阅读训练,(数句子)
评论
0/150
提交评论