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