基于单片机温度控制系统的设计毕业设计论文(编辑修改稿)内容摘要:
入显示寄存器 十 位数 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。基于单片机温度控制系统的设计毕业设计论文(编辑修改稿)
相关推荐
品牌设计和品牌定位课堂讲义 品牌设计和品牌定位江明华博士北京大学光华管理学院品牌视野的“金字塔理论”产品产品A BN 典型品牌活动典型品牌活动品牌的战略特性品牌的战略特性品牌的基调和个性品牌的基调和个性品牌的价值品牌的价值品牌的目标和远景品牌的目标和远景企业消费者消费者来源:牌设计品牌创建品牌定位品牌设计通过分析麦当劳的品牌设计过程来认识品牌设计的相关问题。 这是什么。 含义。 含义。 含义。
升率dv/dt 是一个重要参数。 由于单向晶闸管静态电压上升率 (200V/μ s)大大高于双向晶闸管的换向指标 (10V/μ s),因此若采用两只大功率单向晶闸管反并联代替双向晶闸管,一方面可提高输出功率;另一方面也可提高耐浪涌电流的冲击能力,这种 SSR 称为增强型 SSR。 、 三极管 晶体三极管(以下简称三极管)按材料分有两种:锗管和硅管。 而每一种又有 NPN 和 PNP 两种结构形式
_()。 _nop_()。 LOAD=1。 } /*MAX7219 初始化 */ void Start() { Sendword(Scanbit,Scannum)。 Sendword(Decode,Demode)。 Sendword(Light,Lightgrade)。 Sendword(Lowpower,Norpw)。 } 详细程序见附录 软件调试 单片机 C 语言 单片机 C
):参考电压负端。 7. START: A/D 转换启动信号输入端。 8. A、 B、 C:地址输入端。 9. ALE:地址锁存允许信号输入端。 10. EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。 11. OE: 输出允许控制端,用以打开三态数据输出锁存器。 7 7 12. CLK:时钟信号输入端,译码后可选通 IN0~ IN7 八个通道中的一个进行转换。 表 21
号 2 DQ 数据输入 /输出引脚。 开漏单总线接口引脚。 当被用着在寄生电源下,也可以向器件提供电源。 3 VDD 可选择的 VDD 引脚。 当工作于寄生电源时,此引脚必须接地。 湖南科技大学本科生课程设计 11 必须发出 [44h]命令。 在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中, DS18B20 继续保持等待状态。 当 DS18B20由外部电源供电时
如图 36所示。 图 36 DS18B20 的读时序 ③ DS18B20的写时序 对于 DS18B20的写时序仍然分为写 0时序和写 1时序两个过程。 对于 DS18B20写 0时序和写 1时序的要求不同,当要写 0时序时,单总线要被拉低至少 60us,保证 DS18B20能够在 15us到 45us之间能够正确地采样 IO总线上的 “ 0” 电平,当要写 1时序时,单总线被拉低之后,在