全部評(píng)論(1條)
-
- 475531072 2016-05-21 16:28:43
- /*************** writer:shopping.w ******************/ #include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char #define delayNOP() {_nop_();_nop_();_nop_();_nop_();} sbit DQ = P3^3; sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; uchar code Temp_Disp_Title[]={"Current Temp : "}; uchar Current_Temp_Display_Buffer[]={" TEMP: "}; uchar code Temperature_Char[8] = { 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00 }; uchar code df_Table[]= { 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 }; uchar CurrentT = 0; uchar Temp_Value[]={0x00,0x00}; uchar Display_Digit[]={0,0,0,0}; bit DS18B20_IS_OK = 1; void DelayXus(uint x) { uchar i; while(x--) { for(i=0;i<200;i++); } } bit LCD_Busy_Check() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN=0; return result; } void Write_LCD_Command(uchar cmd) { while(LCD_Busy_Check()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void Write_LCD_Data(uchar dat) { while(LCD_Busy_Check()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void LCD_Initialise() { Write_LCD_Command(0x01); DelayXus(5); Write_LCD_Command(0x38); DelayXus(5); Write_LCD_Command(0x0c); DelayXus(5); Write_LCD_Command(0x06); DelayXus(5); } void Set_LCD_POS(uchar pos) { Write_LCD_Command(pos|0x80); } void Delay(uint x) { while(--x); } uchar Init_DS18B20() { uchar status; DQ = 1; Delay(8); DQ = 0; Delay(90); DQ = 1; Delay(8); DQ = 1; return status; } uchar ReadOneByte() { uchar i,dat=0; DQ = 1; _nop_(); for(i=0;i<8;i++) { DQ = 0; dat >>= 1; DQ = 1; _nop_(); _nop_(); if(DQ) dat |= 0X80; Delay(30); DQ = 1; } return dat; } void WriteOneByte(uchar dat) { uchar i; for(i=0;i<8;i++) { DQ = 0; DQ = dat& 0x01; Delay(5); DQ = 1; dat >>= 1; } } void Read_Temperature() { if(Init_DS18B20()==1) DS18B20_IS_OK=0; else { WriteOneByte(0xcc); WriteOneByte(0x44); Init_DS18B20(); WriteOneByte(0xcc); WriteOneByte(0xbe); Temp_Value[0] = ReadOneByte(); Temp_Value[1] = ReadOneByte(); DS18B20_IS_OK=1; } } void Display_Temperature() { uchar i; uchar t = 150, ng = 0; if((Temp_Value[1]&0xf8)==0xf8) { Temp_Value[1] = ~Temp_Value[1]; Temp_Value[0] = ~Temp_Value[0]+1; if(Temp_Value[0]==0x00) Temp_Value[1]++; ng = 1; } Display_Digit[0] = df_Table[Temp_Value[0]&0x0f]; CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4); Display_Digit[3] = CurrentT/100; Display_Digit[2] = CurrentT%100/10; Display_Digit[1] = CurrentT%10; Current_Temp_Display_Buffer[11] = Display_Digit[0] + '0'; Current_Temp_Display_Buffer[10] = '.'; Current_Temp_Display_Buffer[9] = Display_Digit[1] + '0'; Current_Temp_Display_Buffer[8] = Display_Digit[2] + '0'; Current_Temp_Display_Buffer[7] = Display_Digit[3] + '0'; if(Display_Digit[3] == 0) Current_Temp_Display_Buffer[7] = ' '; if(Display_Digit[2] == 0&&Display_Digit[3]==0) Current_Temp_Display_Buffer[8] = ' '; if(ng) { if(Current_Temp_Display_Buffer[8] == ' ') Current_Temp_Display_Buffer[8] = '-'; else if(Current_Temp_Display_Buffer[7] == ' ') Current_Temp_Display_Buffer[7] = '-'; else Current_Temp_Display_Buffer[6] = '-'; } Set_LCD_POS(0x00); for(i=0;i<16;i++) { Write_LCD_Data(Temp_Disp_Title[i]); } Set_LCD_POS(0x40); for(i=0;i<16;i++) { Write_LCD_Data(Current_Temp_Display_Buffer[i]); } Set_LCD_POS(0x4d); Write_LCD_Data(0x00); Set_LCD_POS(0x4e); Write_LCD_Data('C'); } void main() { LCD_Initialise(); Read_Temperature(); Delay(50000); Delay(50000); while(1) { Read_Temperature(); if(DS18B20_IS_OK) Display_Temperature(); DelayXus(100); } } 以上程序來自《單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例基于8051+Proteus仿真》
-
贊(20)
回復(fù)(0)
登錄或新用戶注冊(cè)
- 微信登錄
- 密碼登錄
- 短信登錄
請(qǐng)用手機(jī)微信掃描下方二維碼
快速登錄或注冊(cè)新賬號(hào)
微信掃碼,手機(jī)電腦聯(lián)動(dòng)
注冊(cè)登錄即表示同意《儀器網(wǎng)服務(wù)條款》和《隱私協(xié)議》
熱門問答
- 求用51單片機(jī)與DS18B20測(cè)溫的C程序。完整的。
2016-05-21 11:08:36
441
1
- 求個(gè)51單片機(jī)超聲波測(cè)距(距離+報(bào)警)的c程序
- 求個(gè)51單片機(jī)超聲波測(cè)距(距離+報(bào)警)的c程序
2017-05-19 03:18:16
462
1
- 51單片機(jī)溫度控制系統(tǒng)的C語(yǔ)言程序
- 設(shè)計(jì)基于單片計(jì)算機(jī)的溫度控制器。用于控制電加熱爐的溫度。具體要求如下1.溫度連續(xù)可調(diào),范圍為30℃~150℃2.超調(diào)量σ%≤20%3.溫度誤差≤±0.5℃4.人-機(jī)對(duì)話方便5.控制算法采用PID或改... 設(shè)計(jì)基于單片計(jì)算機(jī)的溫度控制器。用于控制電加熱爐的溫度。具體要求如下 1. 溫度連續(xù)可調(diào),范圍為30℃~150℃ 2. 超調(diào)量σ%≤20% 3. 溫度誤差≤±0.5℃ 4. 人-機(jī)對(duì)話方便 5. 控制算法采用PID或改進(jìn)的PID或其他算法 .請(qǐng)發(fā)至3166109374@qq.com 謝謝幫忙 具體見http://wenku.baidu.com/view/e0feacf0f121dd36a22d822c 展開
2015-06-07 00:06:30
506
3
- 求一個(gè)正確的基于51單片機(jī)的函數(shù)信號(hào)發(fā)生器的C程序
- 要自己調(diào)試成功的,不要在網(wǎng)上找的,波形產(chǎn)生是用DAC0832,頻率顯示用數(shù)碼管也行,LCD1602也行,多謝大神幫忙,小弟不勝感激... 要自己調(diào)試成功的,不要在網(wǎng)上找的,波形產(chǎn)生是用DAC0832,頻率顯示用數(shù)碼管也行,LCD1602也行,多謝大神幫忙,小弟不勝感激 展開
2014-05-13 10:50:43
517
3
- 求一個(gè)51單片機(jī)控制的溫度計(jì)顯示程序
- stc98c51控制2個(gè)4位數(shù)碼管,溫度傳感器為DS18B20。數(shù)碼管的a,b,c,d,e,f,g,dp端接在P0口... stc98c51控制2個(gè)4位數(shù)碼管,溫度傳感器為DS18B20。數(shù)碼管的a,b,c,d,e,f,g,dp端接在P0口 展開
2012-05-03 04:58:40
448
2
- 求一段匯編程序,利用51單片機(jī)控制3個(gè)超聲波傳感器測(cè)距的C語(yǔ)言程序
2017-07-25 22:41:03
343
1
- 用單片機(jī)測(cè)溫,ds18b20一直顯示95。0
- 不知道是哪里出現(xiàn)了問題
2017-08-19 21:27:34
357
1
- 求US-100(模塊)超聲波測(cè)距的C語(yǔ)言程序,基于51單片機(jī)的,3Q哦~
- 求基于51單片機(jī)的US-100超聲波測(cè)距C語(yǔ)言程序。需要詳細(xì)點(diǎn)的具體設(shè)計(jì)程序,O(∩_∩)O~ US-100模塊參考資料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:實(shí)現(xiàn)2--150cm的測(cè)距,測(cè)得結(jié)果保留4位有效數(shù)字(取整數(shù)),單位:mm。 哪... 求基于51單片機(jī)的US-100超聲波測(cè)距C語(yǔ)言程序。需要詳細(xì)點(diǎn)的具體設(shè)計(jì)程序,O(∩_∩)O~ US-100模塊參考資料:http://wenku.baidu.com/view/65e63e35a32d7375a41780ce.html 性能要求:實(shí)現(xiàn)2--150cm的測(cè)距,測(cè)得結(jié)果保留4位有效數(shù)字(取整數(shù)),單位:mm。 哪位大神幫幫忙嘍,急?。。。≌嫘闹x謝大神了~ 展開
2017-05-17 15:16:00
580
1
- 51單片機(jī)信號(hào)發(fā)生器的正弦波程序
- voidvout_sin(void)//輸出正弦波{floatx;//用于正弦波發(fā)生器if(Voutsin())//“正弦波按鍵”被有效按下do{for(x=-3.1415;x<3.1415;x+=0.1)//正弦波發(fā)生器{vout=255*(1+sin(x))/2;//輸出... void vout_sin(void) //輸出正弦波
{ float x; //用于正弦波發(fā)生器
if(Voutsin()) //“正弦波按鍵”被有效按下
do{
for(x=-3.1415;x<3.1415;x+=0.1) //正弦波發(fā)生器
{ vout=255*(1+sin(x))/2; //輸出值vout必須大于0
P1=vout;
delay_out();
} } while(P3_0==1&P3_1==1&P3_2==1&P3_4==1) } 此段程序中do{}內(nèi)的內(nèi)容不是很理解,希望好心網(wǎng)友幫忙解釋一下,財(cái)富值不是很多,謝謝了。 展開
2013-04-02 06:51:20
578
3
- 基于51單片機(jī),ADC0804,光敏電阻,濕度傳感器,求程序?。。?!
- 我用的51單片機(jī),采集光強(qiáng)度和空氣濕度,利用了兩個(gè)ADC0804進(jìn)行轉(zhuǎn)換(光敏電阻和電阻式濕度傳感器),但是沒有相應(yīng)程序,哪位大哥能幫忙弄一個(gè)程序?。咳绻强尚械某绦颍屹~號(hào)里剩下... 我用的51單片機(jī),采集光強(qiáng)度和空氣濕度,利用了兩個(gè)ADC0804進(jìn)行轉(zhuǎn)換(光敏電阻和電阻式濕度傳感器),但是沒有相應(yīng)程序,哪位大哥能幫忙弄一個(gè)程序?。咳绻强尚械某绦?,我賬號(hào)里剩下的分全給你,雖然不多... 展開
2011-06-01 01:20:26
341
4
- ds18b20 單片機(jī)測(cè)溫 干擾疑惑 謝謝
- 工業(yè)環(huán)境下,上電運(yùn)行一切正常,但過幾小時(shí)后會(huì)有一定的概率(一百多臺(tái)中會(huì)有隨機(jī)出現(xiàn)十幾臺(tái))出現(xiàn)復(fù)位不正常,即沒有應(yīng)答信號(hào),或者讀到的溫度值不在PDF的正常溫度范圍內(nèi)。而如果拔掉18B20傳感器再插或者設(shè)備重新上電就恢復(fù)如常,但過段時(shí)間還是有可能會(huì)出現(xiàn),... 工業(yè)環(huán)境下,上電運(yùn)行一切正常,但過幾小時(shí)后會(huì)有一定的概率(一百多臺(tái)中會(huì)有隨機(jī)出現(xiàn)十幾臺(tái))出現(xiàn)復(fù)位不正常,即沒有應(yīng)答信號(hào),或者讀到的溫度值不在PDF的正常溫度范圍內(nèi)。而如果拔掉18B20傳感器再插或者設(shè)備重新上電就恢復(fù)如常,但過段時(shí)間還是有可能會(huì)出現(xiàn),查了很長(zhǎng)時(shí)間查不出具體原因,哪位大師能指點(diǎn)一下,萬分感謝。 展開
2012-11-07 02:48:37
437
2
- 請(qǐng)問有誰寫過htu21d溫濕度傳感器的51單片機(jī) c程序嗎,求參考一下
2018-11-14 00:47:32
282
0
- 基于51單片機(jī)用LCD1602液晶顯示的頻率計(jì)程序
- 求程序——————
2013-04-23 19:11:42
389
1
- 匯編語(yǔ)言 51單片機(jī) 器程序
2017-04-19 08:39:13
413
1
- 51單片機(jī)如何控制超聲波傳感器 求C語(yǔ)言程序(一定要能用)100追加
- 型號(hào)是DYP-ME007 VCC(DC5V)、Trig(發(fā)射端)、Echo(接收端)、 Out(空)、 GND(地) (1)采用IO觸發(fā)測(cè)距,給8--15us的高電平信號(hào)即可; (2)模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回; (3)有信號(hào)返回,通過IO輸出一高電平,高電平持續(xù)的... 型號(hào)是DYP-ME007 VCC(DC5V)、Trig(發(fā)射端)、Echo(接收端)、 Out(空)、 GND(地) (1)采用IO觸發(fā)測(cè)距,給8--15us的高電平信號(hào)即可; (2)模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回; (3)有信號(hào)返回,通過IO輸出一高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間. 測(cè)試距離=(高電平時(shí)間*聲速(340M/S))/2; 展開
2012-01-07 22:26:00
606
2
- 急求 基于51單片機(jī) yl69土壤濕度傳感器 lcd1602顯示濕度c語(yǔ)言程序
2016-11-10 05:49:23
476
2
- 溫度控制51單片機(jī),DS1820溫度傳感器的程序
- 只要一小段,溫度加熱時(shí)候的程序,我要用Keil和proteus編程仿真的,加熱到40,60,80的時(shí)候分別需要恒定溫度一段時(shí)間后,在繼續(xù)加熱....... 只要一小段,溫度加熱時(shí)候的程序,我要用Keil 和 proteus 編程仿真的,加熱到40,60,80 的時(shí)候分別需要恒定溫度一段時(shí)間后,在繼續(xù)加熱.... 展開
2014-11-16 03:23:05
363
2
- 求一段匯編程序,利用51單片機(jī)控制超聲波傳感器測(cè)距的程序。
2012-04-18 20:35:53
322
2
- 51單片機(jī) 溫度控制 1602顯示 DS18B20讀取溫度
- 有償程序要求:恒溫控制... 有償程序 要求:恒溫控制 展開
2011-03-18 10:20:05
531
4
- 基于51單片機(jī)光電開光傳感器c程序怎么編啊!
2018-11-30 10:58:16
301
0
4月突出貢獻(xiàn)榜
推薦主頁(yè)
最新話題





參與評(píng)論
登錄后參與評(píng)論