版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目目 录录 第第 1 章章 系统综述系统综述.3 第第 2 章章 开发平台及模块介绍开发平台及模块介绍.4 2.1 开发工具.4 2.2 处理器芯片.5 2.3 lcd 显示模块.5 2.4 时钟芯片 pcf8563 .7 第第 3 章章 系统的软硬件设计系统的软硬件设计.8 3.1 硬件电路设计.8 3.1.1 最小系统设计电路.8 3.1.2 时钟模块电路.8 3.1.3 显示模块电路.9 3.2 软件设计.10 3.2.1 系统软件设计内容.10 3.2.2 时钟芯片驱动程序.13 3.2.3 lcd 显示子程序.16 第第 4 章章 调试及结果调试及结果.18 4.1 调试中所遇问题以
2、及解决方法.18 4.2结果.18 结束语结束语.19 致谢致谢.20 参考文献参考文献.21 实用数字万年历设计实用数字万年历设计 摘要摘要 本文设计了一种实用数字万年历,该系统的设计是以 at89c51 单片机为核心控制 器,外围连接时钟模块,键盘模块,液晶模块,日历模块等。这种电子时钟不仅具有了 一般电子时钟的基本功能,显示年月日时分秒,而且可以进行闹钟设置。系统软件使用 单片机c51语言进行编程。 关键词关键词:时钟;单片机;液晶;c51 语言;万年历 第第 1 章章 系统综述系统综述 电子时钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码 头、剧院、办公室等公共场所
3、,给人们的生活、学习、工作、娱乐带来极大的方便。随 着技术的发展,人们已不再满足于钟表原先简单的报时功能,希望出现一些新的功能, 诸如日历的显示、闹钟的应用等,以带来更大的方便,而所有这些,又都是以数字化的 电子时钟为基础的。因此,研究实用电子时钟及其扩展应用,有着非常现实的意义,具 有很大的实用价值。 由于数字集成电路技术的发展和采用了先进的石英技术,使电子钟具有走时准确、 性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。虽然现 在市场上已有现成的电子钟集成电路芯片出售,价格便宜,使用也灵活,如可以随意设 置时、分、秒的输出,改变显示数字的大小等,并且由于集成电路技术的
4、发展,特别是 mos集成电路技术的发展,使电子钟具有体积小、携带方便,但是这里介绍的实用电子 钟可以满足使用者的一些特殊要求,输出方式灵活、功耗低、计时准确、性能稳定、维 护方便等优点。 实用电子时钟是一个时间控制系统,既能作为一般的时间显示器,同时可以根据需 要扩展其功能。 本系统上电自检后,实时显示小时、分钟、秒、日历和闹钟开关等指示信息,通过 按键可实现校对时间、设置闹钟时间等功能。当闹钟时间到时,单片机通过蜂鸣器来实 现声音报警。 第第 2 章章 开发平台及模块介绍开发平台及模块介绍 2.1 开发工具开发工具 该系统的硬件电路图是由 proteus 完成的,其主要概述如。 proteu
5、s 提供了丰富的资源 :(1)proteus 可提供的仿真元器件资源:仿真数字和 模拟、交流和直流等数千种元器件,有30 多个元件库。( 2)proteus 可提供的仿真 仪表资源 :示波器、逻辑分析仪、虚拟终端、 spi 调试器、i2c 调试器、信号发生 器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路 中随意的调用。( 3)除了现实存在的仪器外, proteus 还提供了一个图形显示功能, 可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但 功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输 出阻抗。这些都尽可能减少
6、了仪器对测量结果的影响。 (4)proteus 可提供的调试 手段 proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信 号和数字信号。 软件仿真:支持当前的主流单片机,如 51 系列、avr 系列、pic12 系列、pic16 系列、pic18 系列、z80 系列、hc11 系列、68000 系列等。提供软件调试功能 ,提 供丰富的外围接口器件及其仿真 ram,rom,键盘,马达, led,lcd,ad/da,部分 spi 器件,部分 iic 器件。这样很接近实际。在训练学生 时,可以选择不同的方案,这样更利于培养学生。利用虚拟仪器在仿真过程中可以测 量外围电路的特
7、性,培养学生实际硬件的调试能力。 具有强大的原理图绘制功 能。电路功能仿真 :在 proteus 绘制好原理图后,调入已 编译好的目标代码文件: *.hex,可以在 proteus 的原理图中看到模拟的实物运行状 态和过程。 proteus 不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形 象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达 到的效果。 它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度 上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电 路修改、软件调试、运行结果等。 该系统还采用了 keil
8、uvision3 进行编程,其概述如下。 keil(arm 子公司)嵌入式开发工具专业制造商。keil 软件公司的产品包括 c 编译 器、宏汇编器、实时内核、调试器、模拟器、集成开发环境以及 8051、251,m7/arm9/cortex-m3 和 xc16x/c16x/st10 系列微控制器仿真开发装置。 keil ulink 的软件环境为 keil uvision 3。keil 系列软件具有良好的调试界面,优秀 的编译效果,丰富的使用资料。使其深受国内嵌入式开发工程师的喜爱。 嵌入式的微处理器模拟器可以模拟被支持的微处理器设备,包括指令集、片上外设、 外部激发信号。应用程序的变化可以用 v
9、ision3 逻辑分析器显示,可以看到微处理器 pin 码的变化状态和外设随着程序变化的状况。 2.2 处理器芯片处理器芯片 采用at89c51单片机作为系统的控制核心。时钟功能可以使用液晶显示时间、日历 及闹铃,有着智能化的人机界面。由于使用了单片机,整个系统可编程,系统的灵活性 大大增加了。另外,本方案可以方便的实现其他功能的扩展。 at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗 称单片机。at89c2051是一种带2k字节闪烁可
10、编程可擦除只读存储器的单片机。单片机 的可擦除只读存储器可以反复擦除100次。该器件采用atmel高密度非易失存储器制造技 术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存 储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一 种精简版本。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 2.3 lcd 显示显示模块模块 单片机的主要输出方式除了发光二极管、数码管之外,还有一种重要的输出模式: 液晶显示。液晶显示正被广泛应用于便携式消费电子产品领域。 lcd(liquid crystal dis
11、play)液态晶体显示器一般不会单独使用,而是将 lcd 面 板、驱动电路、控制电路集成在一个模块(moulde)上一起使用,简称 lcm。在单片 机系统中使用液晶显示模块具有以下的优点。 显示质量高:不同于阴极射线管显示器(crt)的不断刷新亮点,液晶显示器每 个点收到信号后就一直保持那种色彩和亮度,因此画面质量高,不闪烁。 数字式接口:液晶显示器均为数字式的,方便和单片机系统连接。 体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子的方向,使折射 率发送变化,从而达到显示的目的。比传统显示器要轻便。 功耗小:液晶显示器的功耗主要在内部电极和驱动 ic 上,因而耗电量很小。 本系统采用
12、的是 1602 型的 lcd 显示模块。1602 字符型 lcd 通常有 14 条引脚线 或 16 条引脚线的 lcd,多出来的 2 条线是背光电源线,vcc(15 脚)和地线 gnd(16 脚),其控制原理与 14 脚的 lcd 完全一样。液晶显示器如图 1 所示,引 脚功能见表 1。 图1 液晶显示器外形 表1 引脚功能 引脚符号功能说明 1vss一般接地 2vdd接电源(+5v) 3v0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对 比度最高(对比度过高时会产生“鬼影” ,使用时可以通过一个 10k 的电位器调整对比度) 。 4rs rs 为寄存器选择,高电平 1 时选择数
13、据寄存器、低电平 0 时选择指 令寄存器。 5r/w r/w 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写 操作。 6e e(或 en)端为使能(enable)端,下降沿使能。 7db0底 4 位三态、 双向数据总线 0 位(最低位) 8db1底 4 位三态、 双向数据总线 1 位 9db2底 4 位三态、 双向数据总线 2 位 10db3底 4 位三态、 双向数据总线 3 位 11db4高 4 位三态、 双向数据总线 4 位 12db5高 4 位三态、 双向数据总线 5 位 13db6高 4 位三态、 双向数据总线 6 位 14db7高 4 位三态、 双向数据总线 7 位(最
14、高位) (也是 busy flag) 15bla背光电源正极 16blk背光电源负极 2.4 时钟芯片时钟芯片 pcf8563 实时时钟选择 philips 公司的 pcf8563 芯片实现,它是一款工业级低功耗的 cmos 实时时钟日历芯片。它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有 的地址和数据通过 i2c 总线接口串行传递。最大总线速度为 400kbit/s,每次读写数据后, 内嵌的字地址寄存器会自动产生增量。pcf8563 是一款性价比极高的时钟芯片,它已被 广泛用于电表、水表、气表、电话传真、机便携式仪器等产品上。 pcf8563 具有以下基本特征: (1) 低工作电流
15、:典型值为 0.25a(vdd=3.0v,tamb=25时) ; (2) 400khz 的 i2c 总线接口(vdd=1.85.5v 时) ; (3) 可编程时钟输出频率为:32.768khz,1024hz,32hz,1hz; (4) 内含复位电路振荡器电容和掉电检测电路; (5) 四种报警功能和定时器功能; (6) i2c 总线从地址:读,0a3h;写,0a2h。 pcf8563 的芯片引脚排布及引脚介绍如图 2 所示: osci:振荡器输入; osco:振荡器输出; /int:中断输出(开漏,低电平有效) ; vss:接地; sda:串行数据 i/o; scl:串行时钟输入; clkout
16、:时钟输出(开漏) ; vdd 正电源。 图2 pcf8563芯片引脚排布及说明 第第 3 章章 系统的软硬件设计系统的软硬件设计 3.1 硬件电路设计硬件电路设计 3.1.1 最小系统设计电路最小系统设计电路 单片机要正常运行,必须具备一定的硬件条件,其中最主要的就是三个基本条件: (1)电源正常;(2)时钟正常;(3)复位正常。在 at89c51 单片机的 40 个引脚中, 电源引脚 2 根,晶振引脚 2 根,控制引脚 4 根,可编程输入输出引脚 32 根。最小系统连 接图如图 3 所示。 图 3 at89c51 最小系统连接图 3.1.2 时钟模块电路时钟模块电路 pcf8563 芯片的
17、工作原理如下:它有 16 个 8 位寄存器,一个可自动增量的地址寄存 器,一个内置 32.768khz 的振荡器(带有一个内部集成的电容) ,一个分频器(用于给实 时时钟 rtc 提供源时钟) ,一个可编程时钟输出,一个定时器,一个报警器,一个掉电 检测器和一个 400khz i2c 总线接口。i2c 总线从地址:读,0a3h;写,0a2h。 所有 16 个寄存器设计成可寻址的 8 位并行寄存器,但不是所有位都有用。前两个寄 存器(内存地址 00h,01h)用于控制寄存器和状态寄存器,内存地址 02h08h 用于时 钟计数器(秒年计数器) ,地址 09h0ch 用于报警寄存器(定义报警条件)
18、,地址 0dh 控制 clkout 管脚的输出频率,地址 0eh 和 0fh 分别用于定时器控制寄存器和 定时器寄存器。秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器, 编码格式为 bcd,星期和星期报警寄存器不以 bcd 格式编码。当一个 rtc 寄存器被读 时,所有计数器的内容被锁存,因此,在传送条件下,可以禁止对时钟/日历芯片的错读。 连接原理图如图 4 所示。 123456 a b c d 654321 d c b a title numberrevisionsize b date:5-a ug-2008 sheet of file:e:workfile例例例例例例例rs
19、485-ca n例例例例例例例例例例rs485-ca n.ddbdrawn b y: 1 2 3 45 6 7 8 os ci os co /in t vss vd d ou t scl sd a u400 pc f8563 32.768k x2 c400 15p vc c r400 5.1k r401 5.1k vc c pc f_scl pc f_sd a 图 4 pcf8563 连接原理图 3.1.3 显示模块电路显示模块电路 1602b 可以显示 2 行 16 个字符,有 8 位数据总线 d0-d7,和 rs、r/w、en 三个控 制端口,工作电压为 5v,并且带有字符对比度调节和背光
20、。lcd 显示模块与单片机的连 接如图 5 所示。 图 5 lcd 连接图 3.2 软件设计软件设计 3.2.1 系统软件设计内容系统软件设计内容 本设计的软件程序包括主程序、中断子程序、闹钟设定子程序、时钟显示子程序。 在整个系统中,在单片机的 30h、31h 和 32h 中存储当前时间的小时、分钟和秒。 用 lcd 显示当前的时间,必须用到分字和合字,因此在 33h、34h、35h、36h、37h 和 38h 中存储当前时间的时十位、时个位、分十位、分个位、秒十位和秒个位,方便显示。 本设计有由四个轻触按键组成的小键盘,这些按键可以任意改变当前的状态。按功 能移位键一次,表示当前要校对小时
21、的十位;按第二次,表示当前校对的是小时的个位; 按第三次,则表示校对的是分钟的十位;第四次,表示的校对的是分钟的个位。按下数 字“+” 键和数字“-”键可在当前校对的数字上相应加上 1 或者减去 1。 系统软件采用 c 语言编写。时钟的最小计时单位是秒,但使用定时器的方式 1,最大 的定时时间也只能达到 131ms。我们可把定时器的定时时间定为 50ms。这样,计数溢出 20 次即可得到时钟的最小计时单位:秒。而计数 20 次可以用软件实现。秒计时是采用中 断方式进行溢出次数的累积,计满 20 次,即得到秒计时。从秒到分,从分到时是通过软 件累加并进行比较的方法来实现的。要求每满 1 秒,则“
22、秒”单元中的内容加 1;“秒” 单元满 60,则“分”单元中的内容加 1;“分”单元满 60,则“时”单元中的内容加 1;“时”单元满 24,则将时、分、秒的内容全部清零。实时时钟程序设计步骤: (1)选择工作方式,计算初值; (2)采用中断方式进行溢出次数累计; (3)从秒分时的计时是通过累加和数值比较实现的; (4)时钟显示缓冲区:时钟时间在方位数码管上进行显示,为此在内部 ram 中要设置显示缓冲区,共 6 个地址单元。显示缓冲区从左到右依次存放时、分、秒 数值; (5)主程序:主要进行定时器/计数器的初始化编程,然后反复调用显示子程序的方 法等待中断的到来。 (6)中断服务程序:进行计
23、时操作; (7)加 1 子程序:用于完成对时、分、秒的加操作,中断服务程序在秒、 分、时加 1 时共三次调用加 1 子程序,包括:合字、加 1 并进行进制调整、分字。 3.2.2 主程序主程序 main 流程框图流程框图 3.2.3 时钟芯片驱动程序时钟芯片驱动程序 时钟芯片采用的是 pcf8563 芯片,它提供一个可编程时钟输出,一个中断输出和掉 电检测器,所有的地址和数据通过 i2c 总线接口串行传递。驱动程序代码如下: * * (1)函数名:void i2cstart(void) * 功能:发送 i2c 总线的起始位 * 输入:无 * 输出:无 */ void i2cstart(void
24、) ea=0; sda=1; scl=1; somenop(); sda=0; somenop();scl=0; /* * (2)函数名:void i2cstop(void) * 功能:发送 i2c 总线的停止位 * 输入:无 * 输出:无 */ void i2cstop(void) scl=0; sda=0; somenop(); scl=1; somenop(); sda=1; ea=1; /* * (3)函数名:void waitack (void) * 功能:主机等待从机发送来的确认 ack * 输入:无 * 输出:true / false */ bool waitack(void)
25、uchar errtime=255; /因故障接收方无 ack,超时值为 255。 sda=1;somenop(); scl=1;somenop(); while(sda) errtime-; if (!errtime) i2cstop(); systemerror=0 x11; return false; scl=0; return true; /* * (4)函数名:void i2csendbyte (uchar ch) * 功能:向总线发送一个字节的数据 * 输入:要发送的字节数据 * 输出:无 */ void i2csendbyte(uchar ch) uchar i=8; while
26、 (i-) scl=0;_nop_(); sda=(bit)(ch ch=1; somenop(); scl=1; somenop(); scl=0; /* * (5)函数名:uchar i2creceivebyte (void) * 功能:接收总线上发来的一个字节的数据 * 输入:无 * 输出:接收到的一个字节数据 */ uchar i2creceivebyte(void) uchar i=8; uchar ddata=0; sda=1; while (i-) ddata=1; scl=0; somenop(); scl=1; somenop(); ddata|=sda; scl=0; re
27、turn ddata; /* * (6)函数名:void getpcf8563(uchar firsttype,uchar count,uchar *buff) * 功能:读取时钟芯片 pcf8563 的时间 * 输入:设置要读的第一个时间类型 firsttype,设置读取的字节数 count, * 再把一次把时间读取到 buff 中。顺序是:0 x02(秒)/ 0 x03(分)/ * 0 x04(小时)/0 x05(日)/0 x06(星期)/0 x07(月)/0 x08(年) * 输出:无 */ void getpcf8563(uchar firsttype,uchar count,ucha
28、r *buff) uchar i; i2cstart(); i2csendbyte(0 xa2); /0 xa2 表示从机的写数据地址 waitack(); i2csendbyte(firsttype); waitack(); i2cstart(); i2csendbyte(0 xa3); /0 xa3 表示从机的读数据地址 waitack(); for (i=0;icount;i+) buff(i)=i2creceivebyte(); /从总线上读取 count 字节的数据 if (i!=count-1) sendack(); /除最后一个字节外,其他都要从 master 发应 答。 sen
29、dnotack(); i2cstop(); /* * (7)函数名:void setpcf8563(uchar timetype,uchar value) * 功能:调整 pcf8563 芯片中的时钟值 * 输入:要调整的时间类型 timetype,新设置的时间值 value(bcd 格式) 。 * 时间类型为:0 x02(秒)/ 0 x03(分)/ 0 x04(小时)/0 x05(日)/ * 0 x06(星期)/0 x07(月)/0 x08(年) * 输出:接收到的一个字节数据 */ void setpcf8563(uchar timetype uchar value) i2cstart()
30、; i2csendbyte(0 xa2); /0 xa2 表示从机的写数据地址 waitack(); i2csendbyte(timetype); /将时间类型发送到总线 waitack(); i2csendbyte(value); /将新设置的时间发送到总线 waitack(); /等待从机应答 i2cstop(); 3.2.4 lcd 显示子程序显示子程序 本系统所使用的lcd模块内部已集成了驱动电路,在使用时非常方便,只需按照此 lcd模块的指令表,将指令写入lcd模块即可实现对应功能。 此 lcd 模块的控制函数有初始化函数、命令写入函数和数据写入函数,具体代码如 下所述。 /* *
31、(1)函数名:void lcd_init(void) * 功能:初始化 lcd 模块 * 输入:无 * 输出:无 */ void lcd_init(void) lcd_wcmd(0 x01); /清零指令 lcd_wcmd(0 x38); /功能设置,8 位数据,两行显示,57 矩阵 lcd_wcmd(0 x0e); /显示开关,有光标,闪烁 lcd_wcmd(0 x06); /输入方式,增量加 1 /* * (2)函数名:void lcd_wcmd(uchar cmd) * 功能:将命令写入 lcd 模块 * 输入:要写入的命令值 * 输出:无 */ void lcd_wcmd(uchar
32、cmd) rs=0; /rs=0 表示写指令 rw=0; e=1; p2=cmd; /送指令到数据线 delay(5); e=0; /下降沿写入 /* * (3)函数名:void lcd_wbyte(uchar data) * 功能:将单个字节数据写入 lcd 模块 * 输入:要写入的数据 * 输出:无 */ void lcd_wbyte(uchar data) rs=1; /rs=1 表示写数据 rw=0; e=1; p2=cmd; /送指令到数据线 delay(5); e=0; /下降沿写入 /* * (4)函数名:void lcd_wbyte(uchar *buf ) * 功能:连续写
33、8 字节数据写入 lcd 模块 * 输入:要写入的数据缓冲区首址 * 输出:无 */ void lcd_wbyte(uchar *buf ) uchar i rs=1; rw=0; for(i=0;i8;i+) e=1; p2=bufi; delay(5); e=0 第第 4 章章 调试及结果调试及结果 4.1 调试中所遇问题以及解决方法调试中所遇问题以及解决方法 单片机最小系统方面由于是去年学的,因此还花了时间去找,一方面我们没有正确 的原理图,只有一张以前随便画的图,就算有了原理图,也不知道板上错在哪里,所以 只能用万用表一个个的找。通过我们的认真检查,结果发现不管是板上还是图纸上都出 了相当大的错误,图上很多引脚都标注错误了,还是一些小的原因造成 led 显示不正常, 诸如上述的问题还给我们造成了很大的麻烦。 程序设计方面,因为是自己头一次尝试独立完成一份相对规模较大程序,因些也遇 到了不少的麻烦。比如程序地址空间分配问题,因为 51
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025建筑工程委托设计合同协议
- 2025电力设备购销合同范本
- 租房合同怎样写全面(3篇)
- 2025年商场店铺租赁合同协议
- 2025酒店托管租赁合同
- DB11-T 2112-2023 城市道路空间非机动车停车设施设置规范
- 2025商业贷款委托借款合同
- 保健老师上岗证考试试题及答案
- 《康复护理学》考试试题及答案
- 特种设备人员考试试题与答案
- 平面设计培训考试题及答案
- 2025浙江温州医科大学附属第二医院医务部工作人员招聘1人笔试考试参考题库及答案解析
- 2025新华保险金融科技中心社会招聘笔试考试参考试题及答案解析
- 2025至2030赖氨酸行业发展趋势分析与未来投资战略咨询研究报告
- 2025海南省海口市城建集团招聘100人笔试历年参考题库附带答案详解
- 天然气突发事件应急预案
- 社会主义核心价值观法治学法知法守法教案x
- 2025年山东综评专科题目及答案
- 运输公司安全管理制度范本
- 神经内科科普讲解演讲
- 【课件】2025年消防月主题培训全民消防生命至上安全用火用电
评论
0/150
提交评论