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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

微波爐溫度控制系統(tǒng)單片機(jī)源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:302637 發(fā)表于 2018-4-6 09:56 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int   
  4. uchar i;
  5. sbit lcdrs=P2^6;
  6. sbit lcdrw=P2^5;
  7. sbit lcden=P2^7;
  8. sbit  d1=P1^0;
  9. sbit  d2=P1^1;
  10. sbit  d3=P2^0;
  11. sbit  d4=P2^1;
  12. sbit  d5=P2^2;
  13. sbit  sound=P1^2;
  14. uchar code t0[]="the temperature ";  
  15. uchar code t1[]=" is             ";
  16. uchar code wendu[]="0123456789";                 //利用一個(gè)溫度表解決溫度顯示亂碼
  17. uchar second;
  18. uchar timer;
  19. void t1_init()
  20. {
  21.     TMOD=0x10;
  22.     IE=0X88;
  23.     TH1=0X3c;
  24.     TL1=0Xb0;
  25. }
  26. sbit DQ = P3^7;                                    //定義ds18B20總線IO
  27.                                                 //液晶顯示模塊
  28. void delay(uint z)         
  29. {
  30.    uint x,y;
  31.    for(x=100;x>1;x--);
  32.         for(y=z;y>1;y--);
  33. }
  34. void write_com(uchar com)
  35. {
  36.     lcdrs=0;
  37.     P0=com;
  38.     delay(5);
  39.     lcden=1;
  40.     delay(5);
  41.     lcden=0;
  42. }
  43. void write_date(uchar date)
  44. {
  45.     lcdrs=1;
  46.     P0=date;
  47.     delay(5);
  48.     lcden=1;
  49.     delay(5);
  50.     lcden=0;
  51. }
  52. void init_lcd()
  53. {
  54.        lcden=0;
  55.        lcdrw=0;
  56.        write_com(0x38);
  57.        write_com(0x01);
  58.        write_com(0x0c);
  59.        write_com(0x06);
  60.        write_com(0x80);
  61.        for(i=0;i<16;i++)
  62.     {
  63.          write_date(t0[i]);
  64.          delay(0);
  65.     }
  66.        write_com(0x80+0x40);
  67.        for(i=0;i<16;i++)
  68.        {
  69.           write_date(t1[i]);
  70.           delay(0);
  71.        }
  72. }
  73.                                                         //溫度采集模塊
  74. void tmpDelay(int num)                                    //延時(shí)函數(shù)      
  75. {
  76.        while(num--);
  77. }
  78. void Init_DS18B20()                                         //初始化ds1820
  79. {
  80.        unsigned char x=0;
  81.        DQ = 1;                                                 //DQ復(fù)位
  82.        tmpDelay(8);
  83.        DQ = 0;                                              //單片機(jī)將DQ拉低
  84.        tmpDelay(80);                                          //精確延時(shí) 大于 480us
  85.        DQ = 1;                                                    //拉高總線  
  86.        tmpDelay(14);
  87.        x=DQ;
  88.        tmpDelay(20);
  89. }
  90. unsigned char ReadOneChar()                                      //讀一個(gè)字節(jié)
  91. {
  92.        unsigned char i=0;
  93.        unsigned char dat=0;
  94.        for (i=8;i>0;i--)
  95.        {
  96.            DQ = 0;                                                 // 給脈沖信號
  97.            dat>>=1;
  98.            DQ = 1;                                                  // 給脈沖信號
  99.            if(DQ)
  100.            dat|=0x80;
  101.            tmpDelay(4);
  102.    }
  103. return(dat);
  104. }
  105. void WriteOneChar(unsigned char dat)                        //寫一個(gè)字節(jié)
  106. {
  107.        unsigned char i=0;
  108.        for (i=8; i>0; i--)
  109.        {
  110.           DQ = 0;
  111.           DQ = dat&0x01;
  112.           tmpDelay(5);
  113.           DQ = 1;
  114.           dat>>=1;
  115.     }
  116. }
  117. unsigned int Readtemp()                                          //讀取溫度
  118. {                                    
  119.        unsigned char a=0;
  120.        unsigned char b=0;
  121.        unsigned int t=0;
  122.        float tt=0;
  123.        Init_DS18B20();
  124.        WriteOneChar(0xCC);                                   // 跳過讀序號列號的操作
  125.        WriteOneChar(0x44);                            // 啟動(dòng)溫度轉(zhuǎn)換
  126.        Init_DS18B20();
  127.        WriteOneChar(0xCC);                            //跳過讀序號列號的操作
  128.        WriteOneChar(0xBE);                                //讀取溫度寄存器
  129.        a=ReadOneChar();                             //連續(xù)讀兩個(gè)字節(jié)數(shù)據(jù)   //讀低8位
  130.        b=ReadOneChar();                               //讀高8位
  131.        t=b;
  132.        t<<=8;
  133.        t=t|a;                                          //兩字節(jié)合成一個(gè)整型變量。
  134.        tt=t*0.0625;                              //得到真實(shí)十進(jìn)制溫度值,因?yàn)镈S18B20可以精確到0.0625度,所以讀回?cái)?shù)據(jù)的最低位代表的是0.0625度
  135.        t= tt*10+0.5;                                //放大十倍,這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時(shí)進(jìn)行一個(gè)四舍五入操作
  136.        return(t);
  137.    }
  138. void display1()
  139. {   
  140.     unsigned int num,num1;
  141.     unsigned int shi,ge,xiaoshu;
  142.     num=Readtemp();
  143.     num1=num/10;
  144.     if(num1>24)
  145.     {d3=0;delay(5000);} ;
  146.     if(num1>25)
  147.     {d4=0;delay(5000);}
  148.     if(num1>26)
  149.     {d5=0;delay(5000);}
  150.     else
  151.     {d3=1;d4=1;d5=1;}
  152. }
  153. void display2()
  154. {
  155.     unsigned int num,num1;
  156.     unsigned int shi,ge,xiaoshu;
  157.     num=Readtemp();
  158.     num1=num/10;
  159.    
  160.     if(num1>27)
  161.     {sound=0;d1=0;d2=1;delay(5000);}
  162.     if(num1<23)
  163.        {
  164.         d1=1;
  165.         d2=0;
  166.         sound=0;
  167.         delay(500);
  168.     }
  169.        else
  170.        {
  171.         sound=1;
  172.         d1=1;
  173.         d2=1;
  174.     }
  175.     shi=num/100;
  176.     ge=num/10%10;
  177.     xiaoshu=num%10;
  178.     write_com(0x80+0x40+5);
  179.     write_date(wendu[shi]);
  180.     write_com(0x80+0x40+6);
  181.     write_date(wendu[ge]);
  182.     write_com(0x80+0x40+7);
  183.     write_date(0x2e);
  184.     write_com(0x80+0x40+8);
  185.     write_date(wendu[xiaoshu]);
  186. }
  187. void t1_func()
  188. {
  189.     TH1=0X3c;
  190.     TL1=0Xb0;
  191.     if(timer<20)
  192.     {
  193.         timer=timer+1;
  194.     }
  195.     else if(timer==20)
  196.     {
  197.         timer=0;
  198.         if(second==0)
  199.         { sound=0;delay(20000);
  200.           second=9;
  201.     }
  202.     else{second=second-1;sound=1;}
  203.     }
  204. }

  205. void main()
  206. {
  207.     init_lcd();
  208.     while(1)
  209.     {
  210.         display1();
  211.         display2();
  212.         delay(10);
  213.     }
  214.     t1_init();
  215.     second=9;
  216.     timer=0;
  217.     while(1);
  218. }

復(fù)制代碼




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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩www| 精品日韩一区二区 | 欧美一区二区免费视频 | 免费视频二区 | 精品国产一级片 | 北条麻妃视频在线观看 | 91麻豆久久久 | 福利视频大全 | 盗摄精品av一区二区三区 | 日韩精品一区二区不卡 | 国产欧美精品一区二区 | 性网站免费 | 91精品国产91久久久久久 | 久久精品亚洲欧美日韩久久 | 第四色影音先锋 | 国产精品国产a | 国产一区二区影院 | 国产激情精品 | 国产一区二区不卡 | 国产一极毛片 | 日本黄色一级视频 | 国产乱码精品1区2区3区 | www操操| 久久亚洲国产精品日日av夜夜 | 国产精品毛片久久久久久 | 欧美在线视频一区二区 | 久久美女网 | 久久这里只有精品首页 | 久久综合久久久 | 国产精品久久久久久婷婷天堂 | 国产精品久久久久久久免费大片 | 久久一区精品 | 亚州精品天堂中文字幕 | 青草久久免费视频 | 亚洲一区二区免费 | 久久国产亚洲 | 亚洲精品一区二区三区四区高清 | 日韩一区二区三区视频在线观看 | 成人99 | 久草热视频 | 国产美女黄色片 |