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

正文內(nèi)容

基于單片機的溫控報警器設計-資料下載頁

2025-06-07 05:13本頁面
  

【正文】 ge=0,shi=5,bai=0,sw=0。 //設定溫度變量,分別 xs 是小數(shù)位,ge 是個位, shi 是十位, bai 是百位, sw是轉(zhuǎn)換位變量 //============================================================= ///函數(shù)聲明 void delay_ms(uint ms)。 void delay_us(uint us)。 void port_init(void)。 void lcd_busy(void)。 void lcd_w_(uchar ,uchar attribc)。 void lcd_w_data(uchar w_data)。 void lcd_init(void)。 void locate(char posx,char posy)。 void display_char(uchar x,uchar y,uchar code)。 void display_str(uchar x,uchar y,uchar *s)。 uint read_18b20_temp(void)。 void write_18b20_(uchar val)。 uchar read_18b20_byte(void)。 void init_18b20(void)。 36 void displayl(uint ddd)。 void ss(void)。 void display_2(uint ddd)。 /**************************************************************/ void delay_us(uint us) //us 級別延時子函數(shù) { if(us==0) { return。 } while(us) { NOP()。 } } void delay_ms(uint ms) //ms 級別子函數(shù) { uint i=0,j=0。 for(i=0。ims。i++) { for(j=0。j(uint)(xtal*1432)。j++)。 } } 37 /**************************************************************/ void port_init(void) //端口初始化子函數(shù) { DDRD=0xf0。 PORTD=0x0C。 DDRC=0xff。 PORTC=0x00。 DDRBamp。=~(1PB2)。 DDRB|=(14)。 PORTB|=(1PB2)|(14)。 //DDRB|=BIT(3)。 //PORTB|=BIT(3)。 } /*****************************************************************/ void locate(char posx,char posy) //1602 位置顯示子函數(shù) { uchar temp。 posyamp。=0x01。 if(posy==1) //判斷 y軸是否為 1 { temp|=0x40。 //y 軸為 1時,加十六位的 40 } temp|=0x80|posx。 //總位置變量 lcd_w_(temp,0)。 } 38 //字符 lcd1602 顯示子函數(shù) void display_char(uchar x,uchar y,uchar code) { locate(x,y)。 lcd_w_data(code)。 } //字符串 lcd1602 顯示子函數(shù) void display_str(uchar x,uchar y,uchar *s) { while(*s != 39。\039。) //判斷顯示內(nèi)容不為空 { display_char(x,y,*s++)。 //x, y 為顯示的位置, *s 是要顯示的子函數(shù) x++。 if((y == 0) amp。amp。 (x = 16)) //當 x軸不夠位置顯示,字符自動換行 { y = 1。 x = 0。 } else if((y == 1) amp。amp。 (x = 16)) { return。 } } } //============================================================== 39 ///=================================================================== void lcd_busy(void) //lcd1602 忙信號子函數(shù) { uchar val。 dataport=0xff。 lcd_rs_0。 lcd_rw_1。 _NOP()。 lcd_en_1。 _NOP()。 _NOP()。 DDRC=0x00。 val=PINC。 //讀 PC 端口,將數(shù)據(jù)傳入 val 局部變量 while(valamp。busy) //判斷 lcd1602 為工作中,工作完成繼續(xù)下一條代碼 { val=PINC。 //自讀 PC端口,等待 lcd1602 返回來的信號為0,即不忙 } lcd_en_0。 DDRC=0xff。 } //lcd1602 寫命令子函數(shù) void lcd_w_(uchar ,uchar attribc) { if(attribc) //attribc 為是否是否需求判 斷 lcd1602 忙信號 { lcd_busy()。 40 } lcd_rs_0。 //拉低 rs 電平 lcd_rw_0。 //拉低 rw 電平 _NOP()。 //空指令,延時 dataport=。 //將要輸入到 1602 的命令放到 PC 端口 _NOP()。 lcd_en_1。 //拉高 en 電平 _NOP()。 _NOP()。 lcd_en_0。 //拉低 en 電平 } //lcd1602 寫數(shù)據(jù)子函數(shù) void lcd_w_data(uchar w_data) { lcd_busy()。 //檢測 lcd 是否處于忙狀態(tài) lcd_rs_1。 //拉高 rs 電平 lcd_rw_0。 //拉低 rw 電平 _NOP()。 //空命令,用于延時 dataport=w_data。 //將要輸入到 lcd1602 的數(shù)據(jù)放到 PC 端口 _NOP()。 lcd_en_1。 //拉高 en 電平 _NOP()。_NOP()。 lcd_en_0。 //拉低 en 電平 } //lcd 初始化子函數(shù) void lcd_init(void) { 41 lcd_w_(0x38,0)。 //8 位數(shù)據(jù)傳輸, 2行顯示, 5*7 字形,不檢測忙信號 delay_ms(5)。 //延時 5ms lcd_w_(0x38,0)。 delay_ms(5)。 lcd_w_(0x38,0)。 delay_ms(5)。 lcd_w_(0x38,1)。 //8 位數(shù)據(jù)傳輸, 2行顯示, 5*7 字形,檢測忙信號 lcd_w_(0x08,1)。 //關(guān)閉顯示,檢測忙信號 lcd_w_(0x01,1)。 //清屏,檢測忙信號 lcd_w_(0x06,1)。 //顯示光標右移設置,檢測忙信號 lcd_w_(0x0c,1)。 //顯示屏打開,光標不顯示,不閃爍,檢測忙信號 delay_ms(5)。 display_str(0,0,realtime T:)。 //第一行要顯示的初始內(nèi)容 delay_ms(5)。 display_str(0,1,set T:)。 //第二行要顯示的初始內(nèi)容 delay_ms(5)。 } /*****************************************************************************/ ///主函數(shù) void main(void) { delay_ms(100)。 //100ms 延時 42 port_init()。 //端口初始化 lcd_init()。 //lcd1602 初始化 led_off。 //關(guān) led 燈 bell_off。 //關(guān)蜂鳴器 while(1) { temperture=read_18b20_temp()。 //將從 18b20 讀回來的數(shù)據(jù)傳入全局變量 temperture 中 displayl(temperture)。 //實時溫度顯示子函數(shù) delay_us(100)。 //100us 延時 ss()。 //溫度設定子函數(shù) display_2(t)。 //設定溫度顯示子 函數(shù) if(temperture=t) //當實時溫度比設定溫度高 { bell_on。 //打開蜂鳴器 led_on。 //點亮 led 燈 } if(ttemperture) //當實時溫度比設定溫度低 { led_off。 //關(guān)閉 led 燈 bell_off。 //關(guān)閉蜂鳴器 } } 43 } /********************************************************/ void displayl(uint ddd) //實時溫度顯示子函數(shù) { lcd_w_(0X80+11,1)。 //設置 lcd 顯示位置是第一行,第12 個位 delay_ms(5)。 lcd_w_data(display[ddd/1000%10])。 //實時溫度的百位 delay_ms(5)。 lcd_w_(0X80+12,1)。 //設置 lcd 顯示 位置是第一行,第13 個位 delay_ms(5)。 lcd_w_data(display[ddd/100%10])。 //實時溫度的十位 delay_ms(5)。 lcd_w_(0X80+13,1)。 //設置 lcd 顯示位置是第一行,第14 個位 delay_ms(5)。 lcd_w_data(display[ddd/10%10])。 //實時溫度的個位 delay_ms(5)。 lcd_w_(0X80+15,1)。 //設置 lcd 顯示位置是第一行,第16個位 delay_ms(5)。 lcd_w_data(display[ddd%10])。 //實時溫度的小數(shù)后一位 delay_ms(5)。 } /*************************18b20 復位函數(shù)*************************************/ 44 //10us 級別延時子函數(shù) void delay_10us(unsigned char i) { if(i==0) { return 。 } while(i) { NOP()。 //空指令,作用延時 NOP()。 NOP()。 NOP()。 } } //18b20 初始化(復位)子函數(shù) void init_18b20(void) { DQ_OUT。 //設置 PB3 為輸出 DQ_SET。 //拉高 PB3 電平 delay_10us(1)。 //延時 DQ_CLR。 //拉低 PB3 電平 delay_10us(75)。 //延時 DQ_SET。 //再次拉高 PB3 電平 delay_10us(6)。 //延時 DQ_IN。 //
點擊復制文檔內(nèi)容
畢業(yè)設計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1