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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

智能溫度報(bào)警系統(tǒng) 單片機(jī)作品

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
作品外觀:


電路原理圖如下:


  
主要參數(shù)
  
  
序號(hào)
  
參數(shù)
數(shù)值
備注
  
1
  
工作電壓
4V~6V
直流
  
2
  
功率
<8W
  
3
  
溫度測(cè)量量程
0~99攝氏度
  
4
  
溫度可設(shè)定值
0~99攝氏度
  
5
  
誤差范圍
精度誤差小于0.5
  
主要元器件
  
  
序號(hào)
  
名稱
作用
個(gè)數(shù)
  
1
  
AT89S52單片機(jī)
運(yùn)算處理
1
  
2
  
DS1802傳感器
溫度測(cè)量
1
  
3
  
數(shù)碼管LG5011BSR
溫度顯示
4
  
4
  
蜂鳴器
溫度報(bào)警
1
  
5
  
變壓器
變壓
1
  
6
  
整流橋
交流變直流
1
  
7
  
三端穩(wěn)壓器7805
穩(wěn)定電壓值
1
  
8
  
AT24C02
掉電存儲(chǔ)器


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include <stdio.h>
  3. #include <absacc.h>
  4. code unsigned char seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,
  5. 0x82,0xf8,0x80,0x90,0x40}; //顯示段碼

  6. sbit TMDAT =P3^1; //DS18B20 的數(shù)據(jù)輸入/輸出腳DQ,根據(jù)情況設(shè)定

  7. sbit jia=P2^1;
  8. sbit jian=P2^0;       
  9. sbit hong=P1^0;        //紅色警告燈
  10. sbit sheng=P1^1;        //蜂鳴器
  11. sbit lan=P1^2;        //蘭色燈
  12. bit write=0; //寫24C08 的標(biāo)志;

  13. j=30;
  14. unsigned int sdata;//測(cè)量到的溫度的整數(shù)部分
  15. unsigned char xiaoshu1;//小數(shù)第一位
  16. unsigned char xiaoshu2;//小數(shù)第二位
  17. unsigned char xiaoshu;//兩位小數(shù)

  18. bit fg=1; //溫度正負(fù)標(biāo)志

  19. ////////24C08 讀寫驅(qū)動(dòng)程序////////////////////
  20. sbit scl=P3^4; // 24c08 SCL
  21. sbit sda=P3^5; // 24c08 SDA
  22. void delay1(unsigned char x)
  23. { unsigned int i;
  24. for(i=0;i<x;i++);
  25. ;}
  26. void flash()
  27. { ; ; }
  28. void x24c08_init() //24c08 初始化子程序
  29. {scl=1; flash(); sda=1;                     flash();}
  30. void start() //啟動(dòng)(I方C)總線
  31. {sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();}
  32. void stop() //停止(I方C)總線
  33. {sda=0; flash(); scl=1; flash(); sda=1; flash();}
  34. void writex(unsigned char j) //寫一個(gè)字節(jié)
  35. { unsigned char i,temp;
  36. temp=j;
  37. for (i=0;i<8;i++)
  38. {temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();}
  39. scl=0; flash(); sda=1; flash();
  40. }
  41. unsigned char readx() //讀一個(gè)字節(jié)
  42. {
  43. unsigned char i,j,k=0;
  44. scl=0; flash(); sda=1;
  45. for (i=0;i<8;i++)
  46. {
  47. flash(); scl=1; flash();
  48. if (sda==1) j=1;
  49. else j=0;
  50. k=(k<<1)|j;
  51. scl=0;}
  52. flash(); return(k);
  53. }
  54. void clock() //(I方C)線時(shí)鐘
  55. {
  56. unsigned char i=0;
  57. scl=1; flash();
  58. while ((sda==1)&&(i<255))i++;
  59. scl=0; flash();
  60. }
  61. ////////從24c02 的地址address 中讀取一個(gè)字節(jié)數(shù)據(jù)/////
  62. unsigned char x24c08_read(unsigned char address)
  63. {
  64. unsigned char i;
  65. start(); writex(0xa0);
  66. clock(); writex(address);
  67. clock(); start();
  68. writex(0xa1); clock();
  69. i=readx(); stop();
  70. delay1(10);
  71. return(i);
  72. }
  73. //////向24c02 的address                     地址中寫入一字節(jié)數(shù)據(jù)info/////
  74. void x24c08_write(unsigned char address,unsigned char info)
  75. {
  76. EA=0;
  77. start(); writex(0xa0);
  78. clock(); writex(address);
  79. clock(); writex(info);
  80. clock(); stop();
  81. EA=1;
  82. delay1(50);
  83. }
  84. /*////////////24C08 讀寫驅(qū)動(dòng)程序完/////////////////////
  85. void Delay2(unsigned int tc) //延時(shí)程序
  86. {
  87. while( tc != 0 )
  88. {unsigned int i;
  89. for(i=0; i<100; i++);
  90. tc--;}
  91. }
  92. */
  93. //////////*顯示延時(shí)程序*///////////////

  94. void Delay(unsigned int tc)
  95. {while( tc != 0 )
  96. {unsigned int i;
  97. for(i=0; i<80; i++);
  98. tc--;}
  99. }

  100. ////////////延時(shí)部分///////////////

  101. void yanshi (unsigned int count)
  102. {
  103. unsigned char i;
  104. while(count--)
  105. {for(i=0;i<115;i++);}
  106. }

  107. /////////////發(fā)送復(fù)位///////////////

  108. void fashong (void)
  109. {
  110. unsigned char i;
  111. TMDAT = 0; for(i=0;i<103;i++);
  112. TMDAT = 1; for(i=0;i<4;i++);
  113. }


  114. bit tmrbit (void) //讀一位//
  115. {                     
  116. unsigned int i;
  117. bit dat;
  118. TMDAT = 0;
  119. i++;
  120. TMDAT = 1;
  121. i++; i++; //微量延時(shí) //
  122. dat = TMDAT;
  123. for(i=0;i<8;i++);
  124. return (dat);
  125. }

  126. unsigned char tmrbyte (void) //讀一個(gè)字節(jié)
  127. {
  128. unsigned char i,j,dat;
  129. dat = 0;
  130. for (i=1;i<=8;i++)
  131. { j = tmrbit(); dat = (j << 7) | (dat >> 1); }
  132. return (dat);
  133. }

  134. void tmwbyte (unsigned char dat) //寫一個(gè)字節(jié)
  135. {
  136. unsigned char j,i;
  137. bit testb;
  138. for (j=1;j<=8;j++)
  139. { testb = dat & 0x01;
  140. dat = dat >> 1;
  141. if (testb)
  142. { TMDAT = 0; //寫0
  143. i++; i++;
  144. TMDAT = 1;
  145. for(i=0;i<8;i++); }
  146. else
  147. { TMDAT = 0; //寫0
  148. for(i=0;i<8;i++);
  149. TMDAT = 1;
  150. i++; i++;}
  151. }
  152. }

  153. void tmstart (void) //發(fā)送ds1820 開始轉(zhuǎn)換
  154. {
  155. fashong(); //復(fù)位
  156. yanshi(1); //延時(shí)
  157. tmwbyte(0xcc); //跳過序列號(hào)命令
  158. tmwbyte(0x44); //發(fā)轉(zhuǎn)換命令 44H,
  159. }                    
  160. void tmrtemp (void) //讀取溫度
  161. {
  162. unsigned char a,b;
  163. fashong (); //復(fù)位
  164. yanshi (1); //延時(shí)
  165. tmwbyte (0xcc); //跳過序列號(hào)命令
  166. tmwbyte (0xbe); //發(fā)送讀取命令
  167. a = tmrbyte (); //讀取低位溫度
  168. b = tmrbyte (); //讀取高位溫度
  169. if(b>0x7f) //最高位為1 時(shí)溫度是負(fù)
  170. {a=~a; b=~b+1; //補(bǔ)碼轉(zhuǎn)換,取反加一
  171. fg=0; //讀取溫度為負(fù)時(shí)fg=0
  172. }
  173. sdata = a/16+b*16; //整數(shù)部分
  174. xiaoshu1 = (a&0x0f)*10/16; //小數(shù)第一位
  175. xiaoshu2 = (a&0x0f)*100/16%10;//小數(shù)
  176. xiaoshu=xiaoshu1*10+xiaoshu2; //小數(shù)
  177. }
  178. void DS18B20PRO(void)
  179. {
  180. tmstart();
  181. //yanshi(5); //如果是不斷地讀取的話可以不延
  182. tmrtemp(); //讀取溫度,執(zhí)行完畢溫度將存于
  183. }
  184. void Led()
  185. {
  186. if(fg==1) //溫度為正時(shí)顯示的數(shù)據(jù)
  187. {
  188.   P2=P2&0xef;
  189. P0=seg7code[sdata/10]; //輸
  190. Delay(2); P2=P2|0xf0; P2=P2&0xdf;
  191. P0=seg7code[sdata%10]|0x80; //輸出個(gè)
  192. Delay(2); P2=P2|0xf0; P2=P2&0xbf;
  193. P0=seg7code[xiaoshu1]; //輸出小數(shù)點(diǎn)
  194. Delay(2); P2=P2|0xf0; P2=P2&0x7f;
  195. P0=seg7code[xiaoshu2]; //輸出小
  196. Delay(1); P2=P2|0xf0;

  197. Delay(2); P2=P2|0xf0;P2=P2&0xf7;
  198. P0=seg7code[j/10]; //輸出十位
  199. Delay(2); P2=P2|0x0f; P2=P2&0xfb;
  200. P0=seg7code[j%10]|0x80; //輸出個(gè)位         
  201. Delay(1); P2=P2|0x0f;

  202. /*
  203. P2=P2&0x7f;
  204. P0=seg7code[sdata/10]; //輸出十位
  205. Delay(8); P2=P2|0xf0;P2=P2&0xbf;
  206. P0=seg7code[sdata%10]|0x80; //輸出個(gè)位

  207. Delay(8); P2=P2|0xf0; P2=P2&0xf7;
  208. P0=seg7code[xiaoshu1]; //輸出小數(shù)點(diǎn)
  209. Delay(8); P2=P2|0xf0; P2=P2&0xfb;
  210. P0=seg7code[xiaoshu2]; //輸出小
  211. Delay(4); P2=P2|0xf0;


  212. Delay(8); P2=P2|0xf0;P2=P2&0xdf;
  213. P0=seg7code[j/10]; //輸出十位
  214. Delay(8); P2=P2|0xf0; P2=P2&0xef;
  215. P0=seg7code[j%10]|0x80; //輸出個(gè)位         
  216. Delay(4); P2=P2|0xf0;

  217. */

  218. if(sdata<=j)
  219. {
  220. lan=0;
  221. hong=1;
  222. sheng=1;
  223. };
  224. if(sdata>=j)
  225. {
  226. lan=1;
  227. hong=0;
  228. sheng=0;
  229. ……………………

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

所有資料51hei提供下載:
智能溫度報(bào)警系統(tǒng).rar (99.27 KB, 下載次數(shù): 38)


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

使用道具 舉報(bào)

沙發(fā)
ID:207522 發(fā)表于 2017-6-3 22:23 | 只看該作者
棒棒棒!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:401656 發(fā)表于 2018-11-14 19:00 | 只看該作者
這個(gè)有多少行代碼啊……怎么感覺好難啊,居然有這么多器件
回復(fù)

使用道具 舉報(bào)

地板
ID:401656 發(fā)表于 2018-12-1 20:29 | 只看該作者
第30、32行是怎么回事啊?怎么分號(hào)前面是空的呀?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜视频在线免费观看 | 一区二区免费 | ririsao久久精品一区 | 国产免费一区二区 | 亚洲高清在线播放 | 综合色久 | 午夜久久 | 日韩精品成人免费观看视频 | 天天操天天射天天舔 | 国产一区二区三区视频免费观看 | 91免费看片| 中文字幕在线观看日韩 | 日本一区二区三区在线观看 | 亚洲国产成人av好男人在线观看 | 国产精品久久一区 | 免费看片国产 | 岛国毛片 | 免费a网站 | 奇米影视77| 免费在线观看黄网站 | 91精品一区| 青青久久av北条麻妃海外网 | 亚洲一区二区三区四区五区午夜 | 亚洲vs天堂 | 老外黄色一级片 | 国产免费一区二区三区最新6 | 青春草国产 | 久草热视频 | 日本三级网站在线 | 中文字幕在线观看视频网站 | 国产高清在线精品一区二区三区 | 国产乱码精品一区二区三区中文 | 少妇无套高潮一二三区 | 色www精品视频在线观看 | 亚洲欧美一区二区三区国产精品 | 成人午夜 | 亚洲欧美视频一区二区 | 中文区中文字幕免费看 | 亚洲精品国产偷自在线观看 | 精品国产视频在线观看 | 欧美性视频在线播放 |