国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

單片機(jī)DS18b20 溫度檢測液晶顯示

2019-11-08 01:41:38
字體:
供稿:網(wǎng)友
/*-----------------------------------------------  名稱:DS18b20 溫度檢測液晶顯示  論壇:www.doflye.net  編寫:shifang  日期:2009.5  修改:無  內(nèi)容:------------------------------------------------*/#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義#include<stdio.h>#include "18b20.h"#include "1602.h"#include "delay.h"#define KeyPort P3 //定義按鍵端口bit ReadTempFlag;//定義讀時(shí)間標(biāo)志void Init_Timer0(void);//定時(shí)器初始化unsigned char KeyScan(void);//鍵盤掃描/*------------------------------------------------              串口通訊初始化------------------------------------------------*/void UART_Init(void){    SCON  = 0x50;        // SCON: 模式 1, 8-bit UART, 使能接收      TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重裝    TH1   = 0xFD;               // TH1:  重裝值 9600 波特率 晶振 11.0592MHz      TR1   = 1;                  // TR1:  timer 1 打開                             //EA    = 1;                  //打開總中斷    //ES    = 1;                  //打開串口中斷TI=1;}/*------------------------------------------------                    主函數(shù)------------------------------------------------*/void main (void){                  int temp,tempH=50,tempL=1;float temperature;unsigned char TempFlag=0;char displaytemp[16],num;//定義顯示區(qū)域臨時(shí)存儲數(shù)組LCD_Init();           //初始化液晶DelayMs(20);          //延時(shí)有助于穩(wěn)定LCD_Clear();          //清屏Init_Timer0();UART_Init();Lcd_User_Chr();       //寫入自定義字符while (1)         //主循環(huán)  { num=KeyScan(); switch(num)       {   case 1:if(tempH<127)tempH++;break;case 2:if(tempH>-55)tempH--;break;case 3:if(tempL<127)tempL++;break;case 4:if(tempL>-55)tempL--;break;default:break;  } switch(TempFlag)       {   case 0:    //輸出溫度上限下限     sPRintf(displaytemp,"H.%3d  L.%3d ",tempH,tempL);              LCD_Write_String(0,1,displaytemp);//顯示第二行 break;case 1:LCD_Write_String(0,1,"over  tempH    ");break;case 2:LCD_Write_String(0,1,"under  tempL   ");break;default:break;  }if(ReadTempFlag==1) {  ReadTempFlag=0;  temp=ReadTemperature();  temperature=temp*0.0625;  temp>>=4; if(temp>tempH)    TempFlag=1;  //高于高溫標(biāo)志 else if(temp<tempL)    TempFlag=2;  //低于低溫標(biāo)志 else   TempFlag=0;   //正常顯示標(biāo)志      sprintf(displaytemp,"Temp  %6.2f ",temperature);//打印溫度值  LCD_Write_String(0,0,displaytemp);//顯示第一行  LCD_Write_Char(13,0,0x01);//寫入溫度右上角點(diǎn)  LCD_Write_Char(14,0,'C'); //寫入字符C  }  }}/*------------------------------------------------                    定時(shí)器初始化子程序------------------------------------------------*/void Init_Timer0(void){ TMOD |= 0x01;  //使用模式1,16位定時(shí)器,使用"|"符號可以在使用多個(gè)定時(shí)器時(shí)不受影響     //TH0=0x00;      //給定初值 //TL0=0x00; EA=1;            //總中斷打開 ET0=1;           //定時(shí)器中斷打開 TR0=1;           //定時(shí)器開關(guān)打開}/*------------------------------------------------                 定時(shí)器中斷子程序------------------------------------------------*/void Timer0_isr(void) interrupt 1 { static unsigned int num; TH0=(65536-2000)/256;  //重新賦值 2ms TL0=(65536-2000)%256;  num++; if(num==400)        //   {    num=0;    ReadTempFlag=1; //讀標(biāo)志位置1}}/*------------------------------------------------按鍵掃描函數(shù),返回掃描鍵值------------------------------------------------*/unsigned char KeyScan(void){ unsigned char keyvalue; if(KeyPort!=0xff)   {    DelayMs(10);    if(KeyPort!=0xff)  {   keyvalue=KeyPort;   while(KeyPort!=0xff);switch(keyvalue){case 0xfe:return 1;break;case 0xfd:return 2;break;case 0xfb:return 3;break;case 0xf7:return 4;break;case 0xef:return 5;break;case 0xdf:return 6;break;case 0xbf:return 7;break;case 0x7f:return 8;break;default:return 0;break;} }   }   return 0;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 遂宁市| 丁青县| 竹溪县| 于都县| 苍溪县| 清涧县| 长岛县| 渭南市| 嘉兴市| 韶关市| 南溪县| 景谷| 永泰县| 平泉县| 祥云县| 岳阳县| 淮北市| 弥渡县| 凤城市| 温泉县| 定襄县| 嘉祥县| 弥勒县| 临潭县| 德安县| 滁州市| 进贤县| 徐水县| 张北县| 东乡族自治县| 尼木县| 通城县| 资源县| 井研县| 东宁县| 吴川市| 长寿区| 蓬溪县| 沙雅县| 治多县| 奉节县|