|
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);
}
}
|
評分
-
查看全部評分
|