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

正文內(nèi)容

項(xiàng)目10數(shù)字溫度采集系統(tǒng)的設(shè)計(jì)-資料下載頁

2025-01-06 17:42本頁面
  

【正文】 示段碼值 0~9 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7, 0xef, 0xdf, 0xbf,0x7f}。 //分別對應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮 ,即位碼 unsigned char TempData[8]。 //存儲顯示值的全局變量 //顯示函數(shù),用于動態(tài)掃描數(shù)碼管。 輸入?yún)?shù) FirstBit 表示需要顯示的第一位,如賦值 //2表示從第三個數(shù)碼管開始顯示,如輸入 0表示從第一個顯示。 //Num表示需要顯示的位數(shù),如需要顯示 99兩位數(shù)值則該值輸入 2 void Display(unsigned char FirstBit,unsigned char Num) { static unsigned char i=0。 DataPort=0。 //清空數(shù)據(jù),防止有交替重影 LATCH1=1。 //段鎖存 LATCH1=0。 DataPort=dofly_WeiMa[i+FirstBit]。 //取位碼 LATCH2=1。 //位鎖存 LATCH2=0。 DataPort=TempData[i]。 //取顯示數(shù)據(jù),段碼 LATCH1=1。 //段鎖存 LATCH1=0。 i++。 if(i==Num) i=0。 } //定時器初始化子程序 void Init_Timer0(void) { TMOD = 0x01。 //使用模式 1, 16位定時器, TH0=0x00。 //給定初值 TL0=0x00。 EA=1。 //總中斷打開 ET0=1。 //定時器中斷打開 TR0=1。 //定時器開關(guān)打開 } //*************************************************************************** // 定時器中斷子程序 void Timer0_isr(void) interrupt 1 { TH0=(655362022)/256。 //重新賦值 2ms TL0=(655362022)%256。 Display(0,8)。 } ④ I2C子函數(shù): include include define _Nop() _nop_() //定義空指令 bit ack。 //應(yīng)答標(biāo)志位 sbit SDA=P2^1。 sbit SCL=P2^0。 //啟動總線 void Start_I2c() { SDA=1。 //發(fā)送起始條件的數(shù)據(jù)信號 _Nop()。 SCL=1。 _Nop()。 //起始條件建立時間大于 ,延時 _Nop()。 _Nop()。 _Nop()。 _Nop()。 SDA=0。 //發(fā)送起始信號 _Nop()。 //起始條件鎖定時間大于 4μ _Nop()。 _Nop()。 _Nop()。 _Nop()。 SCL=0。 //鉗住 I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) _Nop()。 _Nop()。 } // 結(jié)束總線 void Stop_I2c() { SDA=0。 //發(fā)送結(jié)束條件的數(shù)據(jù)信號 _Nop()。 //發(fā)送結(jié)束條件的時鐘信號 SCL=1。 //結(jié)束條件建立時間大于 4μ _Nop()。 _Nop()。 _Nop()。 _Nop()。 _Nop()。 SDA=1。 //發(fā)送 I2C總線結(jié)束信號 _Nop()。 _Nop()。 _Nop()。 _Nop()。 } /* 字節(jié)數(shù)據(jù)傳送函數(shù) ,函數(shù)原型 : void SendByte(unsigned char c)。 功能 : 將數(shù)據(jù) c發(fā)送出去 ,可以是地址 ,也可以是數(shù)據(jù) ,發(fā)完后等待應(yīng)答 ,并對此狀態(tài)位進(jìn)行操作 .(不應(yīng)答或非應(yīng)答都使 ack=0 假 )發(fā)送數(shù)據(jù)正常, ack=1。 ack=0表示被控器無應(yīng)答或損壞。 */ void SendByte(unsigned char c) { unsigned char BitCnt。 for(BitCnt=0。BitCnt8。BitCnt++) //要傳送的數(shù)據(jù)長度為 8位 { if((cBitCnt)amp。0x80)SDA=1。 //判斷發(fā)送位 else SDA=0。 _Nop()。 SCL=1。 //置時鐘線為高,通知被控器開始接收數(shù)據(jù)位 _Nop()。 _Nop()。 //保證時鐘高電平周期大于 4μ _Nop()。 _Nop()。 _Nop()。 SCL=0。 } _Nop()。 _Nop()。 SDA=1。 //8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位 _Nop()。 _Nop()。 SCL=1。 _Nop()。 _Nop()。 _Nop()。 if(SDA==1)ack=0。 else ack=1。 //判斷是否接收到應(yīng)答信號 SCL=0。 _Nop()。 _Nop()。 } /* 字節(jié)數(shù)據(jù)傳送函數(shù) ,函數(shù)原型 : unsigned char RcvByte()。 功能 : 用來接收從器件傳來的數(shù)據(jù) ,并判斷總線錯誤 (不發(fā)應(yīng)答信號 ),發(fā)完后請用應(yīng)答函數(shù)。 */ unsigned char RcvByte() { unsigned char retc。 unsigned char BitCnt。 retc=0。 SDA=1。 //置數(shù)據(jù)線為輸入方式 for(BitCnt=0。BitCnt8。BitCnt++) { _Nop()。 SCL=0。 //置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位 _Nop()。 _Nop()。 //時鐘低電平周期大于 _Nop()。 _Nop()。 _Nop()。 SCL=1。 //置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效 _Nop()。 _Nop()。 retc=retc1。 if(SDA==1)retc=retc+1。 //讀數(shù)據(jù)位 ,接收的數(shù)據(jù)位放入 retc中 _Nop()。 _Nop()。 } SCL=0。 _Nop()。 _Nop()。 return(retc)。 } // 非應(yīng)答子函數(shù) void NoAck_I2c(void) { SDA=1。 _Nop()。 _Nop()。 _Nop()。 SCL=1。 _Nop()。 _Nop()。 //時鐘低電平周期大于 4μ _Nop()。 _Nop()。 _Nop()。 SCL=0。 //清時鐘線,鉗住 I2C總線以便繼續(xù)接收 _Nop()。 _Nop()。 } ? 將上面的幾個程序在 KeilC51中聯(lián)合編譯成“ PCF8591一路 AD數(shù)碼管顯示 .hex”后,通過 USB端口下載到實(shí)驗(yàn)板的單片機(jī)中運(yùn)行,調(diào)節(jié) W4,數(shù)碼管 DS1就會從 0~255顯示轉(zhuǎn)換好的相應(yīng)電壓值的數(shù)字值,如圖所示。 項(xiàng)目小結(jié) ? 本項(xiàng)目主要介紹了常與單片機(jī)連接用來進(jìn)行 A/D轉(zhuǎn)換的 ADC0809芯片和常用的數(shù)字溫度測量芯片 DS18B20的性能、內(nèi)部結(jié)構(gòu)以及應(yīng)用方法。 ? A/D轉(zhuǎn)換器的主要性能指標(biāo)包括分辨率、轉(zhuǎn)換時間、量程和精度,這也是選擇A/D轉(zhuǎn)換器要考慮的參數(shù)。 A/D轉(zhuǎn)換器通常分為逐次逼近(比較)式、雙積分式、計(jì)數(shù)式和并行式 A/D轉(zhuǎn)換器, ADC0809就是逐次逼近(比較)式的 A/D轉(zhuǎn)換芯片。在用單片機(jī)控制 ADC0809工作時注意其控制信號的時序要求。 ? DS18B20是單總線( 1- Wire)的數(shù)字輸出溫度芯片,集溫度傳感器、 A/D轉(zhuǎn)換器等于一身,直接將轉(zhuǎn)換好的數(shù)字溫度值傳送給單片機(jī)。 DS18B20具有唯一的序列號,可以在一根通信線上掛接多只 DS18B20;最高 12位分辨率,精度達(dá)土176。 C;抗干擾能力強(qiáng);功耗低;線路設(shè)計(jì)簡單;體積小,實(shí)用范圍較廣。DS18B20主要由 64位光刻 ROM、高速緩存 RAM、溫度傳感器、非易失性溫度報(bào)警觸發(fā)器 TH和 TL及配置寄存器( EEPROM)等組成。應(yīng)用 DS18B20必須了解其內(nèi)部結(jié)構(gòu),掌握其操作命令字和操作時序。在進(jìn)行溫度值讀取時必須嚴(yán)格按照其初始化、讀操作和寫操作的時間隙要求才能正確讀取溫度值。 ? 本項(xiàng)目中介紹了用 ADC0908設(shè)計(jì)數(shù)字電壓表和用 DS18B20設(shè)計(jì)數(shù)字溫度采集系統(tǒng)的設(shè)計(jì)方法和過程。 思考與訓(xùn)練 (一)知識思考: 1. A/D轉(zhuǎn)換器有哪些主要性能指標(biāo)?它們在選擇 A/D轉(zhuǎn)換器起怎樣的作用? 2. A/D轉(zhuǎn)換器有哪些分類? 3. ADC0809內(nèi)部的結(jié)構(gòu)是怎樣的? 4. ADC0809有什么特點(diǎn)?怎樣使用它? 5. ADC0809與 51單片機(jī)怎么連接?畫出電路圖。 6. DS18B20有些什么特點(diǎn)?簡單說明其工作原理。 7. DS18B20內(nèi)部的存儲器是怎樣分配的 ?我們怎么去使用它?。 8. DS18B20有哪些命令字?各有什么用處? 9. 單片機(jī)是怎樣控制 DS18B20? DS18B20的初始化、寫數(shù)據(jù)和讀數(shù)據(jù)時序是怎樣的? (二)項(xiàng)目訓(xùn)練: 1.用 AT89C51和 ADC0809設(shè)計(jì)一個數(shù)字電壓表,要求電壓測量范圍為0V~+50V,用一只 4位共陽極的數(shù)碼管顯示電壓值,精確到 。 2.用 AT89C51和 DS18B20設(shè)計(jì)一個溫度計(jì),要求用一只 4位共陽極的數(shù)碼管顯示測量到的溫度值,要求保留兩位小數(shù)。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1