久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7851|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

小型家用燃?xì)忮仩t單片機(jī)控制系統(tǒng)的設(shè)計(jì)(Proteus仿真+程序)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這個(gè)是我以前做的設(shè)計(jì),主要的是內(nèi)容是小型家用燃?xì)忮仩t單片機(jī)控制系統(tǒng)的設(shè)計(jì)。主要的實(shí)現(xiàn)就是可以顯示當(dāng)前的溫度,可以設(shè)置當(dāng)前的溫度,并且當(dāng)實(shí)際的溫度超過此時(shí)的溫度是就會報(bào)警。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


1. 設(shè)計(jì)任務(wù)
2. 整體方案設(shè)計(jì)
3. 系統(tǒng)硬件電路設(shè)計(jì)
3.1 時(shí)鐘電路
3.2 復(fù)位電路
3.3 溫度檢測電路設(shè)計(jì)
3.4水位檢測模塊
3.5顯示電路設(shè)計(jì)
3.6報(bào)警電路設(shè)計(jì)
3.7 按鍵電路設(shè)計(jì)
3.8加水模塊與加熱模塊
4. 系統(tǒng)程序設(shè)計(jì)
4.1 主程序流程圖
4.2 溫度顯示程序流程圖
5. 系統(tǒng)調(diào)試
5.1 Proteus軟件仿真調(diào)試
6. 程序清單
7.小結(jié)


小型家用燃?xì)忮仩t單片機(jī)控制系統(tǒng)的設(shè)計(jì)

鍋爐是一種熱能轉(zhuǎn)換設(shè)備,由鍋和爐兩大主體和保證其安全經(jīng)濟(jì)連續(xù)運(yùn)行的附件,儀表附屬設(shè)備,自控和保護(hù)系統(tǒng)組成。近年來采用以天然氣,液化石油氣為燃料的中小型燃?xì)忮仩t具有 高效、環(huán)境污染小,發(fā)熱量大甚至無污染等特點(diǎn),受到普遍歡迎。隨著科技的發(fā)展以及各種客觀條件的具備,生活采暖用燃?xì)忮?爐的應(yīng)用也必將得到進(jìn)一步的發(fā)展與推廣。隨著燃料不斷補(bǔ)給,燃料充足,城市燃?xì)?管網(wǎng)逐步完善,燃?xì)馐褂寐手鸩綍岣摺P⌒图矣萌細(xì)忮仩t的使用作為集 中供暖的一個(gè)很好補(bǔ)充或替代它必將被越來越多的人關(guān)注和選用成為趨勢。目前市場上家用燃?xì)忮仩t為進(jìn)口,價(jià)格高,售后服務(wù)不夠完善,不利于燃?xì)忮仩t的推廣使用,研制燃?xì)忮仩t的公司亦相對較少。因此研制開發(fā)小型家用燃?xì)忮仩t就具有現(xiàn)實(shí)的意義與客觀的市場價(jià)值。本設(shè)計(jì)將結(jié)合小型家用燃?xì)忮仩t實(shí)際的需要,利用 MCS-51 系列單片機(jī)為核心器件組成溫度控制系統(tǒng),采用溫度采集技術(shù),通過運(yùn)行和分析研究,以期正確認(rèn)識和全面理解利用單片機(jī)實(shí)現(xiàn)溫度采集技術(shù)在過程控制中的應(yīng)用。
1. 設(shè)計(jì)任務(wù)

結(jié)合實(shí)際情況,基于AT89C51單片機(jī)設(shè)計(jì)一個(gè)小型家用燃?xì)忮仩t單片機(jī)控制系統(tǒng)。

該系統(tǒng)應(yīng)滿足的功能要求為:

(1) 可以檢測水位的高低;

(2) 可以檢測當(dāng)前溫度;

(3) 可以自動報(bào)警;

(4) 可以自動控制加水;

主要硬件設(shè)備:AT89C51、溫度傳感器DS18B20、LCD1602液晶顯示器、繼電器、74LSO4 、74LS244等。

2. 整體方案設(shè)計(jì)

采用 AT89S51 單片機(jī)、溫度傳感器 DS18B20 和液晶顯示器 LCD1602 等核心部件。該方案采用液晶顯示器來顯示水位的上下限值、當(dāng)前水位、預(yù)先設(shè)定的溫度報(bào)警值和當(dāng)前采集的溫度值。用不銹鋼管制作成的裝置放于水位上下限。鍋爐采用電加熱的方式,水源由水泵供給,水溫可以通過按鍵預(yù)置,由溫度傳感器檢測水的溫度并送給單片機(jī), 然后單片機(jī)將實(shí)際水溫送至 LCD1602液晶顯示,同時(shí)單片機(jī)將采集到的實(shí)際水溫與預(yù)置溫度相比較, 若實(shí)際溫度在預(yù)置溫度范圍內(nèi),就關(guān)閉電熱絲;若實(shí)際水溫不在預(yù)置溫度范圍內(nèi),就接通電熱絲給鍋爐加熱,若超過預(yù)置溫度極限,控制系統(tǒng)就會報(bào)警。由 74LS04和 74LS244組成的水位檢測電路的四個(gè)探針來檢測水位并將采集到的信息送給單片機(jī),當(dāng)水位高于最高水位時(shí),就關(guān)閉水泵;當(dāng)水位低于下限水位時(shí),就打開水泵;當(dāng)水位低于或高于極限水位時(shí),就會報(bào)警。



圖2-1 基于單片機(jī)的小型家用燃?xì)忮仩t控制系統(tǒng)原理圖

本系統(tǒng)硬件主要由燃燒器、繼電器、溫度檢測器、顯示系統(tǒng)等幾部分組成。各模塊的主要功能如下:

  • 繼電器功能接通燃燒器電源
  • 顯示屏的作用是可以顯示當(dāng)前時(shí)刻的溫度以及用戶設(shè)定的溫度;
  • 溫度檢測器的作用是可以檢測當(dāng)前的溫度;
3. 系統(tǒng)硬件電路設(shè)計(jì)
3.1 時(shí)鐘電路
AT89S51 的時(shí)鐘可由內(nèi)部產(chǎn)生也可以由外部產(chǎn)生。
在這個(gè)設(shè)計(jì)中只是用了內(nèi)部產(chǎn)生。利用芯片內(nèi)部振蕩電路,在 XTAL1,XTAL2的引腳上外接定時(shí)元件,內(nèi)部振蕩器便能產(chǎn)生自激振蕩,定時(shí)元件可以采用石英晶體和電容組成的并聯(lián)諧振電路,它與單片機(jī)的接法的如圖所示。晶體可以在 1.2MHz~12MHz 之間所選,電容可以在 20~60pF 之間所選,通常選擇 30pF 左右,電容 C6,C7 的大小對振蕩頻率有微小的影響,可起頻率微調(diào)作用。
圖3-1 時(shí)鐘電路結(jié)構(gòu)圖

3.2 復(fù)位電路
系統(tǒng)的復(fù)位電路是由 RC 電路組成,外加一個(gè)手動復(fù)位按鈕。剛上電時(shí)或者觸動 按鈕后 C5 兩端的電壓為 0,這時(shí) RST 為高電平,而其高電平保持時(shí)間是由 R 和 C 的時(shí)間常數(shù)決定,由公式τ=R*C可知,C 充電的時(shí)間常數(shù) τ 等于 0.22ms,遠(yuǎn)遠(yuǎn)大于 2μs,即使 RST 高電平的時(shí)間保持 2μs 以上,確保了單片機(jī)正常復(fù)位。
圖3-1 復(fù)位電路結(jié)構(gòu)圖
圖3-3 時(shí)鐘電路復(fù)位電路與單片機(jī)的連接圖

3.3 溫度檢測電路設(shè)計(jì)

溫度采集電路只有一個(gè)DS18B20溫度傳感器,它與單片機(jī)的接口比較簡單,所示。只要給傳感器5V的供電并把它的單總線接到單片機(jī)的P口就可以了。

圖3-4 溫度檢測模塊結(jié)構(gòu)圖

3.4水位檢測模塊
水位檢測模塊由芯片 74LS04和芯片74LS244及其附加電路組成。具體電路
如圖所示。四個(gè)探針分別接在鍋爐連通器從下到上的四個(gè)位置,當(dāng)水位為 0
時(shí),四個(gè)探針全被懸空,74LS04的四個(gè)輸入端全被上拉電阻拉成高電平,經(jīng)過
非門之后變?yōu)榈碗娖剑俳?jīng)過緩沖芯片 74LS244輸送給單片機(jī)并在液晶顯示屏上顯示。當(dāng)水位上升到探針 1 處時(shí),由于水的導(dǎo)電性,使 74LS04的 A1輸入端為低電平,經(jīng)過非門之后變?yōu)楦唠娖剑?再經(jīng)過緩沖芯片 74LS244輸送給單片機(jī)。此時(shí),單片機(jī)認(rèn)為水位為百分之二十五,并在液晶顯示屏上顯示。以此類推,單片機(jī)會依次檢測到的水位是百分之五十,百分之七十五,百分之百。完成對水位的檢測。
圖3-5 溫度檢測模塊結(jié)構(gòu)圖

3.5顯示電路設(shè)計(jì)
本系統(tǒng)采用LCD1602作為顯示模塊,其主要功能是 顯示水位的上下限值、當(dāng)前水位、預(yù)先設(shè)定的溫度報(bào)警值和當(dāng)前采集的溫度值。其中 VDD 接 5V 電源用于顯示 LCD 液晶顯示芯片的工作 ,VL 串接阻值 10K 歐姆的滑動變阻器是為了調(diào)節(jié) LCD液晶顯示芯片字符的亮度,當(dāng)阻值越大時(shí),LCD液晶顯示越模糊。用滑動變阻器 能更好的調(diào)節(jié)LCD液晶字符顯示的亮度,合適于鍋爐的水位于水溫的觀察。 要想使顯示器正常的工作需在連接P0口之前接一上拉電阻。
圖3-6 顯示模塊結(jié)構(gòu)圖

3.6報(bào)警電路設(shè)計(jì)
本系統(tǒng)采用喇叭進(jìn)行報(bào)警,該部分電路與單片機(jī)的接口如圖所示。 電路由限流電阻R8、三極管Q1和喇叭組成。這個(gè)電路并不是一般的放大電路,三極管不是工作在放大狀態(tài),而是工作在飽和狀態(tài)和截止?fàn)顟B(tài)。當(dāng)基極為低電平時(shí),晶體管處于飽和狀態(tài),飽和電壓為UCES=0.3V,此時(shí),喇叭鳴叫。當(dāng)基極為高電平時(shí),晶體管截止,相當(dāng)于開路,輸出為高電平,喇叭停止鳴叫。
圖3-7 報(bào)警電路結(jié)構(gòu)圖

3.7 按鍵電路設(shè)計(jì)
本系統(tǒng)為符合實(shí)際要求,進(jìn)入系統(tǒng)之前首先對溫度報(bào)警值的設(shè)置。本系統(tǒng)有三個(gè) 按鍵分別為 K1,K2,K3.
如圖所示。
  • K1 設(shè)置鍋爐溫度報(bào)警值的溫度值增加按鍵。K1 每按下一次,溫度報(bào)警值顯 示加比上一次值增加一度。
  • K2 設(shè)置鍋爐溫度報(bào)警值的溫度值減少按鍵。K1 每按下一次,溫度報(bào)警值顯 示比上一次值減少一度。
  • K3 溫度報(bào)警值確定值。
圖3-8 按鍵模塊結(jié)構(gòu)圖
3.8加水模塊與加熱模塊
小型開水鍋爐控制系統(tǒng)執(zhí)行機(jī)構(gòu)通過繼電器來控制加熱電熱絲和水泵來實(shí)
現(xiàn)水位和水溫的自動控制,具體加水控制電路如圖所示。
加熱控制類似加水控制,不再贅述
圖3-9 執(zhí)行模塊結(jié)構(gòu)圖
4. 系統(tǒng)程序設(shè)計(jì)
4.1 主程序流程圖

本系統(tǒng)進(jìn)入執(zhí)行時(shí)先對鍋爐水位進(jìn)行與設(shè)定的水位上下限進(jìn)行判斷,然后按條件不同處理結(jié)果。當(dāng)鍋爐水位滿足條件的時(shí)候再對鍋爐的水溫采樣監(jiān)控,并進(jìn)行相應(yīng)的處理


4.2 溫度顯示程序流程圖
溫度部分程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、 讀出并處理 DS18B20的測
量溫度值,溫度測量每 1S進(jìn)行一次。

5. 系統(tǒng)調(diào)試
5.1 Proteus軟件仿真調(diào)試
利用 protues軟件進(jìn)行仿真,能夠?qū)崿F(xiàn)預(yù)期目標(biāo),如圖 ,系統(tǒng)能夠正常
顯示當(dāng)前鍋爐狀態(tài),在第一行顯示當(dāng)前溫度,第二行顯示當(dāng)前水位。當(dāng)按下圖中
按鍵時(shí), LCD1602進(jìn)入溫度設(shè)置界面,如圖 ,按下按鈕一次可實(shí)現(xiàn)設(shè)
置溫度加一攝氏度。按下按鈕一次可實(shí)現(xiàn)設(shè)置溫度減一攝氏度。當(dāng)再次按下
按鍵時(shí),系統(tǒng)重新恢復(fù)如圖界面。經(jīng)調(diào)試,各項(xiàng)功能均能夠很好的實(shí)現(xiàn),包括溫度的控制和水位的自動調(diào)節(jié)。


7.小結(jié)

在本次的實(shí)際過程中,我明白了一個(gè)完整的控制系統(tǒng)的設(shè)計(jì)過程。從明白我們的設(shè)計(jì)的目的開始,以目的為主要的標(biāo)準(zhǔn)來進(jìn)行模塊以及電路元器件的選擇。根據(jù)自己所需要的東西以及想要達(dá)到的目標(biāo)進(jìn)行設(shè)計(jì)編程。用keil軟件導(dǎo)出hex文件之后導(dǎo)入進(jìn)單片機(jī),沒有錯(cuò)誤的話就可以仿真了。我是采用protues進(jìn)行仿真的,在仿真之前需要把程序?qū)氲絾纹瑱C(jī)當(dāng)中,我是第一次完成這樣的任務(wù),中間也經(jīng)歷了很多的挫折,最主要的問題還是顯示屏lcd1602的使用。但是在于同學(xué)的交流當(dāng)中都一一解決,讓我明白了自己與他人的差距,也更加深刻的體會到了合作的重要性。對今后的學(xué)習(xí)和生活有重要的意義。


6. 程序清單
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit DQ=P3^3;//ds18b20 與單片機(jī)連接口
  5. sbit alarm=P3^6;// 蜂鳴器與單片機(jī)連接口
  6. sbit jidian1=P3^7;// 水位控制繼電器與單片機(jī)連接口
  7. sbit jidianqi2 = P1^0;
  8. sbit RS=P2^0;
  9. sbit RW=P2^1;
  10. sbit EN=P2^2;
  11. sbit control = P1^6;
  12. sbit add_key = P1^7;
  13. sbit sub_key = P3^4;
  14. uchar control_flag = 0;
  15. uint wendu = 350;
  16. unsigned char code str1[]={"T:"};
  17. unsigned char str2[]={"C:"};
  18. unsigned char code str3[]={"W: "};
  19. uchar data disdata[5]={1,0,1,0,0};
  20. uint tvalue;// 溫度值
  21. uchar tflag;// 溫度正負(fù)標(biāo)志
  22. unsigned char k=0;
  23. /*************************lcd1602 程序**************************/
  24. void delay1ms(unsigned int ms)//延時(shí) 1 毫秒(不夠精確的)
  25. {unsigned int i,j;
  26. for(i=0;i<ms;i++)
  27. for(j=0;j<100;j++)
  28. ;
  29. }
  30. void wr_com(unsigned char com)//寫指令
  31. {
  32. delay1ms(1);
  33. RS=0;
  34. RW=0;
  35. EN=0;
  36. P0=com;
  37. delay1ms(1);
  38. EN=1;
  39. delay1ms(1);
  40. EN=0;
  41. }
  42. void wr_dat(unsigned char dat)// 寫數(shù)據(jù)
  43. {
  44. delay1ms(1);;
  45. RS=1;
  46. RW=0;
  47. EN=0;
  48. P0=dat;
  49. delay1ms(1);
  50. EN=1;
  51. delay1ms(1);
  52. EN=0;
  53. }
  54. /********** 延時(shí)函數(shù) ,毫秒級 ***************/
  55. void delayms(unsigned int t)// 延時(shí)函數(shù)
  56. {
  57. unsigned int i, j;
  58. for( i = t; i > 0; i-- )
  59. {
  60. for( j = 110; j > 0; j-- );
  61. }
  62. }
  63. void lcd_init()// 初始化設(shè)置
  64. {delay1ms(15);
  65. wr_com(0x38);delay1ms(5);
  66. wr_com(0x08);delay1ms(5);
  67. wr_com(0x01);delay1ms(5);
  68. wr_com(0x06);delay1ms(5);
  69. wr_com(0x0c);delay1ms(5);
  70. }
  71. /******************* 讀水位 ************************/
  72. void readlevel()
  73. {
  74. P2|=0xf0;
  75. if((P2&0XF0)==0X00)
  76. k= 0;
  77. else if((P2&0XF0)==0X10)
  78. k=25;
  79. else if((P2&0XF0)==0X30)
  80. k=50;
  81. else if((P2&0XF0)==0X70)
  82. k=75;
  83. else if((P2&0XF0)==0XF0)
  84. k=100;
  85. }
  86. /********************* 溫度和水位報(bào)警 ***********************/
  87. void alarming() // 報(bào)警模塊
  88. {
  89. uchar i;
  90. if(k==0||tvalue<0)// 溫度低于零度或者水位為 0 時(shí)短報(bào)警
  91. {
  92. for(i=6;i>0;i--)
  93. {
  94. alarm=0;
  95. delay1ms(100);
  96. alarm=1;
  97. delay1ms(100);
  98. }
  99. }
  100. if(k==100||tvalue>95)// 溫度高于 95 度或者水位為 100%時(shí)長報(bào)警
  101. {
  102. alarm=0;
  103. delay1ms(1000);
  104. alarm=1;
  105. }
  106. if(k==25)//水位過低報(bào)警
  107. {
  108. uchar j;
  109. for(j=3;j>0;j--)
  110. {
  111. alarm=0;
  112. delay1ms(300);
  113. alarm=1;
  114. delay1ms(300);
  115. }
  116. }
  117. if(k==75||k==50)// 不報(bào)警,延時(shí) 1 秒用于水位顯示
  118. {
  119. delay1ms(1000);
  120. }
  121. }
  122. /*************** 繼電器控制上水 ****************************/
  123. void jiashui() // 繼電器控制上水
  124. {
  125. if(k<50)
  126. jidian1=0;
  127. if(k==100)
  128. jidian1=1;
  129. }
  130. /*************** 繼電器控制加熱 ****************************/
  131. void jiare() // 繼電器控制加熱
  132. {
  133. if ( wendu >= tvalue )
  134. {
  135. jidianqi2 = 0;
  136. }
  137. else
  138. {
  139. jidianqi2 = 1;
  140. }
  141. }
  142. /******************** 水位顯示 *************************/
  143. void leveldisp() // 水位顯示函數(shù)
  144. {
  145. disdata[0]=k/100+0x30;//百位數(shù)
  146. disdata[1]=k%100/10+0x30;//十位數(shù)
  147. disdata[2]=k%10+0x30;//個(gè)位數(shù)
  148. if(disdata[0]==0x30)
  149. {
  150. disdata[0]=0x20;// 如果百位為 0,不顯示
  151. if(disdata[1]==0x30)
  152. {
  153. disdata[1]=0x20;// 如果百位為 0,十位為 0 也不顯示
  154. }
  155. }
  156. wr_com(0xc4);
  157. wr_dat(disdata[0]);// 顯示百位
  158. wr_com(0xc5);
  159. wr_dat(disdata[1]);// 顯示十位
  160. wr_com(0xc6);
  161. wr_dat(disdata[2]);// 顯示個(gè)位
  162. wr_com(0xc7);
  163. wr_dat(0x25);// 顯示百分號
  164. }
  165. /*******************ds1820 程序*********************/
  166. void delay_18B20(unsigned int i)//延時(shí) 1 微秒
  167. {
  168. while(i--);
  169. }
  170. void ds1820rst()//ds1820 復(fù)位
  171. {
  172. unsigned char x=0;
  173. DQ = 1; //DQ 復(fù)位
  174. delay_18B20(4); //延時(shí)
  175. DQ = 0; //DQ 拉低
  176. delay_18B20(100); //精確延時(shí)大于 480us
  177. DQ = 1; // 拉高
  178. delay_18B20(40);
  179. }
  180. uchar ds1820rd()/*讀數(shù)據(jù)*/
  181. {
  182. unsigned char i=0;
  183. unsigned char dat = 0;
  184. for (i=8;i>0;i--)
  185. {
  186. DQ = 0; //給脈沖信號
  187. dat>>=1;
  188. DQ = 1; //給脈沖信號
  189. if(DQ)
  190. dat|=0x80;
  191. delay_18B20(10);
  192. }
  193. return(dat);
  194. }
  195. void ds1820wr(uchar wdata)//寫數(shù)據(jù)
  196. {unsigned char i=0;
  197. for (i=8; i>0; i--)
  198. {
  199. DQ = 0;
  200. DQ = wdata&0x01;
  201. delay_18B20(10);
  202. DQ = 1;
  203. wdata>>=1;
  204. }
  205. }
  206. read_temp()// 讀取溫度值并轉(zhuǎn)換
  207. {
  208. uchar a,b;
  209. ds1820rst();
  210. ds1820wr(0xcc);//跳過讀序列號
  211. ds1820wr(0x44);//啟動溫度轉(zhuǎn)換
  212. ds1820rst();
  213. ds1820wr(0xcc);//跳過讀序列號
  214. ds1820wr(0xbe);//讀取溫度
  215. a=ds1820rd();
  216. b=ds1820rd();
  217. tvalue=b;
  218. tvalue<<=8;
  219. tvalue=tvalue|a;
  220. if(tvalue<0x0fff)
  221. tflag=0;
  222. else
  223. {
  224. tvalue=~tvalue+1;
  225. tflag=1;
  226. }
  227. tvalue=tvalue*(0.625);// 溫度值擴(kuò)大 10 倍,精確到 1 位小數(shù)
  228. return(tvalue);
  229. }

  230. /************** 溫度顯示 ****************************/
  231. void ds1820disp() // 溫度顯示
  232. {
  233. uchar flagdat;
  234. disdata[0]=tvalue/1000+0x30;//百位數(shù)
  235. disdata[1]=tvalue%1000/100+0x30;//十位數(shù)
  236. disdata[2]=tvalue%100/10+0x30;//個(gè)位數(shù)
  237. disdata[3]=tvalue%10+0x30;//小數(shù)位
  238. if(tflag==0)
  239. flagdat=0x20;// 正溫度不顯示符號
  240. else
  241. flagdat=0x2d;// 負(fù)溫度顯示負(fù)號
  242. if(disdata[0]==0x30)
  243. {
  244. disdata[0]=0x20;// 如果百位為 0,不顯示
  245. if(disdata[1]==0x30)
  246. {
  247. disdata[1]=0x20;// 如果百位為 0,十位為 0 也不顯示
  248. }
  249. }
  250. wr_com(0x82);
  251. wr_dat(flagdat);// 顯示符號位
  252. wr_com(0x83);
  253. wr_dat(disdata[0]);// 顯示百位
  254. wr_com(0x84);
  255. wr_dat(disdata[1]);// 顯示十位
  256. wr_com(0x85);
  257. wr_dat(disdata[2]);// 顯示個(gè)位
  258. wr_com(0x86);
  259. wr_dat(0x2e);// 顯示小數(shù)點(diǎn)
  260. wr_com(0x87);
  261. wr_dat(disdata[3]);// 顯示小數(shù)位
  262. }
  263. void display(unsigned char *p)
  264. {
  265. while(*p!='\0')
  266. {
  267. wr_dat(*p);
  268. p++;
  269. delay1ms(1);
  270. }
  271. }
  272. void init_play()// 初始化顯示
  273. {
  274. //              wr_com(0x01);
  275.               wr_com(0x80);
  276.               display(str1);
  277.               read_temp();// 讀取溫度
  278.               ds1820disp();//顯示溫度
  279.               wr_com(0xc0);
  280.               display(str3);
  281.               readlevel();// 讀取水位
  282.               leveldisp();// 顯示水位
  283. }
  284. void control_play( void )// 設(shè)定溫度顯示
  285. {
  286.               uchar flagdat;
  287.               //wr_com(0x01);
  288.               wr_com(0x89); //輸入設(shè)定溫度
  289.               display(str2);// 顯示設(shè)定溫度
  290.               disdata[0]=wendu/1000+0x30;//百位數(shù)
  291.               disdata[1]=wendu %1000/100+0x30;//十位數(shù)
  292.               disdata[2]=wendu%100/10+0x30;//個(gè)位數(shù)
  293.               disdata[3]=wendu%10+0x30;//小數(shù)位
  294.               if(tflag==0)
  295.               flagdat=0x20;// 正溫度不顯示符號
  296.               else
  297.               flagdat=0x2d;// 負(fù)溫度顯示負(fù)號
  298.               if(disdata[0]==0x30)
  299.               {
  300.               disdata[0]=0x20;// 如果百位為 0,不顯示
  301.               if(disdata[1]==0x30)
  302.               {
  303.               disdata[1]=0x20;// 如果百位為 0,十位為 0 也不顯示
  304.               }
  305.               }
  306.               wr_com(0x8B);
  307.               wr_dat(disdata[0]);// 顯示百位
  308.               wr_com(0x8C);
  309.               wr_dat(disdata[1]);// 顯示十位
  310.               wr_com(0x8D);
  311.               wr_dat(disdata[2]);// 顯示個(gè)位
  312.               wr_com(0x8E);
  313.               wr_dat(0x2e);// 顯示小數(shù)點(diǎn)
  314.               wr_com(0x8F);
  315.               wr_dat(disdata[3]);// 顯示小數(shù)位

  316. }
  317. /************** 按鍵控制模塊 *************/
  318. void key_scan( void ) // 按鍵控制模塊
  319. {
  320.               static uchar i = 0;
  321.               if ( 0 == control )
  322.               {
  323.               delayms( 10 );
  324.               while ( 0 == control );
  325.               wr_com(0x01);
  326.               control_flag = 1;
  327.               i++;
  328.               if ( i >= 2 )
  329.               {
  330.               i = 0;
  331. ……………………

  332. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

全部資料51hei下載地址:
附件.zip (456.31 KB, 下載次數(shù): 142)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:538291 發(fā)表于 2019-5-14 20:23 | 只看該作者
感謝感謝
回復(fù)

使用道具 舉報(bào)

板凳
ID:748803 發(fā)表于 2020-5-11 09:09 | 只看該作者
感謝
回復(fù)

使用道具 舉報(bào)

地板
ID:748868 發(fā)表于 2020-5-12 13:59 | 只看該作者
感謝樓主!
回復(fù)

使用道具 舉報(bào)

5#
ID:748868 發(fā)表于 2020-5-14 11:28 | 只看該作者
老哥,你的報(bào)警程序沒有調(diào)用,編譯有警告。請問老哥proteus仿真整體圖是不是不全啊?我聯(lián)機(jī)調(diào)試有問題
回復(fù)

使用道具 舉報(bào)

6#
ID:815578 發(fā)表于 2020-8-23 15:49 | 只看該作者
您好:我是做鍋爐生產(chǎn),我們有開發(fā)自控的需求,如有興趣,請聯(lián)系我
回復(fù)

使用道具 舉報(bào)

7#
ID:863329 發(fā)表于 2020-12-21 12:54 | 只看該作者
LCD 不顯示啊
回復(fù)

使用道具 舉報(bào)

8#
ID:866311 發(fā)表于 2020-12-24 08:55 來自觸屏版 | 只看該作者
DaDaoWanYan 發(fā)表于 2020-5-14 11:28
老哥,你的報(bào)警程序沒有調(diào)用,編譯有警告。請問老哥proteus仿真整體圖是不是不全啊?我聯(lián)機(jī)調(diào)試有問題

小哥,你的調(diào)試出來了嗎?我這邊有點(diǎn)弄不出來,可以看一下你的完整版的唄?
回復(fù)

使用道具 舉報(bào)

9#
ID:866311 發(fā)表于 2020-12-25 10:25 來自觸屏版 | 只看該作者
少加點(diǎn)糖 發(fā)表于 2020-5-11 09:09
感謝

能不能看一下您的調(diào)試成功的完整版
回復(fù)

使用道具 舉報(bào)

10#
ID:1051028 發(fā)表于 2022-11-8 16:04 | 只看該作者
ygj1926 發(fā)表于 2020-12-25 10:25
能不能看一下您的調(diào)試成功的完整版

請問xd調(diào)整好了嗎
回復(fù)

使用道具 舉報(bào)

11#
ID:824664 發(fā)表于 2023-3-15 08:11 | 只看該作者
內(nèi)容豐富實(shí)用,一定好好學(xué)學(xué)學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品av | 九九在线视频 | 69性欧美高清影院 | 午夜小电影 | 二区在线视频 | 91av免费观看 | 亚洲 日本 欧美 中文幕 | 国产日韩欧美在线一区 | 九一视频在线观看 | 久夜精品| 久久一二区 | 日本一区二区高清不卡 | 久久综合影院 | 日韩二 | 久久久久国产 | 一级片在线观看 | 超碰免费在线 | 精品在线播放 | 黄在线| 99精品视频在线观看免费播放 | 亚洲va国产日韩欧美精品色婷婷 | 欧美性视频在线播放 | 国产精品欧美一区二区三区不卡 | 久久久精品一区二区三区 | 黄色免费看 | 99精品久久久 | 亚洲免费一区 | 免费毛片网站在线观看 | 激情 亚洲 | 91视视频在线观看入口直接观看 | 人和拘一级毛片c | 亚洲日日 | 久久久www成人免费精品 | 羞羞的视频在线 | 奇米超碰在线 | 日日欧美| 欧美男人天堂 | 波多野结衣精品 | 亚洲久在线 | 亚洲久久一区 | 欧美日韩亚洲在线 |