单片机原理及应用技术-基于Keil C和Proteus仿真第12章 STC单片机应用系统设计实例1.ppt

单片机原理及应用技术-基于Keil C和Proteus仿真第12章 STC单片机应用系统设计实例1.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
存器8cH写入初始年份数据12 write_1302(0x8e,0x80); //打开写保护 } oid ds1302_init() //1302芯片初始化子函数(2012-12-22,00:00:00,week6) { RST=0; SCLK=0; write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,0x00); //向DS1302内写秒寄存器80H写入初始秒数据00 write_1302(0x82,0x00);//向DS1302内写分寄存器82H写入初始分数据00 uchar BCD_Decimal(uchar bcd)//BCD码转十进制函数,输入BCD,返回十进制 { uchar Decimal; Decimal=bcd4; return(Decimal=Decimal*10+(bcd=0x0F)); } //-------------------------------------- void ds1302_init() //1302芯片初始化子函数(2012-12-22,00:00:00,week6) { RST=0; SCLK=0; write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x84,0x00);//向DS1302内写小时寄存器84H写入初始小时数据00 write_1302(0x8a,0x06);//向DS1302内写周寄存器8aH写入初始周数据6 write_1302(0x86,0x22);//向DS1302内写日期寄存器86H写入初始日期数据22 write_1302(0x88,0x12);//向DS1302内写月份寄存器88H写入初始月份数据12 write_1302(0x8c,0x12);//向DS1302内写年份寄存器8cH写入初始年份数据12 write_1302(0x8e,0x80); //打开写保护 } //温度显示子函数 void write_temp(uchar add,uchar dat)//向LCD写温度数据,并指定显示位置 { uchar gw,sw,bw; if(dat=0dat=128) { gw=dat%10;//取得个位数字 sw=dat%100/10;//取得十位数字 bw=-5 ;//取得百位数字 } else { dat=256-dat; gw=dat%10;//取得个位数字 sw=dat%100/10;//取得十位数字 bw=-3; //0x30-3表示为负号 } write_1602com(er+add);//er是头文件规定的值0x80+0x40 write_1602dat(0x30+bw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0xdf);//显示温度的小圆圈符号,0xdf是液晶屏字符库的该符号地址码 write_1602dat(0x43); //显示C符号,0x43是液晶屏字符库里大写C的地址码 } void delay_18B20(unsigned int i) { while(i--); } /**********ds18b20初始化函数**********************/void Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(8); //稍做延时 DQ = 0; //单片机将DQ拉低 delay_18B20(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay_18B20(4); x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20); } /*************ds18b20写一个字节****************/ void WriteOneChar(uchar dat) { unsigned char i=0; for (i=8; i0; i--) { DQ = 0; DQ = dat0x01; delay_18B20(5); DQ = 1;

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档