基于单片机温度控制系统的设计毕业设计论文(编辑修改稿)内容摘要:

入显示寄存器 十 位数 0。 百位数 0。 十位数显示符号百位数不显示 百位数显示数据(不显示符号) 结束 N N Y Y 毕业论文设计 第 20 页 共 49 页 参考文献 [1] 李广弟,朱月 秀,王秀山 .《单片机基础》北京航空航天大学出版社, 20xx(07). [2] 蔡美琴 ,张为民等 .《 MCS51 系列单片机系统及其应用》高等教育出版社, 20xx(06). [3] 张毅刚 ,等 .MCS51 单片机应用设计 [M].哈尔滨工业大学出版社 ,1997. [4] 刘瑞星 ,胡健等 .《 Protel DXP 实用教程》机械工业出版社, 20xx(04). [5] 于海生 . 《计算机控制技术》 机械工业出版社 20xx(05). [6] 谭浩强 . 《 C程序设计》 清华大学出版社 . [7] 康华光 . 《电子技术基础 模拟部分》 高等教育出版社 1998(08). [8] 余锡存 . 《单片机原理与接口技术》 西安电子科技大学出版社, 20xx. 毕业论文设计 第 21 页 共 49 页 致谢 本论文是在我的指导老师密切关心和悉心指导下完成的。 老师在课题开题期间和论文写作的过程中给予了我许多指导,导师总是以认真负责、一丝不苟的工作态度阅读并修改文章中不足的地方,他优良的作风和严谨治学的态度深深影响着我,至此 ,向恩师致以最真挚的感谢和最崇高的敬意。 同时我要感谢我的同学,特别是我的室友们,正是他们在这几年里陪我一起成长,一起学习, 才让我有了今天的成绩。 他们在平时的学习和生活中他们给予了我无私的关怀和帮助,在此表示我最诚挚的谢意。 毕业论文设计 第 22 页 共 49 页 附件 1:系统原理图 毕业论文设计 第 23 页 共 49 页 附件 2:系统相关程序 一 、 DS18B20 底层驱动程序 //延时 N ms //DS1820 引脚定义 sbit TMDAT =P1^0。 void DS1820_DelayCount (unsigned char Coun) { data unsigned char Count。 Count=Coun。 while(Count0) Count。 Count=Coun。 while(Count0) Count。 } //复位 DS18B20 void DS1820_Reset(void) { TMDAT=0。 DS1820_DelayCount(412)。 TMDAT=1。 DS1820_DelayCount(16)。 } //等待 DS18B20 应答 unsigned char DS1820_Answer(void) { data unsigned int i。 data unsigned char j。 毕业论文设计 第 24 页 共 49 页 i=0xc000。 while(TMDAT) { i。 if (i==0) return(aban_return)。 } i=0xffff。 j=3。 while(~TMDAT) { i。 if (i==0) if(j==0) return(aban_return)。 else { j。 i=0xffff。 } } DS1820_DelayCount(16)。 return(done_return)。 } //等待 DS18B20 应答 //读取位 bit DS1820_Readbit(void) { data int i=0。 毕业论文设计 第 25 页 共 49 页 bit dat。 TMDAT=0。 i++。 i++。 i++。 i++。 TMDAT=1。 i++。 i++。 i++。 i++。 i++。 i++。 i++。 i++。 dat = TMDAT。 // DS1820_DelayCount(8)。 DS1820_DelayCount(32)。 return dat。 } //读取字节 unsigned char DS1820_Readbyte(void) { data unsigned char i,j,dat=0。 for(i=1。 i=8。 i++) { j=DS1820_Readbit()。 dat=(j7)|(dat1)。 } return dat。 } //写一个字节 void DS1820_Writebyte(unsigned char dat) { data signed char i=0。 data unsigned char j。 bit testb。 for(j=1。 j=8。 j++) { testb=dat amp。 0x01。 毕业论文设计 第 26 页 共 49 页 dat = dat1。 if(testb) { TMDAT=0。 i++。 i++。 i++。 i++。 i++。 i++。 i++。 i++。 TMDAT=1。 //DS1820_DelayCount(8)。 DS1820_DelayCount(32)。 } else { TMDAT=0。 //DS1820_DelayCount(8)。 DS1820_DelayCount(32)。 TMDAT=1。 i++。 i++。 i++。 i++。 i++。 i++。 i++。 i++。 } } } //读操作开始 unsigned char DS1820_StartTem(void) { EA=0。 DS1820_Reset()。 if(DS1820_Answer()==aban_return) { EA=Ea。 return(aban_return)。 } 毕业论文设计 第 27 页 共 49 页 // DS1820_Delayms(1)。 DS1820_Delayms(4)。 DS1820_Writebyte(0xcc)。 // DS1820_Writebyte(0x55)。 // for(i=0。 i8。 i++) //DS1820_Writebyte(DS1820_temp[i])。 DS1820_Writebyte(0x44)。 EA=Ea。 return(done_return)。 } //读所有传感器 int DS1820_ReadTem(void) { data unsigned char a,b。 data int y3。 data float y4。 data unsigned char i。 EA=0。 DS1820_Reset()。 if(DS1820_Answer()==aban_return) { EA=Ea。 return(0xffff)。 } DS1820_Delayms(4)。 DS1820_Writebyte(0xcc)。 //跳过匹配传感器 //DS1820_Writebyte(0x55)。 //匹配 传感器 毕业论文设计 第 28 页 共 49 页 // for(i=0。 i8。 i++) //DS1820_Writebyte([i])。 DS1820_Writebyte(0xbe)。 //读取温度 for(i=0。 i9。 i++) { [i]=DS1820_Readbyte()。 } if(CRC(9)!=0) { EA=1。 return(0xffff)。 } //计算 CRC a = [0]。 b = [1]。 DS1820_Reset()。 y3 = (b 8)|a。 y4=y3。 y4=(y4*25)/4。 EA=1。 return((int)(y4))。 } 二 、 DS1302 时钟底层驱动程序 //DS1302 引脚定义 毕业论文设计 第 29 页 共 49 页 sbit rtc_sc=P3^4。 sbit rtc_io=P3^5。 sbit rst_1302=P3^6。 bdata unsigned char temp。 sbit temp_0 = temp^0。 sbit temp_7 = temp^7。 /************************************************************** DS1302 驱动程序开始 **************************************************************/ //功能 : 往 DS1302 写入 1Byte 数据 void v_RTInputByte(unsigned char ucDa) { unsigned char i。 temp = ucDa。 for(i=8。 i0。 i) { rtc_io = temp_0。 /*相当于汇编中的 RRC */ rtc_sc = 1。 rtc_sc = 0。 temp = temp 1。 } } //功能 : 从 DS1302 读取 1Byte 数据 unsigned char uc_RTOutputByte(void) { unsigned char i。 rtc_io=1。 for(i=8。 i0。 i) { 毕业论文设计 第 30 页 共 49 页 temp = temp 1。 /*相当于汇编中的 RRC */ temp_7 = rtc_io。 rtc_sc = 1。 rtc_sc = 0。 } return(temp)。 } //功能 : 往 DS1302 写入 数据 void write1302(unsigned char ucAddr,unsigned char ucDa) { bit ea。 ea=EA。 EA=0。 rtc_rs_portamp。 =(~rtc_rs_bit)。 rtc_sc = 0。 rtc_rs_port|=rtc_rs_bit。 v_RTInputByte(ucAddr)。 /* 地址 ,命令 */ v_RTInputByte(ucDa)。 /* 写 1Byte 数据 */ rtc_sc = 1。 rtc_rs_portamp。 =(~rtc_rs_bit)。 EA = ea。 } //功能 : 读取 DS1302 某地址的数据 unsigned char read1302(unsigned char ucAddr) { unsigned char ucDa。 bit ea。 ea=EA。 毕业论文设计 第 31 页 共 49 页 EA=0。 rtc_rs_portamp。 =(~rtc_rs_bit)。 rtc_sc = 0。 rtc_rs_port|=rtc_rs_bit。 v_RTIn。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。