- 4
- 0
- 约1.48万字
- 约 17页
- 2018-04-10 发布于江西
- 举报
18B20测温 1302时钟程序.doc
#includereg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#includestdio.h
#define KeyPort P3 //定义按键端口
#define DataPort P0 //1602端口
#define ds1302_sec_add 0x80 //秒数据地址
#define ds1302_min_add 0x82 //分数据地址
#define ds1302_hr_add 0x84 //时数据地址
#define ds1302_date_add 0x86 //日数据地址
#define ds1302_month_add 0x88 //月数据地址
#define ds1302_day_add 0x8a //星期数据地址
#define ds1302_year_add 0x8c //年数据地址
#define ds1302_control_add 0x8e //控制数据地址
#define ds1302_charger_add 0x90
#define ds1302_clkburst_add 0xbe
bit ReadTempFlag;//1820定义读时间标志
sbit DQ=P1^3; //18B20信号端
sbit bz=P1^2; //喇叭
sbit led1=P1^0;
sbit led2=P1^1;
sbit SCK=P1^4; //DS1302控制端
sbit SDA=P1^5;
sbit RST=P1^6;
sbit RS = P2^4; //1602控制端定义端口
sbit RW = P2^5;
sbit EN = P2^6; //使能信号
bit ReadTimeFlags;//1302定义读时间标志
bit SetFlag; //更新时间标志位
void Init_Timer0(void);//定时器初始化
void Init_Timer1(void);//定时器初始化
unsigned char KeyScan(void);//键盘扫描
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
//复位脚
#define RST_CLR RST=0//电平置低
#define RST_SET RST=1//电平置高
//双向数据
#define IO_CLR SDA=0//电平置低
#define IO_SET SDA=1//电平置高
#define IO_R SDA //电平读取
//时钟信号
#define SCK_CLR SCK=0//时钟信号
#define SCK_SET SCK=1//电平置高
unsigned char time_buf2[16];
unsigned char time_buf[8] = {20,10,6,5,12,55,00,6};//空年月日时分秒周
unsigned char time_buf1[8] ; //空年月日时分秒周
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--) //大致延时1mS
{
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
判忙函数
------------------------------------------------*/
bit LCD_Check_Busy(void)
{
DataPort= 0xFF;
RS_CLR;
RW_SET;
EN_CLR;
EN_SET;
retu
原创力文档

文档评论(0)