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

正文內容

基于單片機可控時鐘的設計-資料下載頁

2024-11-17 21:35本頁面

【導讀】文(設計)的寫作能力等?;驹砗突竟δ苡斜容^深的了解;了解和掌握元器件的功能及性能。主要進行文獻綜述,介紹道路劃線車控制系統(tǒng)的研究發(fā)展歷。以89c52作為本系統(tǒng)控制主機,主要控制液晶顯示時間,并。且可以通過鍵盤控制時間;同時通過控制溫度傳感器采集溫度。[3]李朝青.單片機原理及接口技術北京航空航天大學出版社2020-5.[4]閻石.數字電路技術基礎北京高等教育出版社,1998.[5]童詩白,華成英.模擬電子技術基礎北京高等教育出版社,2020.[8]龔運新.單片機C語言開發(fā)技術清華大學出版社,2020年.[10]陳明熒.8051單片機課程設計實訓教材清華大學出版社,2020年.[12]徐江海.單片機實用教程機械工業(yè)出版社,2020年.路,顯示電路組成。

  

【正文】 //忙碌標志位,將 BF 位定義為 引腳 /***************************************************** 函數功能:延時 1ms (3j+2)*i=(333+2)10=1010(微秒 ),可以認為是 1 毫秒 ***************************************************/ void delay1ms() { unsigned char i,j。 for(i=0。i10。i++) for(j=0。j33。j++) 。 } /***************************************************** 函數功能:延時若干毫秒 入口參數: n ***************************************************/ void delaynms(unsigned char n) { unsigned char i。 for(i=0。in。i++) delay1ms()。 } /***************************************************** 函數功能:判斷液晶模塊的忙碌狀態(tài) 返回值: result。 result=1,忙碌 。result=0,不忙 ***************************************************/ bit BusyTest(void) { bit result。 RS=0。 //根據規(guī)定, RS 為低電平, RW 為高電平時,可以讀狀態(tài) RW=1。 E=1。 //E=1,才允許讀寫 _nop_()。 //空操作 _nop_()。 _nop_()。 _nop_()。 //空操作四個機器周期,給硬件反應時間 result=BF。 //將忙碌標志電平賦給 result E=0。 //將 E 恢復低電平 return result。 } /***************************************************** 函數功能:將模式設置指令或顯示地址寫入液晶模塊 入口參數: dictate ***************************************************/ void WriteInstruction (unsigned char dictate) { while(BusyTest()==1)。 //如果忙就等待 RS=0。 //根據規(guī)定, RS 和 R/W 同時為低電平時,可以寫入指令 RW=0。 E=0。 //E 置低電平 (根據表 86,寫指令時, E 為高脈沖, // 就是讓 E 從 0 到 1 發(fā)生正跳變,所以應先置 0 _nop_()。 _nop_()。 //空操作兩個機器周期,給硬件反應時間 P0=dictate。 //將數據送入 P0 口,即寫入指令或地址 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四個機器周期,給硬件反應時間 E=1。 //E 置高電平 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四個機器周期,給硬件反應時間 E=0。 //當 E 由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令 } /***************************************************** 函數功能:指定字符顯示的實際地址 入口參數: x ***************************************************/ void WriteAddress(unsigned char x) { WriteInstruction(x|0x80)。 //顯 示位置的確定方法規(guī)定為 80H+地址碼 x } /***************************************************** 函數功能:將數據 (字符的標準 ASCII 碼 )寫入液晶模塊 入口參數: y(為字符常量 ) ***************************************************/ void WriteData(unsigned char y) { while(BusyTest()==1)。 RS=1。 //RS 為高電平, RW 為低電平時,可以寫入數據 RW=0。 E=0。 //E 置低電平 (根據表 86,寫指令時, E 為高脈沖, // 就是讓 E 從 0 到 1 發(fā)生正跳變,所以應先置 0 P0=y。 //將數據送入 P0 口,即將數據寫入液晶模塊 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四個機器周期,給硬件反應時間 E=1。 //E 置高電平 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四個機器周期,給硬件反應時間 E=0。 //當 E 由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令 } /***************************************************** 函數功能:對 LCD 的顯示模式進行初始化設置 ***************************************************/ void LcdInitiate(void) { delaynms(15)。 //延時 15ms,首次寫指令時應給 LCD 一段較長的反應時間 WriteInstruction(0x38)。 //顯示模式設置: 162 顯示, 57 點陣, 8 位數據接口 delaynms(5)。 //延時 5ms ,給硬件一點反應時間 WriteInstruction(0x38)。 delaynms(5)。 //延時 5ms ,給硬件一點反應時間 WriteInstruction(0x38)。 //連續(xù)三次,確保初始化成功 delaynms(5)。 //延時 5ms ,給硬件一點反應時間 WriteInstruction(0x0c)。 //顯示模式設置:顯示開,無光標,光標不閃爍 delaynms(5)。 //延時 5ms ,給硬件一點反應時間 WriteInstruction(0x06)。 //顯示模式設置:光 標右移,字符不移 delaynms(5)。 //延時 5ms ,給硬件一點反應時間 WriteInstruction(0x01)。 //清屏幕指令,將以前的顯示內容清除 delaynms(5)。 //延時 5ms ,給硬件一點反應時間 } /************************************************************************ 以下是 DS18B20 的操作程序 ************************************************************************/ sbit DQ=P3^6。 unsigned char time。 //設置全局變量,專門用于嚴格延時 /***************************************************** 函數功能:將 DS18B20 傳感器初始化,讀取應答信號 出口參數: flag ***************************************************/ bit Init_DS18B20(void) { bit flag。 //儲存 DS18B20 是否存在的標志, flag=0,表示存在; flag=1,表示不存在 DQ = 1。 //先將數據線拉高 for(time=0。time2。time++) //略微延時約 6 微秒 。 DQ = 0。 //再將數據線從高拉低,要求保持 480~960us for(time=0。time200。time++) //略微延時約 600 微秒 。 //以向 DS18B20 發(fā)出一持續(xù) 480~960us 的低電平復位脈沖 DQ = 1。 //釋放數據線(將數據線拉高) for(time=0。time10。time++) 。 //延時約 30us(釋放總線后需等待 15~60us 讓 DS18B20 輸出存在脈沖) flag=DQ。 //讓單片機檢測是否輸出了存在脈沖( DQ=0 表示存在) for(time=0。time200。time++) //延時足夠 長時間,等待存在脈沖輸出完畢 。 return (flag)。 //返回檢測成功標志 } /***************************************************** 函數功能:從 DS18B20 讀取一個字節(jié)數據 出口參數: dat ***************************************************/ unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat。 //儲存讀出的一個字節(jié)數據 for (i=0。i8。i++) { DQ =1。 // 先將數據線拉高 _nop_()。 //等待一個機器周期 DQ = 0。 //單片機從 DS18B20 讀書據時 ,將數據線從高拉低即啟動讀時序 dat=1。 _nop_()。 //等待一個機器周期 DQ = 1。 //將數據線 人為 拉高 ,為單片機檢測 DS18B20 的輸出電平作準備 for(time=0。time2。time++) 。 //延時約 6us,使主機在 15us 內采樣 if(DQ==1) dat|=0x80。 //如果讀到的數據是 1,則將 1 存入 dat else dat|=0x00。//如果讀到的數據是 0,則將 0 存入 dat //將單片機檢測到的電平信號 DQ 存入 r[i] for(time=0。time8。time++) 。 //延時 3us,兩個讀時序之間必須有大于 1us 的恢復期 } return(dat)。 //返回讀出的十進制數據 } /***************************************************** 函數功能:向 DS18B20 寫入一個字節(jié)數據 入口參數: dat ***************************************************/ WriteOneChar(unsigned char dat) { unsigned char i=0。 for (i=0。 i8。 i++) { DQ =1。 // 先將數據線拉高 _nop_()。 //等待一個機器周期 DQ=0。 //將數據線從高拉低時即啟動寫時序
點擊復制文檔內容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1