找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2371|回復: 1
打印 上一主題 下一主題
收起左側

(分享設計)51單片機萬年歷1602顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:265688 發(fā)表于 2019-4-2 22:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
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;        //農(nóng)歷 陽歷顯示標志位


uchar menu_1,menu_2;

uchar key_time,flag_value;      //用做連加的中間變量
bit key_500ms  ;
uchar n_nian,n_yue,n_ri;                //農(nóng)歷顯示的函數(shù)

/*****************主函數(shù)********************/
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();       //開始初始化保存的數(shù)據(jù)
        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;                  //切換農(nóng)歷和陽歷的顯示標志位       
                                        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();           //鬧鐘報警函數(shù)
                delay_1ms(1);
        }
}

截圖格式 雙擊可以打.png (94.45 KB, 下載次數(shù): 32)

截圖格式 雙擊可以打.png

51單片機萬年歷1602顯示.zip

428.21 KB, 下載次數(shù): 59, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:548959 發(fā)表于 2019-6-2 22:45 | 只看該作者
謝謝樓主!正好需要帶農(nóng)歷陽歷顯示的,但是網(wǎng)上找到的都是用窮舉法,程序非常長,感謝樓主分享!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表