下载此文档

DS1302程序.docx


文档分类:通信/电子 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
#include<>
#include<>
#defineucharunsignedchar
#defineuintunsignedintucharcount_10ms;
sbitKI=P3人2;
ms(5);
lcd_wcmd(0x38);
Delay_ms(5);
〃等待LCD电源稳定
//16*2显示,5*7点阵,8位数据
lcd_wcmd(0x0c);
Delay_ms(5);lcd_wcmd(0x06);
Delay_ms(5);lcd_wcmd(0x01);
Delay_ms(5);
//显示开,关光标
//移动光标
〃清除LCD的显示内容
/********以下是写一字节数据函数********/
voidwrite_byte(ucharinbyte)
{
uchari;
for(i=0;i<8;i++)
{
sclk=0;//写时低电平改变数据
if(inbyte&0x01)
io=1;
else
io=0;
sclk=1;//高电平把数据写入DS1302
_nop_();
inbyte=inbyte>>1;
}
}
ucharread_byte()
{
uchari,temp=0;
io=1;for(i=0;i<7;i++)
{
sclk=0;if(io==1)temp=temp|0x80;else
temp=temp&0x7f;
sclk=1;//产生下跳沿
temp=temp>>1;
}
return(temp);
}
/********写DS1302函数,往DS1302的某个地址写入数据********/voidwrite_ds1302(ucharcmd,ucharindata)
{
sclk=0;
reset=1;
write_byte(cmd);
write_byte(indata);
sclk=0;
reset=0;
}
/********读DS1302函数,读DS1302某地址的的数据********/ucharread_ds1302(ucharaddr)
{
ucharbackdata;
sclk=0;
reset=1;
//先写地址
//然后读数据
write_byte(addr);backdata=read_byte();sclk=0;reset=0;return(backdata);
}
/********设置初始时间函数********voidset_ds1302(ucharaddr,uchar*p,ucharn)
{
write_ds1302(0x8e,0x00);//写控制字,允许写操作
for(;n>0;n--)
{
write_ds1302(addr,*p);
p++;
addr=addr+2;
}
write_ds1302(0x8e,0x80);//写保护,不允许写
********读取当前时间函数
^Tx^Tx^Tx^Tx^Tx
voidget_ds1302(ucharaddr,uchar*p,ucharn)
{
for(;n>0;n--)
{
*p=read_ds1302(addr);
p++;
addr=addr+2;
}}********初始化DS1302函数********/voidinit_ds1302()
{
reset=0;
sclk=0;
write_ds1302(0x80,0x00);//写秒寄存器
write_ds1302(0x90,0xab);//写充电器
write_ds1302(0x8e,0x80);//写保护控制字,禁止写
}
voidbeep()
{
BEEP=0;//蜂鸣器响
Delay_ms(100);
BEEP=1;//关闭蜂鸣器
Delay_ms(100);
}
/********以下是转换函数,负责将走时数据转换为适合LCD显示的数据********/
voidLCD_conv(ucharin1,in2,in3)
〃形参ini、in2、in3接收实参time_buf[2]、time_buf[l]、time_buf[0]传来的小时、分钟、秒数据
disp_buf[0]=ini/i0+0x30;disp_buf[i]=ini%i0+0x30;
disp_buf[2]=in2/i0+

DS1302程序 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
最近更新