多点温度检测系统试验_第1页
多点温度检测系统试验_第2页
多点温度检测系统试验_第3页
多点温度检测系统试验_第4页
多点温度检测系统试验_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、多点温度检测系统实验(设计性实验)一、实验目的通过仿真搭建和实物搭建相结合,完成多点温度检测单片机系统设计。二、实验内容1、方案一:用8279芯片为键盘和数码显示控制芯片,完成灵活的设置与显示设计,建立基本的串行口(MAX232接口),普通的I/0口,A/D转换口功能,采样多个点,并按键显示不同的通道采样数据。方案二:以8255或8155芯片为键盘显示控制芯片,建立基本的串行口(MAX232楼口),普通的I/0日,VD转换转换口功能,采样多个点,并按键显示不同的通道采样数据。2、用Proteus仿真软件搭建仿真硬件电路图。验证编制软件。3、用prote199s布原理图、建PCB板图。4、实物器

2、件焊接搭建。三、硬件设计硬件元件参考清单单片机AT89C51瓷片电容CAP30PF晶振CRYSTAL12MHz电解电容CAP-ELEC电阻RES按钮BUTTON发光数码管LED插针8*2开关SWTTCH排阳RESPACK-88*2排座单排20*1插针DS18B208255芯片热敏电阻74LS138芯片74LS37374LS245DAC0809232芯片以DS18B20为传感器、AT89C51单片机为控制核心组成多点温度测试系统。四、实验程序以及系统框图系统框图(二)实验程序:#include<REG51.H>#include<intrins.h>#include<

3、math.h>#defineuintunsignedint#defineucharunsignedcharuchartemp_value;ucharTempBuffer7;voidshow_time();uchartemp_value1;ucharTempBuffer17;charxiaoshu=0;charxiaoshu1=0;voidshow_time1();/温度值/液晶显木程序/温度值"*1602液晶显示部分子程序*/chardone,count,temp,flag,up_flag,down_flag;/PortDefinitionssbitLcdRs=P2A0;sbi

4、tLcdRw=P2A1;sbitLcdEn=P2A2;sfrDBPort=0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口sbitDQ=P1A7;/温度传送数据IO口sbitDQ1=P1A6;/内部等待函数unsignedcharLCD_Wait(void)LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;returnDBPort;)0/Command1/Data/清屏0x02/光标返回原点/向LCD写入命令或数据#defineLCD_COMMAND#defineLCD_DATA#defineLCD_CLEAR_

5、SCREENX01#defineLCD_HOMINGvoidLCD_Write(bitstyle,unsignedcharinput)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();LcdEn=1;_nop_();LcdEn=0;_nop_();LCD_Wait();)/设置显示模式#defineLCD_SHOW0x04/业小开#defineLCD_HIDE0x00/显示关#defineLCD_CURSOR0x02/业已初、#defineLCD_NO_CURSOR0x00/无光标#defineLCD_FLASH0x01/光标闪动

6、#defineLCD_NO_FLASH0x00光标不闪动voidLCD_SetDisplay(unsignedcharDisplayMode)LCD_Write(LCD_COMMAND,0x08|DisplayMode);)/设置输入模式#defineLCD_AC_UP#defineLCD_AC_DOWN0x020x00/default#defineLCD_MOVE0x01/回面可平移#defineLCD_NO_MOVE0x00/defaultvoidLCD_SetInput(unsignedcharInputMode)LCD_Write(LCD_COMMAND,0x04|InputMode)

7、;)初始化LCDvoidLCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38);/8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN)/清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);/AC递增,画面不动/液晶字符输入的位置voidGotoXY(unsignedcharx,unsignedchary)if(y=0)LC

8、D_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);将字符输出到液晶显示voidPrint(unsignedchar*str)while(*str!=''0')LCD_Write(LCD_DATA,*str);str+;/*ds18b20子程序*/*ds18b20延迟子函数(晶振12MHz)*/voiddelay_18B20(unsignedinti)while(i-);/*ds18b20初始化函数*/voidInit_DS18B20(void)unsignedcharx=0;DQ

9、=1;/DQ复位delay_18B20(8);稍做延时DQ=0;/单片机将DQ拉低delay_18B20(80);/精确延时大于480usDQ=1;拉高总线delay_18B20(14);x=DQ;稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);/*ds18b20读一个字节*/unsignedcharReadOneChar(void)uchari=0;uchardat=0;for(i=8;i>0;i-)DQ=0;/给脉冲信号dat>>=1;DQ=1;/给脉冲信号if(DQ)dat|=0x80;delay_18B20(4);)return(da

10、t);/*ds18b20写一个字节*/voidWriteOneChar(uchardat)unsignedchari=0;for(i=8;i>0;i-)DQ=0;DQ=dat&0x01;delay_18B20(5);DQ=1;dat>>=1;)/*读取ds18b20当前温度*/voidReadTemp(void)unsignedchara=0;unsignedcharb=0;chart;longtt;Init_DS18B20();WriteOneChar(0xCC);/跳过读序号列号的操作WriteOneChar(0x44);/启动温度转换delay_18B20(10

11、0);/thismessageisweryimportantInit_DS18B20();WriteOneChar(0xCC);/跳过读序号列号的操作前两个就是温度WriteOneChar(0xBE);/读取温度寄存器等(共可读9个寄存器)/读取温度值低位/读取温度值高位delay_18B20(100);a=ReadOneChar();b=ReadOneChar();temp_value=b<<4;temp_value+=(a&0xf0)>>4;t=a&0x0f;tt=t*625;xiaoshu=tt/1000;)voidtemp_to_str()/温度

12、数据转换成液晶字符显示TempBuffer0=temp_value/10+'0'/十位TempBuffer1=temp_value%10+'0'/个位TempBuffer2='.'TempBuffer3=xiaoshu+'0'TempBuffer4=0xdf;TempBuffer5='C'TempBuffer16='0'voidDelay1ms(unsignedintcount)unsignedinti,j;for(i=0;i<count;i+)for(j=0;j<120;j+);voi

13、dshow_time()/液晶显木程序ReadTemp();temp_to_str();GotoXY(0,0);Print("NO.1");GotoXY(0,1);Print("TEMP:");GotoXY(6,1);Print(TempBuffer);Delay1ms(400);/开启温度采集程序/温度数据转换成液晶字符/液晶字符显示位置/显示温度/扫描延时/*ds18b20子程序*/*ds18b20/*ds18b20voidInit_DS18B201(void)unsignedcharx=0;DQ1=1;delay_18B20(8);DQ1=0;de

14、lay_18B20(80);DQ1=1;delay_18B20(14);x=DQ1;delay_18B20(20);/*ds18b20延迟子函数(晶振12MHz)*/初始化函数*/DQ复位稍做延时单片机将DQ拉低/精确延时大于480us/拉高总线稍做延时后如果x=0则初始化成功x=1则初始化失败读一个字节*/unsignedcharReadOneChar1(void)uchari=0;uchardat=0;for(i=8;i>0;i-)DQ1=0;/给脉冲信号dat>>=1;DQ1=1;给脉冲信号if(DQ1)dat|=0x80;delay_18B20(4);)return(

15、dat);/*ds18b201写一个字节*/voidWriteOneChar1(uchardat)unsignedchari=0;for(i=8;i>0;i-)DQ1=0;DQ1=dat&0x01;delay_18B20(5);DQ1=1;dat>>=1;)/*读取ds18b201当前温度*/跳过读序号列号的操作/启动温度转换/thismessageisveryimportant/跳过读序号列号的操作读取温度寄存器等(共可读9个寄存器)前两个就是温度/读取温度值低位/读取温度值高位voidReadTemp1(void)unsignedchara=0;unsignedc

16、harb=0;unsignedchart=0;longtt;Init_DS18B201();WriteOneChar1(0xCC);WriteOneChar1(0x44);delay_18B20(100);Init_DS18B201();WriteOneChar1(0xCC);WriteOneChar1(0xBE);delay_18B20(100);a=ReadOneChar1();b=ReadOneChar1();temp_value1=b<<4;temp_value1+=(a&0xf0)>>4;t=a&0x0f;tt=t*625;xiaoshu1=t

17、t/1000;)voidtemp_to_str1()/温度数据转换成液晶字符显示TempBuffer10=temp_value1/10+'0'十位TempBuffer11=temp_value1%10+'0'/个位TempBuffer12='.'TempBuffer13=xiaoshu1+'0'TempBuffer14=0xdf;TempBuffer15='C'TempBuffer16='0'voidshow_time1()/液晶显木程序ReadTemp1();temp_to_str1();Goto

18、XY(0,0);Print("NO.2");GotoXY(0,1);Print("TEMP:");GotoXY(6,1);Print(TempBuffer1);Delay1ms(400);main()LCD_Initial();Init_DS18B20();Init_DS18B201();GotoXY(1,0);Print("HELLO");GotoXY(1,1);/温度符号/开启温度采集程序/温度数据转换成液晶字符/液晶字符显示位置/显示温度/扫描延时/液晶初始化/DS18B20初始化Print("LET'SDOI

19、T");/("designbywy!");ReadTemp();ReadTemp1();Delay1ms(2000);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);while(1)show_time();/液晶显示数据/flag=0;Delay1ms(2000);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);show_time1();/flag=0;Delay1ms(2000);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);五、电路图R=>1172-H631607040315陈希0皿IXirRyT:hi>Turtrjum:r3-3MJ»Lran而rnY£或黑一二r二二33z六、实验结果与分析1、Keil代码运行状况:油'r'tJf-.Tii,1日也biF匕S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论