当前位置:   article > 正文

基于51单片机的电子万年历

基于51单片机的电子万年历

硬件方案

随着生活和工作的繁忙,人们在获知时间的同时,对于与人们生活和工作息息相关的信息也不可缺少,比如:温度,日期等;多功能电子时钟的诞生,很好解决了这一问题,它在显示时间的同时,又显示了温度、日期、时间等诸多功能于一身。电路主要由51单片机+最小系统+LCD液晶显示电路+DS1302时钟电路+蜂鸣器提示音电路+DS18B20温度采集电路+按键电路;

二.设计功能

(1)本采用STC89C51/52RC(与AT89S51/52、AT89C51/52通用)单片机作为主控制器;
(2)时钟芯片采用DS1302,温度传感器采用DS18B20;
(3)有一组闹钟和阴历显示功能,有闰年补偿,可以准确及正确的显示时间等信息。
(4)可以显示年、月、日、时、分、秒、星期、温度、农历和闹钟设定。
(5)电路上的纽扣电池可在掉电后给时钟芯片供电,重上电后不用重新调时。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述
(2)Protues仿真图如下:
在这里插入图片描述

软件设计

主程序源码

//-------------------------------
void init(void)   //定时器、计数器设置函数
{
    TMOD=0x11; 		//指定定时/计数器的工作方式为3
    TH0=0; 			//定时器T0的高四位=0
    TL0=0;  		//定时器T0的低四位=0
    TH1=0x3C;
    TL1=0xB0;
    EA=1;  			//系统允许有开放的中断
    ET0=1; 			//允许T0中断
    ET1=1;
//	IT1=1;
//	IT0=0;
    PT1=1;
    PT0=0;
    TR0=1; 			//开启中断,启动定时器
    TR1=0;
}


void InitialTimer2(void)
{
    T2CON  = 0x00;			//16 Bit Auto-Reload Mode
    TH2 = RCAP2H = 0x3C;  	//重装值,初始值	TL2 = RCAP2L = 0x18;
    TL2 = RCAP2L = 0xB0;
    ET2=1;					//定时器 2 中断允许
    TR2 = 0;				//定时器 2 启动
}
//*******************主函数**************************
//***************************************************
void main()
{
    ds1302_init();   //调用DS1302时钟的初始化子函数
    init();          //调用定时计数器的设置子函数
    lcd_init();      //调用液晶屏初始化子函数
    InitialTimer2();
    led=1;           //关闭LCD的背光电源

    while(1)  //无限循环下面的语句:
    {
        keyscan();      //调用键盘扫描子函数
        led=led1;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

资料链接:https://pan.baidu.com/s/1o-8IuEyKzgbpSDkesR6rkw?pwd=urof

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/859425
推荐阅读
相关标签
  

闽ICP备14008679号