您当前的位置:五五电子网电子知识电子制作自动控制-单片机点阵液晶显示的多功能数字万年历 正文
点阵液晶显示的多功能数字万年历

点阵液晶显示的多功能数字万年历

点击数:7900 次   录入时间:03-04 11:47:46   整理:http://www.55dianzi.com   自动控制-单片机

  该点阵液晶显示的多功能数字万年历具有农历功能,使用点阵LCD(液晶显示,红外遥控控制,操作简单方便,可以随意录制自己喜欢的声音作为闹铃音,这是普通数字万年历不具备的。

  主要功能见附表。

时钟显示 12/24小时制 日期、星期显示 年份可达1900-2049年 闹铃 多种语音选择,可以录制自己的语音(多达40段) 农历 有效时间:1900—2049年 生肖 有效时间:1900—2049年 红外遥控 有效距离10米 整点报时 有 断电功能 有

  该数字万年历系统框图见图,主要由单片机、红外遥控、语音、液晶显示和稳压电源5部分组成。

  硬件电路

    1.  电源  数字万年历在断电时要保持工作状态,需要使用备用电源,本制作使用4节5号镍镉电池做备用电源,可以保持系统时钟断电运行48小时以上。

  对应的电源电路图如左图所示。

  2.主控制器

    点阵液晶显示的多功能数字万年历总体电路图见后页图。主控制器选用公司C51系列单片机。该单片机采用高性能的静态设计,由先进CMOS工艺制造并带有非易失性Flash程序存储器,支持时钟和6时钟操作。包含256字节,32条I/O口线,3个16位定时/计数器,6输入4优先级嵌套中断结构,1个串行I/O口可用于多机通信/O扩展或全双工UART。


  3.液晶显示

      数字万年历需要显示文字,从节能和感观上考虑,液晶显示屏是最好的选择。这里选用的是普通的没有带字库的液晶显示屏YJ-12864BG,有背光,方便光弱环境使用。

  模块点阵分为左右两边,左右两边的结构完全一样。对模块的点阵存储区进行读写操作时,由CS1、CS2进行片选,高电平有效。模块中每8行为页,页地址由X确定,确定点阵的列号,点阵数据的每一个字节所在的位置由图5硬件接口示意图,X,Y唯一确定。字节中的每一位对应着相应的像素,为1显示该像素,为O则不显示。液晶显示模块工作时,逐行扫描点阵存储区。首先被扫描的行显示在LCD屏幕的第1行上,其余行则依次顺序显示。

  单片机与显示屏采用的是并行数据传输方式,右图为单片机与LCD显示屏的硬件接口示意图。

  4.红外遥控

      红外遥控发射部分  本红外遥控器采用普通的红外遥控器,型号为RM-F,内部芯片型号为LA7461。

    红外遥控器发射的信号由一串“0”和“1”的二进制代码组成,不同的芯片对“0”和“1”的编码有所不同,通常有曼彻斯特(Manchester)编码和脉冲宽度编码。本文红外遥控器选用的是脉冲宽度编码,如左图所示。

  遥控器发射的红外遥控编码波形,“O”码由0.56ms高电平和0.56ms低电平组合而成,脉冲周期为1.12ms,“1”码由0.56ms高电平和1.68ms低电平组合而成,脉冲周期为2.24ms。

  当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低位地址码(9ms~18ms),高13位地址码(9ms~18ms),8位数据码~18ms)和这8位数据的反码~18ms)组成。如果按键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码和结束码(2.5ms)、组成。


  红外接收解码部分  红外遥控接收采用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路集成封装成一体。红外接收头的信号输出端接单片机的脚,单片机中断INT0在红外脉冲下降沿时产生中断。

  在中断期间启动定时器O进行计数,直到下一个负脉冲到来,将计数结果取出处理。电路使用晶振,定时器为1μs计数一次。理论上代码“0”的定时计数值为,代码“1”的定时计数值为,但考虑到单片机晶振的误差,中断的延时、遥控器晶振的误差等原因,测到的结果不一定等于理论值。实验证明,只要范围在~0x480之间均为有效的“O”码,计数值在0x700~0x8ee之间均为有效的“1”码。

  5.基准时间  基准时间利用单片机的定时器位),初始值是0x3cb0,利用的晶振溢出周期是,这样5个溢出周期为1s。

  6.语音控制  一般的数字万年历没有语音的功能,缺乏个性化。本制作采用语音集成芯片ISD4O03实现语音功能。

  工作电压3V,单片录放时间分钟。芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存储阵列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口SPI送入。芯片采用多电平直接模拟量技术,每个采样值直接存储在片内闪烁存储器中,能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。保存在闪烁存储器中的信息可在断电情况下保存100年,存储器可反复录音10万次。

  ISD4003工作于SPI串行接口,右图为SPI串口接口框图。图中OVF标志指示ISD4003的录、放音操作已到达存储器的末尾。MOSI为SPI串行输入,MISO为SPI串行输出。EOM标志在放音期间检测到内部的EOM标志时置为1。P10~PO为ISD4003输出控制数据,C4~C0为逻辑控制位,A10~A0为输入地址,指示ISD4003从指定的地址开始录、放音。

  SPI协议是一个同步串行数据传输协议,协议规定ISD4003微控制器的SPI移位寄存器在SCLK(串行时钟)的下降沿动作,时钟由主控制器产生。

  对ISD4003而言,在时钟上升沿锁存MOSI(串行输入)引脚的数据,在下降沿将数据送至MISO(串行输出)引脚。

  下图为SPI端口的控制位图。每条操作控制指令的长度都是16位,刚好2个字节。

  控制ISD4003放音的指令存SETPLAY指令——设置放音地址,必须后跟PLAY指令放音,控制码为11100<A10-A0>,PLAY指令——从当前地址开始放音(直至EOM或OVF),控制码为11110XXXXXXXXXXX(X为填充数据,可为任意值)。

  控制ISD4003录音的指令有:SETREC指令——设置录音地址,必须后跟REC指令录音,控制码为10110<A10-A0>IREC指令——从当前地址开始录音(直至OVF或停止),控制码为10110XXXXXXXXXXX。

  软件设计

  软件采用C语言编写。简单流程图见下图。

34

  1.公历-农历转换  公历和农历之间关系没有计算公式可用,只能将农历与公历的对应关系用表格的形式存储在存储器中,根据公历的日期来查表取得农历的信息:

  农历一年有12个月或13个月(含一个闰月),一个月不是30天就是29天。如果把一个月29天叫做小月,计为O;把一个月30天叫做大月,计为1,那么用12位2进制数即能表示12个月的大小。如果有闰月把闰月的月份用4位二进制表示,这样2个字节就可以存储一年中的月份数还有闰月,可另外还用一个字节存储闰月的天数,只有存在闰月的农历年使用该字节,大大节约了存储空间。

  2.公历-星期转换

  公历与星期的算法使用基准法,就是选定某一天为星期几,然后计算出某一天到那天一共经历的天数,然后除以7的余数就可以知道那一天是星期几了。这种方法简单明了,没有像传统的算法要用到校正数据。

  3.农历-生肖转换   十二生肖是:“鼠”,“牛”,“虎”,“兔”,“龙”,“蛇”,“马”,“羊”,“猴”,“鸡”,“狗”,“猪”。  农历与生肖的轮换也是使用基准法,设定农历1900为基准,农历1900年为鼠年,12年一个周期,采用除12取余法可以计算出农历年对应的生肖是什么。

  本制作程序使用keilμ Vision编辑、调试、编译通过。完整的程序源代码见本期配刊光盘中的文件“点阵液晶显示的多功能数字万年历.c”。

  使用说明

  点阵液晶显示的多功能数字万年历主要有闹铃、万年历、语音管理、时间制式、整点报时和背光6个功能键,全部使用红外遥控器控制。在使用的过程中按功能键进入对应的制作界面。在对应的制作界面上,V+、V-选择子项目.P+、P-更改参数数据。下面分别介绍功能键的功能,操作面板如下图。

34




本文关键字:万年历  自动控制-单片机电子制作 - 自动控制-单片机