第一范文网 - 专业文章范例文档资料分享平台

(完整版)基于单片机和DS1302电子万年历的毕业设计论文

来源:用户分享 时间:2025/7/30 4:31:16 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

for(a=8;a>0;a--) {

ACC7=IO;

SCLK=1; 产生下降沿输出数据,先输出低位,保存到ACC中 SCLK=0; ACC=ACC>>1; }

return (ACC); }

void write_1302(uchar add,uchar dat)向1302芯片写函数,指定写入地址,数据 { RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0; }

uchar read_1302(uchar add)从1302读数据函数,指定读取数据来源地址 {

uchar temp; RST=0; SCLK=0; RST=1;

write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp); }

uchar BCD_Decimal(uchar bcd)BCD码转十进制函数,输入BCD,返回十进制 {

uchar Decimal; Decimal=bcd>>4;

return(Decimal=Decimal*10+(bcd&=0x0F)); }

void ds1302_init() 1302芯片初始化子函数(2:00:00,week7) { RST=0; SCLK=0;

write_1302(0x8e,0x00); 允许写,禁止写保护

write_1302(0x80,0x00); 向DS1302内写秒寄存器80H写入初始秒数据00 write_1302(0x82,0x00);向DS1302内写分寄存器82H写入初始分数据00 write_1302(0x84,0x12);向DS1302内写小时寄存器84H写入初始小时数据12 write_1302(0x8a,0x07);向DS1302内写周寄存器8aH写入初始周数据4 write_1302(0x86,0x17);向DS1302内写日期寄存器86H写入初始日期数据18 write_1302(0x88,0x06);向DS1302内写月份寄存器88H写入初始月份数据06 write_1302(0x8c,0x12);向DS1302内写年份寄存器8cH写入初始年份数据12 write_1302(0x8e,0x80); 打开写保护

}

温度显示子函数

void write_temp(uchar add,uchar dat)向LCD写温度数据,并指定显示位置 {

uchar gw,sw;

gw=dat;取得个位数字 sw=dat10;取得十位数字

write_1602com(er+add);er是头文件规定的值0x80+0x40 write_1602dat(0x30+sw);数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);数字+30得到该数字的LCD1602显示码

write_1602dat(0xdf);显示温度的小圆圈符号,0xdf是液晶屏字符库的该符号地址码

write_1602dat(0x43); 显示\符号,0x43是液晶屏字符库里大写C的地址码 }

时分秒显示子函数

void write_sfm(uchar add,uchar dat)向LCD写时分秒,有显示位置加、现示数据,两个参数 {

uchar gw,sw;

gw=dat;取得个位数字 sw=dat10;取得十位数字

write_1602com(er+add);er是头文件规定的值0x80+0x40 write_1602dat(0x30+sw);数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);数字+30得到该数字的LCD1602显示码 }

年月日显示子函数

void write_nyr(uchar add,uchar dat)向LCD写年月日,有显示位置加数、显示数据,两个参数 {

uchar gw,sw;

gw=dat;取得个位数字 sw=dat10;取得十位数字

write_1602com(yh+add);设定显示位置为第一个位置+add write_1602dat(0x30+sw);数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);数字+30得到该数字的LCD1602显示码 }

void write_week(uchar week)写星期函数 {

write_1602com(yh+0x0c);星期字符的显示位置 switch(week) {

case 1:write_1602dat('M');星期数为1时,显示 write_1602dat('O'); write_1602dat('N'); break;

case 2:write_1602dat('T');星期数据为2时显示 write_1602dat('U'); write_1602dat('E'); break;

case 3:write_1602dat('W');星期数据为3时显示

(完整版)基于单片机和DS1302电子万年历的毕业设计论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0owvy25x6m0cqsi0v0jd0weks4q8jb00nuh_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top