下载此文档

电子时钟设计方案及程序.docx


文档分类:通信/电子 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
电子时钟设计简介该设计主要由单片机 AT89C51 和液晶显示器组成,实现常用的实时电子钟功能。利用可编程芯片 AT89C51 强大的功能,我们了实现日历功能、时钟功能。该时钟使用液晶显示器作为显示模块,使用 3 个弹性小按键作为输入模块,调节年、月、日、星期、时、分、秒。,该时钟系统可分输入部分、处理部分和显示数据部分。其中输入部分是键盘输入数据调整要显示的内容,处理部分单片机接收并通过算法处理键盘输入的信息变成显示模块所能接受的信息,显示部分是用来实时显示处理部分处理后的数据。输入模块 处理模块 显示模块输入模块我们选用三个独立弹性小按键来实现,选用矩阵式键盘则太浪费资处理模块我们选用了 STC 公司的 STC89C52 芯片来,与 Atmel 公司生产的AT89S52 一样,也是 40 脚双列直插式封装,这里芯片对刚学单片机的人来说容易入手,其功能也很强大,用来实现一个电子钟完全足够了。显示部分我们可有两种选择:数码管和 1602 液晶显示器。实现一个电子钟若用数码管则需 6 个,所占空间相对大了些,而且我们还要实现日历的功能,需要更多的数码管,所点空间翻倍,而且还会造成单片机 I/O 引脚滥用甚至不够用,用液晶显示器来实现则方便得多,界面也相对友好,但液晶显示器有个缺点就是价格比较贵。因此我们最终选择了 1602 液晶显示器。另处独立弹性小按键具有价格便宜、容易获得、容易控制等特点。、计算与电路仿真1、定时器与中断原理电子钟主要是利用单片机的定时器/计数器和中断来实现。定时器实际是加 1计数器,单片机每运行一个机器周期定时器就自动加 1,当计到所定的数 N 时,单片机就产生一次中断,停下所做的工作,转而去执行中断服务程序。单片机每个机器周期等于外部晶振的 12 个振荡周期,当外部晶振是 12MHz 时,则每个机器周期的时间是T = 12×1/12=1µm (2-1)cy定数器设为 N 时,即每计到 N 时产生一次中断,而一次中断的时间为:t = N×T µm (2-2)cy当产生 X(x 根据 N 来设置,两者之积为 1000000)次中断后我就知道过了 1s,再通过液晶显示出来,这样就达到了让液晶每隔一秒跳一下的目的了。2、proteus 仿真结果3、液晶部分图 4-3液晶 1、2 端口分别是工作电源的负、正极,15、16 是液晶背光灯电源正负极,R4 起限流作用,避免电流过大烧坏背光灯。第 3 端口还可接一电位器,调节液晶显示对比度。无标号的 8 个端口是数据端,通过一上拉电阻接到单片机的P0 口。(如必要,含有流程图)1、程序流程图流程图中的 X 表示液晶中秒、分、时、星期、年、月、日中的任一个。开始初始化按键 2 被按下X 闪烁扫描键盘是否被电                  按键 3 被按下           按键 4 被按下N按下的同时定时器是否到 1 秒不掉NY YNY液晶 X 闪烁X 加 1X 减 1液晶 X 闪烁往液晶送新数据掉电 按 2 直到 X 不闪烁结束图 5-1 主程序流程图 图 5-2 ,比预计的还要好。但由于中断函数中代码较长,故存在一定程度的误差,用秒表测试大约为每 5 分钟慢了一秒,这个问题是用单片机定时器来数时所无法解决的,中断函数必定会较长,处理这一函数会花费一定的时间这就无法做到让时钟走得很精确。解决方法是用一时钟芯片来实现,由于时钟芯片不好买又比较贵(新的 20 几块一片),暂时就不考虑了,有机会再尝试。1. 源程序//主函数放在最后面#include <>#define uchar unsigned char#define uint unsigned intsbit rs=P2^4;//定义液晶数据命令选择端sbit lcden=P2^5;//液晶使能端sbit s1=P2^0;//按键 1sbit s2=P2^1;//按键 2sbit s3=P2^2;//按键 3uchar count,s1num;char shi,fen,miao;//时、分、秒char year,month,day,week;//年月日星期void delay(uint x)//延时子程序{uint j,k;for(j=x;j>0;j--)for(k=110;k>0;k--);}//----液晶写命令功能---void (){rs=0;lcden=0;;delay(5);lcden=1;delay(5);lcden=0;}//---液晶写数据功能-----void write_date(uchar date){rs=1;lcden=0;P0=dat

电子时钟设计方案及程序 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息