-
大小: 49KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-05-09
- 语言: 其他
- 标签:
资源简介
89C2051+DS1302+74HC595+8位LED数码管的电子钟程序
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
//DS1302内部寄存器定义
#define sec 0x80
#define min 0x82
#define hou 0x84
#define dat 0x86
#define mou 0x88
#define wek 0x8a
#define yer 0x8c
#define read 0x01
//DS1302引脚定义
sbit T_CLK=P1^4;
sbit T_IO =P1^3;
sbit T_RST=P1^2;
//DS1302暂存定义
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
//74HC595 引脚定义
sbit CLK=P1^5; //595 11脚 时钟
sbit STR=P1^6; //595 12脚 锁存
sbit RData=P1^7; //595 14脚 数据
//设置键引脚定义
sbit SET=P3^4;
sbit UP=P3^2;
sbit dw=P3^3;
//DS18B20接口定义(接4K7上拉电阻)
sbit DQ = P3^7;
//**************函数声明*****************
void delays(uchar);
void display(void);
void Scan_Key(void);
void id_case1_key();
void Set_id(uchar uchar);
//*************变量定义******************
uchar tflagid=0timecountre_disp=0ahour=0aminute=0asecond=0adate=0amouth=0aweek=0ayear=0;
bit yearmouthdateweekhourminutesecondflagtlamp;
uchar code tab[]={0xc00xf90xa40xb00x990x920x820xf80x800x900xff0xbf}; /*个位0~9的数码管段码*/
uchar code tab2[]={0x400x790x240x300x190x120x020x780x000x10}; /*个位0~9的数码管段码带小数点*/
//********DS1302读写程序***************
//往DS1302写入1Byte数据 (内部函数)
void RTInputByte(uchar d)
{
uchar i;
ACC = d;
for(i=8; i>0; i--)
{
T_IO = ACC0; //相当于汇编中的 RRC
T_CLK = 1;
T_CLK = 0;
ACC = ACC >> 1;
}
}
//从DS1302读取1Byte数据 (内部函数)
uchar RTOutputByte(void)
{
uchar i;
for(i=8; i>0; i--)
{
ACC = ACC >>1; //相当于汇编中的 RRC
ACC7 = T_IO;
T_CLK = 1;
T_CLK = 0;
}
return(ACC);
}
//往DS1302写入数据
void Write1302(uchar ucAddr uchar ucDa)
{
T_RST = 0;
T_CLK = 0;
T_RST = 1;
RTInputByte(ucAddr); // 地址,命令
RTInputByte(ucDa); // 写1Byte数据
T_CLK = 1;
T_RST = 0;
}
// 读取DS1302某地址的数据
uchar Read1302(uchar ucAddr)
{
uchar ucData;
T_RST = 0;
T_CLK = 0;
T_RST = 1;
RTInputByte(ucAddr); // 地址,命令
ucData = RTOutputByte(); // 读1Byte数据
T_CLK = 1;
T_RST = 0;
return(ucData);
}
//74HC595 发送数据函数
void sendbyte(uchar bbyte1)
{
uchar f;
for(f=0;f<8;f++)
{
RData=bbyte1&0x80;
CLK=0; CLK=1;
bbyte1<<=1;
}
}
void delay_18b20(uchar sum) //短暂延时
{
while(sum--);
}
void wr18b20(uint dat2)
{
uchar m=8;
for(;m>0;m--)
{
DQ=0;
DQ=dat2&0x01;
delay_18b20(5);
DQ=1;
dat2>>=1;
}
}
//DS18B20相关
void rst_18b20(void) //18B20复位
{
DQ=1;
delay_18b20(13);
DQ=0;
delay_18b20(122);
DQ=1;
delay_18b20(20);
}
uint rd18b20() //读一个字节的内容
{
uchar dat1n=8;
for(;n>0;n--)
{
DQ=0;
dat1>>=1;
DQ=1;
if(DQ)
dat1|=0x80;
delay_18b20(4);
}
return(dat1);
}
uint rd_temperature() //读取温度值
{
uint x=0y=0t=0tt=0;
rst_18b20(); //复位
wr18b20(0xcc);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 26917 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051
文件 5383 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051.hex
文件 33 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051.lnp
文件 26235 2008-11-17 14:47 89c2051 ds18b20 74hc595 8LED\89c2051.LST
文件 33033 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051.M51
文件 30646 2008-11-17 14:47 89c2051 ds18b20 74hc595 8LED\89c2051.OBJ
文件 1160 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051.Opt
文件 3260 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051.plg
文件 1692 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051.Uv2
文件 9850 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051OK.c
文件 24285 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051OK.LST
文件 30894 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED\89c2051OK.OBJ
....... 0 2008-11-17 14:22 89c2051 ds18b20 74hc595 8LED\89c2051_Uv2.Bak
目录 0 2008-11-17 20:48 89c2051 ds18b20 74hc595 8LED
----------- --------- ---------- ----- ----
193388 14
评论
共有 条评论