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

正文內(nèi)容

單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)報(bào)告:基于89c51單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)-在線瀏覽

2024-12-27 18:56本頁面
  

【正文】 口 串行 傳輸并與單片機(jī) 相連,通過這根線單片機(jī) 讀取數(shù)據(jù)和寫入指令。 4 數(shù)字溫度計(jì) 軟件 設(shè)計(jì) 軟件編寫 有三 個(gè) 模塊 ,傳感器溫器度讀取和液晶屏數(shù)據(jù)顯示 及單片機(jī)對(duì)采集來溫度數(shù)據(jù)的計(jì)算 。 因?yàn)槭菃纹瑴y(cè)量 在 溫度傳感器進(jìn)行測(cè)量 流程圖中 跳過 ROM 指令 , 傳感器 流 程序 程圖如 附錄 A 圖( a)所示 。這里我們要注意 D7 口是作為忙碌位,當(dāng)單片機(jī)在向液晶屏寫入數(shù)據(jù)時(shí)必須 當(dāng)該位為檢測(cè)為低電平時(shí)才可以寫入數(shù)據(jù) 。 綜上 主程序流程如下圖 3 所示。 圖 3 主程序流程圖 在 Keil Uvision3 上將編寫的源代碼錄入生成后綴名為 .c 的文件,經(jīng)過編譯可將生成的 .hex 格式的文件。 Y N 開始 液晶屏初始化 檢測(cè)傳感器是否存在? 傳感器檢測(cè)溫度 液晶屏顯示溫度 顯示報(bào)錯(cuò)信息顯示 溫度傳感器初始化 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)報(bào)告 4 6 數(shù)字溫度計(jì) 的硬件仿真調(diào)試 及說明 將 生成的 .hex 其 燒入單片機(jī)后接通單片機(jī)電源,系統(tǒng)開始工作。 經(jīng)過查詢資料得 因?yàn)樵诔跏蓟瘯r(shí)傳感器的寄存器中會(huì)默認(rèn)一個(gè)國定數(shù)值,經(jīng)計(jì)算后顯示正好為 85,所以不可避免但能通過修改延時(shí)程序改變其顯示時(shí)間。 圖 5 手捏住傳感器的 溫度 當(dāng)拔掉 DS18B20 溫度傳感器, 重新啟動(dòng)傳感器時(shí), 屏幕 會(huì)顯示報(bào)錯(cuò)信息 ,如下圖 7 所示 .。 7 總結(jié) 我 在設(shè)計(jì)中遇到了這樣的問題,在程序 編譯 好之后無法在 Protues 軟件中仿真 電路中 實(shí)現(xiàn),但是程序卻可以在實(shí)物電路中正常運(yùn)行。 我通過 下載新版本的軟件完成了對(duì)該設(shè)計(jì)的仿真,由于篇幅所限,這里未能 展示出結(jié)果。 其次是 對(duì)于這次課程設(shè)計(jì)本身的結(jié)果,我同樣有很多收獲。就拿這次來說 DS18B20 溫度傳感器和單片機(jī)的通信就需要嚴(yán)格的時(shí)序 控制, 必須用延時(shí)程序 嚴(yán)格控制延時(shí)的子程序。 //定義字符數(shù)組顯示數(shù)字 unsigned char code Str[]={ Thermomenter }。 //說明沒有檢測(cè)到 unsigned char code Temp[]={Temp:}。 //溫度單位 sbit RS=P2^0。 //讀寫選擇位,將 RW 位定義為 引腳 sbit E=P2^2。 //忙 碌標(biāo)志位,將 BF 位定義為 引腳 void delay1ms() //延時(shí)功能函數(shù) 延時(shí) 1ms { unsigned char i,j。i10。 for(j=0。j++)。 for(i=0。i++)。 } bit BusyTest(void) //判斷液晶屏是否忙碌的函數(shù) { bit result。 //根據(jù)規(guī)定, RS 為低電平, RW 為高電平時(shí),可以讀狀態(tài) RW=1。 //E=1,才允許讀寫 _nop_()。 _nop_()。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 result=BF。 //將 E 恢復(fù)低電平 return result。 //如果忙就等待 RS=0。 E=0。 _nop_()。 //將數(shù)據(jù)送入 P0 口,即寫入指令或地址 _nop_()。 _nop_()。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1。 _nop_()。 _nop_()。 //當(dāng) E 由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令 } void WriteAddress(unsigned char x) //指定字符顯示的實(shí)際地址 的函數(shù) { WriteInstruction(x|0x80)。 //液晶塊是否忙碌 RS=1。 E=0。 //將數(shù)據(jù)送入 P0 口,即將數(shù)據(jù)寫入液晶模塊 _nop_()。 _nop_()。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)報(bào)告 11 E=1。 _nop_()。 _nop_()。 //當(dāng) E 由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令 } void LcdInitiate(void) //LCD 的顯示模式進(jìn)行初始化設(shè)置 { delaynms(15)。 //設(shè)置 模式: 162 顯示, 57 點(diǎn)陣, 8 位數(shù)據(jù)接 delaynms(5)。 delaynms(5)。 //連續(xù)三次,確保初始化成功 delaynms(5)。 //顯示模式設(shè)置:顯示開,無光標(biāo),光標(biāo)不閃爍 delaynms(5)。 //顯示模式設(shè)置:光標(biāo)右移,字符不移 delaynms(5)。 //清屏幕指令,將以前的顯示內(nèi)容清除 delaynms(5)。 unsigned char time。 //儲(chǔ)存 DS18B20 存在的標(biāo)志, flag=0 存在; flag=1 不存在 DQ = 1。time2。 DQ = 0。time200。 //以向 DS18B20 發(fā)出一持續(xù) 480~960us 的低電平復(fù)位脈沖 DQ = 1。time10。 //釋放總線后需等待 30us 讓 其 輸出存在脈沖 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)報(bào)告 12 flag=DQ。time200。 //延時(shí)足夠長時(shí)間,等待存在脈沖輸出完畢 return (flag)。 unsigned char dat。i8。 // 先將數(shù)據(jù)線拉高 _nop_()。 //單片機(jī)從 DS18B20 讀數(shù)據(jù)時(shí) ,將數(shù)據(jù)線 正跳便開始讀 dat=1。 //等待一個(gè)機(jī)器周期 DQ = 1。time2。//延時(shí)約 6us,使主機(jī)在 15us 內(nèi)采樣 if(DQ==1)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1