freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)數(shù)字溫度計(jì)-閱讀頁(yè)

2024-12-26 05:40本頁(yè)面
  

【正文】 |LCD_NO_MOVE)。 if(y==1) LCD_Write(LCD_COMMAND,0x80|(x0x40))。\039。 str++。 //RS=0 表示選擇指令寄存器 LcdRw=1。//RW=1 表示進(jìn)行讀操作 LcdEn=1。 //在 EN 為下降沿的時(shí)候鎖存據(jù) while(DBPortamp。 _nop_()。 _nop_()。 } LcdEn=0。 LcdRs=style。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 } 讀 /寫標(biāo)志位 R/W=0時(shí),進(jìn)行寫操作 當(dāng) RS=0時(shí),選擇指令寄存器 開始 子程序返回 調(diào)用延時(shí)子程序 LCD使能信號(hào) E至高電平后再過兩個(gè)時(shí)鐘周期至低電平,產(chǎn)生一個(gè)下降沿信號(hào),往 LCD寫入指令代碼, LCD執(zhí)行命令 把指令數(shù)據(jù)送至 P0口 第 25 頁(yè) //設(shè)置顯示模式 ************************************************************ define LCD_SHOW //顯示開 define LCD_HIDE //顯示關(guān) define LCD_CURSOR //顯示光標(biāo) define LCD_NO_CURSOR //無光標(biāo) define LCD_FLASH //光標(biāo)閃動(dòng) define LCD_NO_FLASH //光標(biāo)不閃動(dòng) void LCD_SetDisplay(unsigned char DisplayMode) { LCD_Write(LCD_COMMAND, 0x08|DisplayMode)。 } 第 26 頁(yè) 最常見的矩陣式鍵盤按鍵識(shí)別方 法是編程掃描,這里采用的是列掃描方法。 //定義 P1 口為鍵盤掃描口 //P0=0x80,P1=0x90,P2=0xA0,P3= bit key_ok=0。 } unsigned char r_left(unsigned char x) { 按鍵是否按下? 執(zhí)行語句 按鍵是否按下? 延時(shí) 返回 開始 第 27 頁(yè) x=1。 return(x)。 key_port=0xf0。 if(temp!=0xf0) key_ok=1。 } /************鍵盤掃描程序 ************************* ****功能 :返回鍵值 ,當(dāng)無鍵按下時(shí) ,返回 0*************/ unsigned char key_scan(void) { unsigned char temp,count=0x01,key_value。 unsigned char i,j,y。 //粗判是否有鍵按下 if(key_ok==1) { key_ok=0。 //延時(shí)去抖動(dòng) scan_full()。i4。 for(j=0。j++) { temp=key_port。0xf0。0xf0。 } key_value=count。 } else { count++。 } } y_scan=0xef。 } } } return(key_value)。主界面由菜單欄、工具欄、預(yù)覽窗口、元件選擇按鈕、元件列表窗口、原理圖繪制窗口和仿真進(jìn)程控制按鈕組成(如圖 72 所示)。 仿真電路 圖 見附錄 3 調(diào)試與運(yùn)行 ( 1)首先啟動(dòng) KEIL C51 軟件的集成開發(fā)環(huán)境,從桌面上雙擊 uVision 圖標(biāo)以啟動(dòng)軟件。通常單片機(jī)應(yīng)用系統(tǒng)軟件包含多個(gè)源程序文件, KEIL C51 使用工程這一概念,將這些參數(shù)設(shè)置和所需的所有文件都加在一個(gè)工程中。 ( 3)建立并添加源文件。 然后,我打開已經(jīng)畫好的仿真圖,再將生成的 HEX 文件導(dǎo)入單片機(jī)里,點(diǎn)擊開始按鈕,電路正常工作, 并且 能夠?qū)崿F(xiàn)預(yù) 先設(shè) 想的 所有功能,而且 效果很好,從而驗(yàn)證了我的 程序的正確性。 本次設(shè)計(jì)可以說是軟硬結(jié)合,又以硬件為主。由于單片機(jī)經(jīng)濟(jì)實(shí)用、開發(fā)簡(jiǎn)便等特點(diǎn)依然在工業(yè)控制、家電等領(lǐng)域占據(jù)了廣泛的市場(chǎng)。在我完成這次畢業(yè)設(shè)計(jì)的過程中,當(dāng)看到自己將專業(yè)知識(shí)用于解決實(shí)際的問題時(shí),那份成就感和喜悅感是難以形容的。光靠自己在書本上所學(xué)過的這點(diǎn)知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,真正地認(rèn)識(shí)到了工作就是學(xué)習(xí)的道理。通過對(duì)本系統(tǒng)的設(shè)計(jì),我學(xué)習(xí)到了硬件開發(fā)和軟件開發(fā)的基本流程并有了一定的駕御此開發(fā)過程的能力。 總之,這次畢業(yè)設(shè)計(jì)對(duì)我來說是一次比較全面的、富有創(chuàng)造性和探索性的鍛煉,完成了我選題時(shí)的心愿。 //定義 DQ 引腳為 /***********ds18b20 延遲子函數(shù)(晶 振 12MHz ) *******/ /************DS18B20 對(duì)時(shí)間要求很嚴(yán) ,但只能長(zhǎng)不能短 *************在 下也行 ,因?yàn)闀r(shí)間長(zhǎng)些 ********/ void delay_18B20(unsigned int i) { while(i)。 DQ = 0。 //精確延時(shí) 大于 480us DQ = 1。 x=DQ。 } /***********ds18b20 讀一個(gè)字節(jié) **************/ unsigned char ReadOneChar(void) { unsigned char i=0。 第 34 頁(yè) for (i=8。i) { DQ = 0。 DQ = 1。 delay_18B20(4)。 } /*************ds18b20 寫一個(gè)字節(jié) ****************/ void WriteOneChar(unsigned char dat) { unsigned char i=0。 i0。 DQ = datamp。 delay_18B20(5)。 dat=1。 WriteOneChar(0xCC)。 第 35 頁(yè) WriteOneChar(TH)。 //寫入想設(shè)定的溫度報(bào)警下限 WriteOneChar(RS)。 Init_DS18B20()。 // 跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0x44)。 // 溫度轉(zhuǎn)化要一段時(shí)間 Init_DS18B20()。 //跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE)。 tt[0]=ReadOneChar()。 //讀取溫度值高位 return(tt)。 //報(bào)警信號(hào) //sbit DQ = P3^7。 //存放鍵盤掃描值 bit up_one,down_one。 //上限報(bào)警和下限報(bào)警設(shè)置標(biāo)志 bit set_temper_flag。 //報(bào)警開關(guān) unsigned char user_temper。 //上限溫度 110,下限 20,分辨率 10 位 ,也就是 unsigned char t[2],*pt。\039。 //顯示實(shí)時(shí)溫度 ,上電時(shí)顯示 + SET+ 00C unsigned char TempBuffer0[17]={0x54,0x48,0x3a,0x2b,0x20,0x30,0x30,0x20, 0x54,0x4c,0x3a,0x2b,0x20,0x30,0x30,0x43,39。}。 /***因顯示分辨率為 ,但小數(shù)運(yùn)算比較麻煩 ,故采用查表的方法 ******* 再將表值分離出十位和個(gè)位后送到十分位和百分位 ********************/ /***********用戶設(shè)定溫度轉(zhuǎn)換為 LCD 顯示數(shù)據(jù) ************** *功能 :將用戶設(shè)定溫度 user_temper,分離出符號(hào)位 ,百、十、個(gè)位 并將它們轉(zhuǎn)化為 ACSII 碼 ,送到液晶顯示緩沖區(qū) ******************************************************/ void user_temper_LCD(unsigned char temper) { 第 37 頁(yè) if(temper0x7f) //判斷正負(fù) ,如果為負(fù)溫 ,將其轉(zhuǎn)化為其絕對(duì)值 { TempBuffer1[11]=0x2d。 //將負(fù)數(shù)的補(bǔ)碼轉(zhuǎn)換成絕對(duì)值 temper++。 ////0x2B 為 +的 ASCII 碼 TempBuffer1[12]=temper/100+0x30。 //百位數(shù)消隱 TempBuffer1[13]=(temper%100)/10+0x30。 //分離出個(gè)位 } /***************溫度上下限轉(zhuǎn)換為 LCD 顯示數(shù)據(jù) ************ *功能 :將上下限報(bào)警溫度 ,分離出符號(hào)位 ,百、十、個(gè)位 并將它們轉(zhuǎn)化為 ACSII 碼 ,送到液晶顯示緩沖區(qū) ******************************************************/ void alarm_LCD( unsigned char TH, unsigned char TL) { if(TH0x7F) //判斷正負(fù) ,如果為負(fù)溫 ,將其轉(zhuǎn)化為其絕對(duì)值 { TempBuffer0[3]=0x2d。 //將負(fù)數(shù)的補(bǔ)碼轉(zhuǎn)換成絕對(duì)值 TH++。 //0x2B 為 +的 ASCII 碼 if(TL0x7f) { TempBuffer0[11]=0x2d。 } 第 38 頁(yè) else TempBuffer0[11]=0x2b。 //分離出 TH 的百十個(gè)位 if( TempBuffer0[4]==0x30) TempBuffer0[4]=0xfe。 //分離出十位 TempBuffer0[6]=(TH%100)%10+0x30。 //分離出 TL 的百十個(gè)位 if( TempBuffer0[12]==0x30) TempBuffer0[12]=0xfe。 //分離出十位 TempBuffer0[14]=(TL%100)%10+0x30。 t[0]=*pt。 t[1]=*pt。 //0x2d 為 的 ASCII 碼 t[1]=~t[1]。 /* 換算成絕對(duì)值 *********/ x=t[0]+1。 /***********************/ if(x255) /**********************/ t[1]++。 //0xfe 為變 +的 ASCII 碼 t[1]=4。0x70。 //將 t[0]暫存到 X,因?yàn)槿⌒?shù)部分還要用到它 x=4。0x0f。 //將高低字節(jié)的有效值的整數(shù)部分拼成一個(gè)字節(jié) TempBuffer1[1]=t[1]/100+0x30。 //百位數(shù)消隱 TempBuffer1[2]=(t[1]%100)/10+0x30。 //分離出個(gè)位 t[0]=t[0]amp。 //取有效的兩位小數(shù) t[0]=2。 y=dotcode[x]。 //分離出十分位 TempBuffer1[6]=y%10+0x30。 **也可采用多重 if else 方法 ,雖然簡(jiǎn)單 , **但各功能標(biāo)志之間有了明顯的優(yōu)先級(jí)差別 **************************************/ void key_mand(unsigned char x) { 第 40 頁(yè) switch(x) { case 1: up_one=1。 case 2: down_one=1。 case 5: alarm_up_flag=!alarm_up_flag。 case 6: alarm_down_flag=!alarm_down_flag。 case 7: set_temper_flag=!set_temper_flag。 case 8: alarm_switch=!alarm_switch。 default: break。 //在沒有相應(yīng)功能標(biāo)志有效時(shí) down_one=0x00。amp
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1