27,383
社区成员
发帖
与我相关
我的任务
分享
#include<reg52.h>
#include<intrins.h>
#include"scan_key.h" //自己写的键盘扫描程序,暂时用不到
#include"1602_LCD.h" //自己写的LCD驱动程序,已确认不会有问题
sbit rst=P2^4;
sbit clk=P2^1;
sbit io=P2^0;
void write_ds1302(unsigned char content) //对1302写入一个字节
{
unsigned char i;
for(i=0;i<8;i++)
{
io=(content>>i)&0x01;
_nop_();
clk=0;
_nop_();
clk=1;
}
}
unsigned char read_ds1302(unsigned char commend) //参数为控制字读,读取结果由函数带回
{
unsigned char i,content=0x00;
write_ds1302(commend);
for(i=0;i<8;i++)
{
content>>=1;
if(io)
content|=0x80;
clk=1;
_nop_();
clk=0;
_nop_();
}
return content;
}
int main()
{
unsigned char temp;
init_lcd(); //LCD初始化
write_ds1302(0x8e); //关写保护
write_ds1302(0x00);
write_ds1302(0x90);
write_ds1302(0xa5);
write_ds1302(0x80); //秒寄存器初始化,CH置0
write_ds1302(0x00);
while(1)
{
temp=read_ds1302(0x81); //读出秒寄存器中的数据
write_lcd(0,0,0x84);
write_lcd(1,0,((temp&0x70)>>4)+0x30); //数据转化并送到LCD显示【第三个参数为要显示的内容,前两个可以无视】
write_lcd(0,0,0x83);
write_lcd(1,0,(temp&0x0f)+0x30);
}
return 0;
}
for(i = 0; i < 10; ++i)
{
lcd_display(i);
delay_ms(1000);
}