找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2358|回复: 1
打印 上一主题 下一主题
收起左侧

(分享设计)51单片机万年历1602显示

[复制链接]
跳转到指定楼层
楼主
51单片机用1602显示万年历程序。
#include <reg52.h>                 //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255
#define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535
#include "eeprom52.h"
#include "nongli.h"
#include "ds1302.h"
#include "lcd1602.h"

bit flag_200ms ;
bit flag_100ms ;
sbit beep = P3^7;          //蜂鸣器定义
bit flag_beep_en;
uint clock_value;     //用作闹钟用的

sbit dq   = P3^1;          //18b20 IO口的定义


uint temperature ;    //温度变量
uchar flag_nl;        //农历 阳历显示标志位


uchar menu_1,menu_2;

uchar key_time,flag_value;      //用做连加的中间变量
bit key_500ms  ;
uchar n_nian,n_yue,n_ri;                //农历显示的函数

/*****************主函数********************/
void main()
{       
        beep = 0;                                //开机叫一声   
        delay_1ms(150);
        P0 = P1 = P2 = P3 = 0xff;                //单片机IO口初始化为1
        init_time0();                 //初始化定时器
        init_ds1302();                 //ds1302初始化
        init_1602();                 //lcd1602初始化
        init_1602_dis_csf(); //lcd1602初始化显示
        init_eeprom();       //开始初始化保存的数据
        temperature = read_temp();        //先读出温度的值
        delay_1ms(650);
        temperature = read_temp();        //先读出温度的值
        while(1)
        {
                key();                         //按键程序
                if(key_can < 10)
                {
                        if(flag_beep_en == 0)  //只有闹钟关了的时候才能进入设置
                                key_with();       
                        else
                        {
                                flag_beep_en = 0;         //按下任意键可关闭闹钟
                                beep = 1;
                                clock_value = 0;
                                read_time();
                        }
                        if(menu_1 == 0)
                        {
                                if(key_can == 4)  //减键
                                {
                                        flag_nl = ~flag_nl;                  //切换农历和阳历的显示标志位       
                                        if(flag_nl == 0)
                                                write_string(2,0,"2013");
                                        else        
                                                write_string(2,0,"N ");
                                }
                        }
                }
               
                if(flag_200ms == 1)
                {       
                        flag_200ms = 0;
                        if(menu_1 == 0)
                        {
                                read_time();                  //读时间
                                temperature = read_temp();        //先读出温度的值
                                init_1602_ds1302();   //显示时钟
                        }
                }
                menu_dis();           //闹钟报警函数
                delay_1ms(1);
        }
}

截图格式 双击可以打.png (94.45 KB, 下载次数: 32)

截图格式 双击可以打.png

51单片机万年历1602显示.zip

428.21 KB, 下载次数: 59, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:548959 发表于 2019-6-2 22:45 | 只看该作者
谢谢楼主!正好需要带农历阳历显示的,但是网上找到的都是用穷举法,程序非常长,感谢楼主分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表