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

正文內(nèi)容

基于單片機的溫控報警器設計(參考版)

2025-06-11 05:13本頁面
  

【正文】 //延時 DQ_IN。 //延時 DQ_SET。 //延時 DQ_CLR。 //設置 PB3 為輸出 DQ_SET。 NOP()。 //空指令,作用延時 NOP()。 } /*************************18b20 復位函數(shù)*************************************/ 44 //10us 級別延時子函數(shù) void delay_10us(unsigned char i) { if(i==0) { return 。 lcd_w_data(display[ddd%10])。 lcd_w_(0X80+15,1)。 lcd_w_data(display[ddd/10%10])。 lcd_w_(0X80+13,1)。 lcd_w_data(display[ddd/100%10])。 lcd_w_(0X80+12,1)。 lcd_w_data(display[ddd/1000%10])。 //關閉蜂鳴器 } } 43 } /********************************************************/ void displayl(uint ddd) //實時溫度顯示子函數(shù) { lcd_w_(0X80+11,1)。 //點亮 led 燈 } if(ttemperture) //當實時溫度比設定溫度低 { led_off。 //設定溫度顯示子 函數(shù) if(temperture=t) //當實時溫度比設定溫度高 { bell_on。 //100us 延時 ss()。 //將從 18b20 讀回來的數(shù)據(jù)傳入全局變量 temperture 中 displayl(temperture)。 //關 led 燈 bell_off。 //端口初始化 lcd_init()。 } /*****************************************************************************/ ///主函數(shù) void main(void) { delay_ms(100)。 display_str(0,1,set T:)。 display_str(0,0,realtime T:)。 //顯示光標右移設置,檢測忙信號 lcd_w_(0x0c,1)。 //關閉顯示,檢測忙信號 lcd_w_(0x01,1)。 lcd_w_(0x38,1)。 lcd_w_(0x38,0)。 //延時 5ms lcd_w_(0x38,0)。 //拉低 en 電平 } //lcd 初始化子函數(shù) void lcd_init(void) { 41 lcd_w_(0x38,0)。_NOP()。 lcd_en_1。 //空命令,用于延時 dataport=w_data。 //拉高 rs 電平 lcd_rw_0。 //拉低 en 電平 } //lcd1602 寫數(shù)據(jù)子函數(shù) void lcd_w_data(uchar w_data) { lcd_busy()。 _NOP()。 lcd_en_1。 //空指令,延時 dataport=。 //拉低 rs 電平 lcd_rw_0。 } //lcd1602 寫命令子函數(shù) void lcd_w_(uchar ,uchar attribc) { if(attribc) //attribc 為是否是否需求判 斷 lcd1602 忙信號 { lcd_busy()。 //自讀 PC端口,等待 lcd1602 返回來的信號為0,即不忙 } lcd_en_0。 //讀 PC 端口,將數(shù)據(jù)傳入 val 局部變量 while(valamp。 DDRC=0x00。 _NOP()。 _NOP()。 lcd_rs_0。 } } } //============================================================== 39 ///=================================================================== void lcd_busy(void) //lcd1602 忙信號子函數(shù) { uchar val。amp。 x = 0。amp。 //x, y 為顯示的位置, *s 是要顯示的子函數(shù) x++。\039。 lcd_w_data(code)。 //總位置變量 lcd_w_(temp,0)。 if(posy==1) //判斷 y軸是否為 1 { temp|=0x40。 posyamp。 //PORTB|=BIT(3)。 PORTB|=(1PB2)|(14)。=~(1PB2)。 PORTC=0x00。 PORTD=0x0C。j++)。i++) { for(j=0。 for(i=0。 } while(us) { NOP()。 void display_2(uint ddd)。 36 void displayl(uint ddd)。 uchar read_18b20_byte(void)。 uint read_18b20_temp(void)。 void display_char(uchar x,uchar y,uchar code)。 void lcd_init(void)。 void lcd_w_(uchar ,uchar attribc)。 void port_init(void)。 //設定溫度變量,分別 xs 是小數(shù)位,ge 是個位, shi 是十位, bai 是百位, sw是轉(zhuǎn)換位變量 //============================================================= ///函數(shù)聲明 void delay_ms(uint ms)。 //全局變量,實時溫度變量 int t=50。=~(1PD4) //關閉蜂鳴器 /***********************************************************/ 35 define dataport PORTC //設置 dataport 代表 PORTC define busy 0x80 //lcd1602 忙信號代碼 define xtal 1 //============================================================== uchar display[]=0123456789。(1PD3)) //設置讀 PD3,數(shù)字位減信號 define led_on PORTBamp。(1PB2)) //設置讀 PB2,數(shù)字位轉(zhuǎn)換信號 define plus (PINDamp。=~(1PB3) //拉低 PB3 電平 define DQ_R (PINBamp。=~BIT(PD7) //1602 的 en 信號拉低電平 define DQ_OUT DDRB|=(1PB3) //設置 PB3為輸出 define DQ_IN DDRBamp。=~BIT(PD5) //1602 的 rs 信號拉低電平 define lcd_rw_1 PORTD|=BIT(PD6) //1602 的 rw 信號拉高電平 define lcd_rw_0 PORTDamp。所以做的修改在延遲方面,一如預期,只要根據(jù)第一部分第二章調(diào)試可以啟動 DS18B20 的方法延遲。所以,延遲不起作用。事實上,這里也是一個時間的問題,在設計之初就沒有很好地明白,原來 DS18B20 這樣一個敏感的設備耽誤工作。經(jīng)過學習后 LCD1602 的功能性質(zhì)的毫秒級后 ,每完成的數(shù)據(jù)延遲是用來等待 LCD1602 一次寫入數(shù)據(jù)的動作完成, 解決顯示不匹配的位置和設計。在開始 沒有考慮到 LCD1602 的性質(zhì)。影像穩(wěn)定器的軟件和硬件,應用軟件防抖在這個設計中,單片機檢測后約 100ms 的延遲進行電平轉(zhuǎn)換的關鍵水平變動后不讀,要收取穩(wěn)定的觸發(fā)電平轉(zhuǎn)換,直到所需的功能。在開始的時候沒有加入防抖功能,會有一個連續(xù)變化或不穩(wěn)定的關鍵值。 按鍵 防抖調(diào)試 是 調(diào)試設定溫度,實時和準確度 是否良好 。其次,你必須確定組件元 件完好, 在其他系統(tǒng)上運行或檢測每個組件 的工作情況是否良好 。首先,設計時,必須根據(jù) 原理圖 來連接每個設備。 6 系統(tǒng)調(diào)試 在本節(jié)中,設計調(diào)試。在最后的死循環(huán)當中,程序在做一個不斷的掃描,把讀回來的溫度數(shù)據(jù)賦予全局變量 temperature,然后顯示函數(shù)顯示讀回來的實時溫度, 判斷分析按鍵是否按下。 //關閉 led 燈 bell_off。 //打開蜂鳴器 led_on。 //溫度設定子函數(shù) display_2(t)。 //實時溫度顯示子函數(shù) 29 delay_us(100)。 //關蜂鳴器 while(1) { temperture=read_18b20_temp()。 //lcd1602 初始化 led_off。 //100ms 延時 port_init()。 } } t=(bai*1000)+(shi*100)+(ge*10)+(xs)。 bai。amp。 if(bai1) { bai=0。(sw==4)) //當加 1鍵按下并且轉(zhuǎn)換位變量 sw 等于 4,百位加法變化 { delay_ms(100)。 } } if((plus==0)amp。 shi。amp。 if(shi9) { shi=0。(sw==3)) //當加 1鍵按下并且轉(zhuǎn)換位變量 sw 等 于 3,十位加法變化 { delay_ms(100)。 } } 27 if((plus==0)amp。 ge。amp。 //個位加 1 if(ge9) //當個位加到 10 歸 0 { ge=0。(sw==2)) //當加 1鍵按下并且轉(zhuǎn)換位變量 sw 等于 2 { delay_ms(100)。 } } if((plus==0)amp。 xs。amp。 //小數(shù)位加 1 if(xs9) //當小數(shù)位加到 10 歸 0 { xs=0。(sw==1)) //當加 1鍵按下并且轉(zhuǎn)換位變量 sw 等于 1 { delay_ms(100)。 } } if((plus==0)amp。 /軟件防抖,延時 sw++。其次延遲等待命令完成,給一個下降沿 LCD1602 寫命令完成。后 RS 水平被拉低,并拉低 RW 水平,延緩 LCD1602 反應。 //拉低 en 電平 } 這個函數(shù)是一個單片機的寫命令到 LCD1602 功能并有兩個參數(shù),輸入命令 COM,如果你想檢測忙音信號則用 attribc 寫命令。 _NOP()。 lcd_en_1。 //空指令,延時 dataport=。 //拉低 rs 電平 lcd_rw_0。 LCD1602 寫命令子函數(shù) 程序代碼如下: void lcd_w_(uchar ,uchar attribc) { if(attribc) //attribc 為是否需要 判斷 lcd1602 忙信號 { lcd_busy()。檢測 LCD1602 是在一個繁忙的狀態(tài),當 LCD1602 閑置無效的 RS 級別(對應引腳查找表 ),并拉低的 RW 級延時等待 LCD1602 反應。 lcd_en_0。 //拉高 en 電平 _NOP()。 //將要輸入到 lcd1602 的數(shù)據(jù)放到 PC 端口 _NOP()。 //拉低 rw 電平 _NOP()。 //檢測 lcd 是否處于忙狀態(tài) lcd_rs_1。 //第二行要顯示的初始內(nèi)容 delay_ms(5)。 //第一行要顯示的初始內(nèi)容
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1