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

正文內(nèi)容

微機(jī)原理及應(yīng)用課程設(shè)計(jì)-基于89c52單片機(jī)的高溫天氣報(bào)警器系統(tǒng)設(shè)計(jì)(參考版)

2024-11-14 11:39本頁面
  

【正文】 else BEEP=0。 y=1。} else if(TN39) {P1=01。 //顯示溫度的小數(shù)部分 delaynms(10)。 //計(jì)算溫度的小數(shù)部分 ,將余數(shù)乘以 10 再除以 16 取整,這樣得到的是溫度小數(shù)部分的第一位數(shù)字 (保留 1位小數(shù) ) display_temp1(TN)。 //接著讀的是溫度值高位 TN=TH*16+TL/16。 //讀溫度準(zhǔn)備 TL=ReadOneChar()。 //顯示溫度的小數(shù)點(diǎn) display_cent()。 display_symbol()。 //延時(shí) 5ms 給硬件一點(diǎn)反應(yīng)時(shí)間 if(Init_DS18B20()==1) display_error()。 //儲(chǔ)存溫度的小數(shù)部分 LcdInitiate()。 //儲(chǔ)存暫存器的溫度高位 unsigned char TN。 //讀取溫度寄存器 ,前兩個(gè)分別是溫度的低位和高位 微機(jī)原理及應(yīng)用課程設(shè)計(jì)說明書 37 } void main(void) {unsigned char TL。 //將 DS18B20 初始化 WriteOneChar(0xCC)。time++)。 // 啟動(dòng)溫度轉(zhuǎn)換 for(time=0。 //將 DS18B20 初始化 WriteOneChar(0xCC)。//小數(shù)部分的第一位數(shù)字字符常量寫入 LCD delaynms(50)。 //延時(shí) 1ms 給硬件一點(diǎn)反應(yīng)時(shí)間 } void display_temP3(unsigned char x) { WriteAddress(0x4a)。 //將十位數(shù)字的字符常量寫入 LCD WriteData(digit[l])。 //寫顯示地址 ,將在第 2 行第 7列開始顯示 WriteData(digit[j])。 //取十位 l=x%10。 //延時(shí) 1ms 給硬件一點(diǎn)反應(yīng)時(shí)間 } } void display_temp1(unsigned char x) { //j,k,l 分別儲(chǔ)存溫度的百位、十位和個(gè)位 j=x/100。 //將字符常量寫入 LCD i++。\039。 //寫顯示地址,將在第 2 行第 12 列開始顯示 i = 0。 //延時(shí) 1ms 給硬件一點(diǎn)反應(yīng)時(shí)間 } 微機(jī)原理及應(yīng)用課程設(shè)計(jì)說明書 36 void display_cent(void) { unsigned char i。)。 //寫顯示地址,將在第 2行第 10 列開始顯示 WriteData(39。 //指向下一個(gè)字符 delaynms(50)。) //只要沒 有寫到結(jié)束標(biāo)志,就繼續(xù)寫 { WriteData(Temp[i])。 //從第一個(gè)字符開始顯示 while(Temp[i] != 39。 WriteAddress(0x40)。 //指向下一個(gè)字符 delaynms(100)。) //只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫 { WriteData(Str[i])。 //從第一個(gè)字符開始顯示 while(Str[i] != 39。 WriteAddress(0x00)。 //延時(shí) 100ms 較長時(shí)間,以看清關(guān)于 顯示的說明 } while(1)。 //將字符常量寫入 LCD i++。\039。 //寫顯示地址,將在第 1行第 1列開始顯示 i = 0。 } void display_error(void) { unsigned char i。time++)。 //將 dat 中的各二進(jìn)制位數(shù)據(jù)右移 1位 } for(time=0。time++)。 //釋放數(shù)據(jù)線 for(time=0。time++)。 //利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù) , //并將其送到數(shù)據(jù)線上等待 DS18B20 采樣 for(time=0。 //將數(shù)據(jù)線從高拉低時(shí)即啟動(dòng)寫時(shí)序 DQ=datamp。 // 先將數(shù)據(jù)線拉高 _nop_()。 i8。 //返回讀出的十進(jìn)制數(shù)據(jù) } WriteOneChar(unsigned char dat) { unsigned char i=0。time++)。//如果讀到的數(shù)據(jù)是 0,則將 0存入 dat //將單片機(jī)檢測到的電平信號(hào) DQ 存入 r[i] for(time=0。time++)//延時(shí)約 6us 使主機(jī)在 15us 內(nèi)采樣 if(DQ==1) dat|=0x80。 //將數(shù)據(jù)線 人為 拉高 ,為單片機(jī)檢測 DS18B20 的輸出電平作準(zhǔn)備 for(time=0。 _nop_()。 //等待一個(gè)機(jī)器周期 DQ = 0。i++) { DQ =1。 //儲(chǔ)存讀出的一個(gè)字節(jié)數(shù)據(jù) for (i=0。 //返回檢測成功標(biāo)志 } unsigned char ReadOneChar(void) { unsigned char i=0。time++) 。 //讓單片機(jī)檢測是否輸出了存在脈沖( DQ=0 表示存在) for(time=0。time++)。 //釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time=0。time++)。 //再將數(shù)據(jù)線從高拉低,要求保持 480~960us for(time=0。time++) 。 //先將數(shù)據(jù)線拉高 for(time=0。 //設(shè)置全局變量,專門用于嚴(yán)格延時(shí) bit Init_DS18B20(void) { bit flag。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 } sbit DQ=P3^4。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x01)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x06)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x0c)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x38)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x38)。 //延時(shí) 15ms,首次寫指令時(shí)應(yīng)給 LCD一段較長的反應(yīng)時(shí)間 WriteInstruction(0x38)。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0。 微機(jī)原理及應(yīng)用課程設(shè)計(jì)說明書 33 _nop_()。 //E 置高電平 _nop_()。 _nop_()。 _nop_()。 //E 置低電平 (寫指令時(shí), E 為高脈沖,就是讓 E從 0到 1發(fā)生正跳變,所以應(yīng)先置 0 P0=y。 //RS 為高電平, RW 為低電平時(shí),可以寫入數(shù)據(jù) RW=0。 //顯示位置的確定方法規(guī)定為 80H+地址碼 x } void WriteData(unsigned char y) { while(BusyTest()==1)。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0。 _nop_()。 //E 置高電平 _nop_()。 _nop_()。 _nop_()。 //空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 P0=dictate。 //E 置低電平 (寫指令時(shí), E 為高脈沖,就是讓 E從 0到 1發(fā)生正跳變,所以應(yīng)先置 0 _nop_()。 //根據(jù)規(guī)定, RS和 R/W 同時(shí)為低電平時(shí),可以寫入指令 RW=0。 } void WriteInstruction (unsigned char dictate) { while(BusyTest()==1)。 //將忙碌標(biāo)志電平賦給 result E=0。 _nop_()。 //空操作 _nop_()。 E=1。 RS=0。i++) delay1ms()。 for(i=0。j++)。i++) for(j=0。 for(i=0。 sbit y=P1^2。 //使能信號(hào)位,將 E位定義為 引腳 sbit BF=P0^7。 //寄存器選擇位,將 RS 位定義為 引腳 sbit RW=P2^6。 unsigned char TN。 //說明顯示的是溫度 unsigned char code Cent[]={C SWM}。 //顯示西華大學(xué)漢語拼音字母 unsigned char code Error[]={Error!Check!}。 微機(jī)原理及應(yīng)用課程設(shè)計(jì)說明書 30 參考文獻(xiàn) 1]《 Protel99SE EDA 技術(shù)及應(yīng)用》徐崢穎 編著 ,北京:機(jī)械工業(yè)出版社, 2020 [2]《單片機(jī)系統(tǒng)的 protues 設(shè)計(jì)與仿真》張靖武編著,北京:電子工業(yè)出版社, 2020 [3]《單片機(jī)原理及接口技術(shù)》李朝青編著,北京:北京航空航天大學(xué)出版社, 2020 [4]《 MCS51 單片機(jī)應(yīng)用開發(fā)實(shí)用子程序》邊春遠(yuǎn)編著,北京:人民郵電出版社, 2020 微機(jī)原理及應(yīng)用課程設(shè)計(jì)說明書 31 附:程序代碼 include //包含單片機(jī)寄存器的頭文件 include //包含 _nop_()函數(shù)定義的頭文件 unsigned char code digit[10]={0123456789}。 我們將在以后的日子里更加努力的學(xué)習(xí),不斷的豐富本次設(shè)計(jì)是自己人生歷程上的又一升華,從選題到定稿,再仿真,既是一次知識(shí)技能上的挑戰(zhàn),又是一次加快我理解知識(shí),運(yùn)用知識(shí)的成功實(shí)踐,更重要的是看見自己設(shè)計(jì)的高溫天氣報(bào)警系統(tǒng)仿真成功,感覺不錯(cuò)。 由于時(shí)間及精力所限,對(duì)溫度控制系統(tǒng)做了整體設(shè)計(jì),具體實(shí)現(xiàn)了其中的溫度報(bào)警部分設(shè)計(jì),即溫度控制系統(tǒng)的采集、顯示及報(bào)警模塊。 本設(shè)計(jì)的重點(diǎn)、難點(diǎn)是: ( 1) 要掌握溫度傳感器的原理、結(jié)構(gòu)、應(yīng) 用等 ; ( 2) 考慮從非電量信號(hào)到電量信號(hào)的電路實(shí)現(xiàn)原理以及與單片機(jī)的接口; ( 3) 熟悉 MCS51編程的技術(shù),實(shí)現(xiàn)單片機(jī)對(duì)溫度的調(diào)節(jié)控制; ( 4) 整體電路的仿真調(diào)試。表示程序調(diào)試通過。通過調(diào)試可以檢查出系統(tǒng)出現(xiàn)的一些錯(cuò)誤,從而進(jìn)行下一步的修改。程序流程圖如圖 64。 Y N Y 移入溫度暫存器 讀取操作, CRC校驗(yàn) 發(fā)讀取溫度命令 發(fā)跳過 rom 命令 CRC 校驗(yàn)正? 9 字節(jié)完? 結(jié) 束 N 圖 62 微機(jī)原理及應(yīng)用課程設(shè)計(jì)說明書 24 : 計(jì)算溫度子程序?qū)? RAM 中讀取值進(jìn)行 BCD 碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖 63所示 。 圖 61 發(fā) DS18B20 復(fù)位命令 35,適宜溫度, LED 綠燈亮 微機(jī)原理及應(yīng)用課程設(shè)計(jì)說明書 23 :
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1