-
大小: 72KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-06-03
- 语言: 其他
- 标签:
资源简介
基于DS1302、89C52、LCD1602实时时钟设计及其Proteus仿真
代码片段和文件信息
#include
//DS1302相关的变量和引脚定义
unsigned char code digit[10]={“0123456789“}; //定义字符数组显示数字
sbit DATA=P1^7; //位定义1302芯片的接口,数据输出端定义在P1.1引脚
sbit RST=P1^5; //位定义1302芯片的接口,复位端口定义在P1.1引脚
sbit SCLK=P1^6; //位定义1302芯片的接口,时钟输出端口定义在P1.1引脚
//sbit DATA=P3^4; //位定义1302芯片的接口,数据输出端定义在P1.1引脚
//sbit RST=P3^5; //位定义1302芯片的接口,复位端口定义在P1.1引脚
//sbit SCLK=P3^6; //位定义1302芯片的接口,时钟输出端口定义在P1.1引脚
unsigned char secondminutehourdaymonthyear; //分别储存秒、分、小时,日,月,年
unsigned char ReadValue; //储存从1302读取的数据
/*****************************************************
函数功能:延时若干微秒
入口参数:n
***************************************************/
void delaynus(unsigned char n)
{
unsigned char i;
for(i=0;i }
/*****************************************************
函数功能:向1302写一个字节数据
入口参数:x
***************************************************/
void Write1302(unsigned char dat)
{
unsigned char i;
SCLK=0; //拉低SCLK,为脉冲上升沿写入数据做好准备
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续写8个二进制位数据
{
DATA=dat&0x01; //取出dat的第0位数据写入1302
delaynus(2); //稍微等待,使硬件做好准备
SCLK=0;
delaynus(2); //稍微等待,使硬件做好准备
SCLK=1; //上升沿写入数据
SCLK=0; //再拉低,为下一次做准备
dat>>=1; //将dat的各数据位右移1位,准备写入下一个数据位
}
}
/*****************************************************
函数功能:从1302读一个字节数据
入口参数:x
***************************************************/
unsigned char Read1302(void)
{
unsigned char idat;
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续读8个二进制位数据
{
dat>>=1; //将dat的各数据位右移1位,因为先读出的是字节的最低位
if(DATA==1) //如果读出的数据是1
dat|=0x80; //将1取出,写在dat的最高位
SCLK=1; //将SCLK置于高电平,为下降沿读出,数据在内存当中故上升沿写对其无效
delaynus(2); //稍微等待
SCLK=0; //拉低SCLK,形成脉冲下降沿
delaynus(2); //稍微等待
}
return dat; //将读出的数据返回
}
/*****************************************************
函数功能:根据命令字,从1302读取一个字节数据
入口参数:x
***************************************************/
unsigned char ReadSet1302(unsigned char Cmd)
{
unsigned char dat;
RST=0; //拉低RST
SCLK=0; //确保写数居前SCLK被拉低
RST=1; //启动数据传输
Write1302(Cmd); //写入命令字
dat=Read1302(); //读出数据
SCLK=1; //将时钟电平置于已知状态
RST=0; //禁止数据传递
return dat; //将读出的数据返回
}
/**************************************************************
以下是1302数据的显示程序
**************************************************************/
/*****************************************************
函数功能:显示秒
入口参数:x
***************************************************/
void DisplaySecond(unsigned char x)
{
unsigned char ij; //jkl分别储存温度的百位、十位和个位
i=x/10;//取十位
j=x%10;//取个位
WriteAddress(0x4c); //写显示地址将在第2行第7列开始显示
WriteData(digit[i]); //将百位数字的字符常量写入LCD
WriteData(digit[j]); //将
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-06-07 08:49 电子钟\
目录 0 2012-06-07 08:49 电子钟\51程序\
文件 7474 2012-06-06 21:30 电子钟\51程序\DS1302.c
文件 743 2012-06-06 19:43 电子钟\51程序\DS1302.h
文件 11444 2012-06-06 21:30 电子钟\51程序\DS1302.LST
文件 13130 2012-06-06 21:30 电子钟\51程序\DS1302.OBJ
文件 5353 2012-06-06 21:04 电子钟\51程序\LM1602.c
文件 494 2012-06-06 19:43 电子钟\51程序\LM1602.h
文件 8498 2012-06-06 21:30 电子钟\51程序\LM1602.LST
文件 9147 2012-06-06 21:30 电子钟\51程序\LM1602.OBJ
文件 290 2012-06-06 19:45 电子钟\51程序\main.c
文件 1235 2012-06-06 21:30 电子钟\51程序\main.LST
文件 3125 2012-06-06 21:30 电子钟\51程序\main.OBJ
文件 22072 2012-06-06 21:30 电子钟\51程序\ZOU DS1302
文件 2646 2012-06-06 21:30 电子钟\51程序\ZOU DS1302.hex
文件 76 2012-06-06 21:30 电子钟\51程序\ZOU DS1302.lnp
文件 21189 2012-06-06 21:30 电子钟\51程序\ZOU DS1302.M51
文件 1731 2012-06-06 21:27 电子钟\51程序\ZOU DS1302.Opt
文件 27899 2012-06-06 21:30 电子钟\51程序\ZOU DS1302.plg
文件 2302 2012-06-06 19:46 电子钟\51程序\ZOU DS1302.Uv2
文件 1730 2012-06-06 21:17 电子钟\51程序\ZOU DS1302_Opt.Bak
文件 2298 2012-06-06 17:38 电子钟\51程序\ZOU DS1302_Uv2.Bak
目录 0 2012-06-07 08:48 电子钟\仿真图\
文件 102169 2012-06-06 20:15 电子钟\仿真图\Last Loaded ZOU ds1302.DBK
文件 102964 2012-06-06 22:32 电子钟\仿真图\ZOU ds1302.DSN
文件 935 2012-06-06 22:32 电子钟\仿真图\ZOU ds1302.PWI
- 上一篇:24to8Colors.zip
- 下一篇:labview实现电压采集
评论
共有 条评论