基于51单片机的语音万年历设计

硬件方案

        本电路是由AT89C52单片机为控制核心,具有在线程功能,低功耗,能在3V超低压工作;时钟电路有DS1302提供,它是一种高性能.低功耗,带RAM的实时时钟电路,它可以对年,月,日,周日,时,分,秒进行及时,同时具有闰年补偿功能,工作电压为2.5~5.5V.采用三线接口与CPU进行同步通信,并可采用突发方式一次产送多个字节的时钟信号或RAM数据.具有寿命长精度高和低功耗等特点.温度数据有DS18B20采集.显示部分有LCD12864液晶显示。
        整体电路主要由51单片机+最小系统+LCD12864液晶显示模块+时钟模块+温度采集模块+按键模块+语音芯片及喇叭;原理图如图:

PCB图如下:

 

设计功能

  • 采用DS1302时钟芯片、DS18B20温度传感器、LCD12864液晶屏构成的万年历系统设计。
  • 有闹钟和测温和整点报时和阴历功能,可以准确的显示时间等信息,可以显示年、月、日、时、分、秒、星期、温度和农历。
  • 掉电走时,不用重新调时。
  • 闹钟是嘀嘀响,响30s。闹钟和整点时会有语音报时。
  • 按键可以设置时间和闹钟。设置的数据掉电保存,下次开机无需重新设置。按键1设置、按键2加、按键3减/查看闹钟。

软件设计

主程序源码

/********************************************************************
* 名称 : main()
* 功能 : 主程序                                                     
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main()
{
     read_time1();
    data_dispose();
do
  {
      Temper();
  }
while(temp==850) ;
    TMOD=0x01;  //定时器0配置   方式0 定时模式
    TH0=0x3c;       //定时50ms   赋初值
    TL0=0xb0;
    EA=1;       //打开总中断
    TR0=1;       //定时器0启动定时
    ET0=1;       //定时器0中断
    LCD12864_init();
    temp_h=byte_read(0x2000);  //读取单片机EEPROM中保存的数据
    temp_l=byte_read(0x2200);

    if((temp_h>99)||(temp_l>99)||(temp_l>=temp_h))          //判断读出的数据是否正确    如果不正确
    {
        temp_h=30;     //则重新赋值
        temp_l=10;
    }
    shi_1=byte_read(0x2600);  //读取单片机EEPROM中保存的数据
    fen_1=byte_read(0x2800);
    if(shi_1>23||shi_1<0||fen_1>59||fen_1<0)
      {
        shi_1=8;
        fen_1=0;
      }
    ir_on=byte_read(0x2400);
    if(ir_on!=1&&ir_on!=0)
     {
       ir_on=1;
     }
    while(1)
    {
    
        key();        //调用按键控制程序
        proc();       //调用程序处理函数
        sound();
        display();
    }
}

资料链接:https://pan.baidu.com/s/1HCfQzNpYvKGgPTJ69zw_gQ?pwd=8gly 
提取码:8gly

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值