欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 小型家用燃?xì)忮仩t單片機(jī)控制系統(tǒng)的設(shè)計(Proteus仿真+程序) [打印本頁]

作者: SUNNY9715    時間: 2019-5-10 10:41
標(biāo)題: 小型家用燃?xì)忮仩t單片機(jī)控制系統(tǒng)的設(shè)計(Proteus仿真+程序)
這個是我以前做的設(shè)計,主要的是內(nèi)容是小型家用燃?xì)忮仩t單片機(jī)控制系統(tǒng)的設(shè)計。主要的實(shí)現(xiàn)就是可以顯示當(dāng)前的溫度,可以設(shè)置當(dāng)前的溫度,并且當(dāng)實(shí)際的溫度超過此時的溫度是就會報警。

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


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


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

鍋爐是一種熱能轉(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的使用作為集 中供暖的一個很好補(bǔ)充或替代它必將被越來越多的人關(guān)注和選用成為趨勢。目前市場上家用燃?xì)忮仩t為進(jìn)口,價格高,售后服務(wù)不夠完善,不利于燃?xì)忮仩t的推廣使用,研制燃?xì)忮仩t的公司亦相對較少。因此研制開發(fā)小型家用燃?xì)忮仩t就具有現(xiàn)實(shí)的意義與客觀的市場價值。本設(shè)計將結(jié)合小型家用燃?xì)忮仩t實(shí)際的需要,利用 MCS-51 系列單片機(jī)為核心器件組成溫度控制系統(tǒng),采用溫度采集技術(shù),通過運(yùn)行和分析研究,以期正確認(rèn)識和全面理解利用單片機(jī)實(shí)現(xiàn)溫度采集技術(shù)在過程控制中的應(yīng)用。
1. 設(shè)計任務(wù)

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

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

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

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

(3) 可以自動報警;

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

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

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

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



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

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

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

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

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

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

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

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

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

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

3.7 按鍵電路設(shè)計
本系統(tǒng)為符合實(shí)際要求,進(jìn)入系統(tǒng)之前首先對溫度報警值的設(shè)置。本系統(tǒng)有三個 按鍵分別為 K1,K2,K3.
如圖所示。
圖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è)計
4.1 主程序流程圖

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


4.2 溫度顯示程序流程圖
溫度部分程序的主要功能是負(fù)責(zé)溫度的實(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)按下圖中
按鍵時, LCD1602進(jìn)入溫度設(shè)置界面,如圖 ,按下按鈕一次可實(shí)現(xiàn)設(shè)
置溫度加一攝氏度。按下按鈕一次可實(shí)現(xiàn)設(shè)置溫度減一攝氏度。當(dāng)再次按下
按鍵時,系統(tǒng)重新恢復(fù)如圖界面。經(jīng)調(diào)試,各項(xiàng)功能均能夠很好的實(shí)現(xiàn),包括溫度的控制和水位的自動調(diào)節(jié)。


7.小結(jié)

在本次的實(shí)際過程中,我明白了一個完整的控制系統(tǒng)的設(shè)計過程。從明白我們的設(shè)計的目的開始,以目的為主要的標(biāo)準(zhǔn)來進(jìn)行模塊以及電路元器件的選擇。根據(jù)自己所需要的東西以及想要達(dá)到的目標(biāo)進(jìn)行設(shè)計編程。用keil軟件導(dǎo)出hex文件之后導(dǎo)入進(jìn)單片機(jī),沒有錯誤的話就可以仿真了。我是采用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)//延時 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ù) ,毫秒級 ***************/
  55. void delayms(unsigned int t)// 延時函數(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. /********************* 溫度和水位報警 ***********************/
  87. void alarming() // 報警模塊
  88. {
  89. uchar i;
  90. if(k==0||tvalue<0)// 溫度低于零度或者水位為 0 時短報警
  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%時長報警
  101. {
  102. alarm=0;
  103. delay1ms(1000);
  104. alarm=1;
  105. }
  106. if(k==25)//水位過低報警
  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)// 不報警,延時 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;//個位數(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]);// 顯示個位
  162. wr_com(0xc7);
  163. wr_dat(0x25);// 顯示百分號
  164. }
  165. /*******************ds1820 程序*********************/
  166. void delay_18B20(unsigned int i)//延時 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); //延時
  175. DQ = 0; //DQ 拉低
  176. delay_18B20(100); //精確延時大于 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;//個位數(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]);// 顯示個位
  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;//個位數(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]);// 顯示個位
  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)


作者: swk970629    時間: 2019-5-14 20:23
感謝感謝
作者: 少加點(diǎn)糖    時間: 2020-5-11 09:09
感謝
作者: DaDaoWanYan    時間: 2020-5-12 13:59
感謝樓主!
作者: DaDaoWanYan    時間: 2020-5-14 11:28
老哥,你的報警程序沒有調(diào)用,編譯有警告。請問老哥proteus仿真整體圖是不是不全啊?我聯(lián)機(jī)調(diào)試有問題
作者: 訂書器    時間: 2020-8-23 15:49
您好:我是做鍋爐生產(chǎn),我們有開發(fā)自控的需求,如有興趣,請聯(lián)系我

作者: dapaochang    時間: 2020-12-21 12:54
LCD 不顯示啊
作者: ygj1926    時間: 2020-12-24 08:55
DaDaoWanYan 發(fā)表于 2020-5-14 11:28
老哥,你的報警程序沒有調(diào)用,編譯有警告。請問老哥proteus仿真整體圖是不是不全啊?我聯(lián)機(jī)調(diào)試有問題

小哥,你的調(diào)試出來了嗎?我這邊有點(diǎn)弄不出來,可以看一下你的完整版的唄?
作者: ygj1926    時間: 2020-12-25 10:25
少加點(diǎn)糖 發(fā)表于 2020-5-11 09:09
感謝

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

請問xd調(diào)整好了嗎

作者: sdlyyy    時間: 2023-3-15 08:11
內(nèi)容豐富實(shí)用,一定好好學(xué)學(xué)學(xué)習(xí)。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1