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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求幫助 屏幕不顯示 糧倉糧庫8路溫度采集巡檢系統(tǒng)仿真和單片機(jī)源碼 ds18b20傳感器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:310447 發(fā)表于 2018-6-10 00:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
糧庫溫度巡檢系統(tǒng)仿真原理圖如下,1602液晶屏顯示(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include"LCD1602.h"
  2. #include "ds18b20.h"
  3. #include "eepom52.h"
  4. sbit buzzer = P1^3;         //蜂鳴器
  5. sbit Reduc  = P3^4;         //減
  6. sbit Add = P3^5;         //加
  7. sbit Mode = P3^6;         //設(shè)置
  8. ///************************************************
  9. //** 函數(shù)名稱 : void InitUART(void)
  10. //** 函數(shù)功能 : 串口初始化函數(shù)
  11. //** 輸    入 : 無
  12. //** 輸    出 : 無
  13. //** 說    明 : 定時器1方式2波特率發(fā)生模式,波特率9600bps,晶振11.0592MHZ,誤差0%
  14. //************************************************/
  15. //void InitUART(void)
  16. //{
  17. //    TMOD |= 0x20;
  18. //    SCON = 0x50;
  19. //    TH1 = 0xFD;
  20. //    TL1 = 0xFD;
  21. //    PCON = 0x00;
  22. //    ES = 0;
  23. //    TR1 = 1;
  24. //        EA = 1;
  25. //}
  26. ///*********************************************
  27. //**名稱:void TxChar(uchar ch)
  28. //**功能:串口發(fā)送函數(shù)
  29. //**輸入:uchar ch>當(dāng)前發(fā)送數(shù)據(jù)
  30. //**輸出:無
  31. //*********************************************/
  32. //void TxChar(unsigned char ch)
  33. //{
  34. //        SBUF=ch;  
  35. //        while(!TI);
  36. //        TI=0;                                                                                
  37. //}
  38. /************************************************
  39. ** 函數(shù)名稱 : void main(void)
  40. ** 函數(shù)功能 : 主函數(shù)
  41. ** 輸    入 : 無
  42. ** 輸    出 : 無
  43. ** 說    明 :
  44. ************************************************/
  45. void main(void)
  46. {  
  47.         uint buzzer_count=0,buzzer_flag=0,buzzer_time=40;//蜂鳴器報警變量

  48.         uint as=0;
  49.         uint wendu1=2000,wendu2=2000,wendu3=2000,wendu4=2000;//溫度變量
  50.         uint wendu5=2000,wendu6=2000,wendu7=2000,wendu8=2000;//溫度變量
  51.         uchar disp_count=0;//顯示計時變量

  52.         uint data_l=10,data_h=30; //上下限報警值        
  53.         uchar Mode_project=1,Mode_flag=1,Mode_count=0;//設(shè)置變量

  54.         uchar disp1[16]={"1:00.0C  2:00.0C"};
  55.         uchar disp2[16]={"3:00.0C  4:00.0C"};
  56.         uchar disp3[16]={"5:00.0C  6:00.0C"};
  57.         uchar disp4[16]={"7:00.0C  8:00.0C"};
  58.                         
  59.         LCD_Init();
  60. //        InitUART();

  61.         /****讀出每個傳感器的序列號****/
  62. //        while(1)
  63. //        {
  64. //                uchar i;
  65. //                uchar *ds18b20_rom;        
  66. //                ds18b20_rom=read_rom();        //讀序列號
  67. //                for(i=0;i<8;i++)                 
  68. //                {
  69. //                        disp1[i]=*ds18b20_rom;
  70. //                        TxChar(disp1[i]);
  71. //                        ds18b20_rom++;                        
  72. //                }
  73. //                WriteCOMDATA(0x80,0);
  74. //                for(i=0;i<8;i++)                //顯示序列號
  75. //                {
  76. //                        print_char(disp1[i]/16);
  77. //                        print_char(disp1[i]%16);
  78. //                }
  79. //        }


  80.         /***開機(jī)把數(shù)據(jù)從單片機(jī)內(nèi)部eepom中讀出來***/
  81.         if(byte_read(0x2050)!=1)
  82.         {               
  83.                 SectorErase(0x2000);
  84.                 byte_write(0x2000,data_l);
  85.                 byte_write(0x2001,data_h);
  86.                 byte_write(0x2050,1);               
  87.         }
  88.         if(byte_read(0x2050)==1)
  89.         {
  90.                 data_l=byte_read(0x2000);
  91.                 data_h=byte_read(0x2001);
  92.         }
  93.         
  94.         while(1)
  95.         {
  96.                 if(disp_count>80)disp_count=0;
  97.                 if(++disp_count==10)
  98.                 {
  99.                         wendu1=read_temp(1);
  100.                         disp1[2]=wendu1/1000+0x30; //溫度十位
  101.                         disp1[3]=wendu1/100%10+0x30;//溫度個位
  102.                         disp1[5]=wendu1/10%10+0x30;//溫度小數(shù)第一位
  103.                 }
  104.                 else if(disp_count==20)
  105.                 {        
  106.                         wendu2=read_temp(2);
  107.                         disp1[11]=wendu2/1000+0x30; //溫度十位
  108.                         disp1[12]=wendu2/100%10+0x30;//溫度個位
  109.                         disp1[14]=wendu2/10%10+0x30;//溫度小數(shù)第一位
  110.                 }
  111.                 else if(disp_count==30)
  112.                 {
  113.                         wendu3=read_temp(3);
  114.                         disp2[2]=wendu3/1000+0x30; //溫度十位
  115.                         disp2[3]=wendu3/100%10+0x30;//溫度個位
  116.                         disp2[5]=wendu3/10%10+0x30;//溫度小數(shù)第一位        
  117.                
  118.                 }        
  119.                 else if(disp_count==40)
  120.                 {
  121.                         wendu4=read_temp(4);
  122.                         disp2[11]=wendu4/1000+0x30; //溫度十位
  123.                         disp2[12]=wendu4/100%10+0x30;//溫度個位
  124.                         disp2[14]=wendu4/10%10+0x30;//溫度小數(shù)第一位
  125.                 }
  126.                 else if(disp_count==50)
  127.                 {               
  128.                         wendu5=read_temp(5);
  129.                         disp3[2]=wendu5/1000+0x30; //溫度十位
  130.                         disp3[3]=wendu5/100%10+0x30;//溫度個位
  131.                         disp3[5]=wendu5/10%10+0x30;//溫度小數(shù)第一位

  132.                 }
  133.                 else if(disp_count==60)
  134.                 {
  135.                         wendu6=read_temp(6);
  136.                         disp3[11]=wendu6/1000+0x30; //溫度十位
  137.                         disp3[12]=wendu6/100%10+0x30;//溫度個位
  138.                         disp3[14]=wendu6/10%10+0x30;//溫度小數(shù)第一位
  139.                 }
  140.                 else if(disp_count==70)
  141.                 {
  142.                         wendu7=read_temp(7);
  143.                         disp4[2]=wendu7/1000+0x30; //溫度十位
  144.                         disp4[3]=wendu7/100%10+0x30;//溫度個位
  145.                         disp4[5]=wendu7/10%10+0x30;//溫度小數(shù)第一位
  146.                 }
  147.                 else if(disp_count==80)
  148.                 {
  149.                         wendu8=read_temp(8);
  150.                         disp4[11]=wendu8/1000+0x30; //溫度十位
  151.                         disp4[12]=wendu8/100%10+0x30;//溫度個位
  152.                         disp4[14]=wendu8/10%10+0x30;//溫度小數(shù)第一位

  153.                 }
  154.                 //溫度值與報警值比較
  155.                 if(wendu1/10>data_l*10 &&
  156.                    wendu1/10<data_h*10 &&
  157.                    wendu2/10>data_l*10 &&
  158.                    wendu2/10<data_h*10 &&
  159.                    wendu3/10>data_l*10 &&
  160.                    wendu3/10<data_h*10 &&
  161.                    wendu4/10>data_l*10 &&
  162.                    wendu4/10<data_h*10 &&
  163.                    wendu5/10>data_l*10 &&
  164.                    wendu5/10<data_h*10 &&
  165.                    wendu6/10>data_l*10 &&
  166.                    wendu6/10<data_h*10 &&
  167.                    wendu7/10>data_l*10 &&
  168.                    wendu7/10<data_h*10 &&
  169.                    wendu8/10>data_l*10 &&
  170.                    wendu8/10<data_h*10)
  171.                 {        
  172.                         buzzer_flag=0;
  173.                         buzzer=1;
  174.                 }
  175.                 else
  176.                 {
  177.                         buzzer_flag=1;                        
  178.                 }        
  179.                 /****蜂鳴器報警****/
  180.                 if(buzzer_flag)
  181.                 {
  182.                         buzzer_count++;if(buzzer_count>buzzer_time*10)buzzer_count=buzzer_time+1;
  183.                         if(buzzer_count%buzzer_time==0)
  184.                         {
  185.                                 buzzer=~buzzer;                                
  186.                         }        
  187.                 }
  188.                 //按下設(shè)置鍵,進(jìn)入設(shè)置頁面
  189.                 if(Mode==0 && Mode_flag)
  190.                 {         
  191.                         buzzer=1;
  192.                         as=0;
  193.                         WriteCOMDATA(0x0F,0);
  194.                         delayms(100);                        
  195.                         if(Mode==0)
  196.                         {        
  197.                                 while(Mode==0);                        
  198.                                 Mode_flag=0;
  199.                                 Mode_project=1;
  200.                                 //設(shè)置頁面顯示內(nèi)容
  201.                                 WriteChar(1,0,16,"     T  SET     ");                                 
  202.                                 WriteChar(2,0,16,"T-L:00c T-H:000c");
  203.                                 WriteCOMDATA(0xC4,0);
  204.                                 WriteCOMDATA(data_l/10+0x30,1);
  205.                                 WriteCOMDATA(data_l%10+0x30,1);
  206.                                 WriteCOMDATA(0xCC,0);
  207.                                 WriteCOMDATA(data_h/100+0x30,1);
  208.                                 WriteCOMDATA(data_h/10%10+0x30,1);
  209.                                 WriteCOMDATA(data_h%10+0x30,1);
  210.                                 while(Mode==0);
  211.                                 while(1)                  
  212.                                 {        
  213.                                         switch(Mode_project)
  214.                                         {                                                                                                               
  215.                                                 case 1:
  216.                                                         WriteCOMDATA(0xC4,0);
  217.                                                         WriteCOMDATA(data_l/10+0x30,1);
  218.                                                         WriteCOMDATA(data_l%10+0x30,1);
  219.                                                         WriteCOMDATA(0xC5,0);
  220.                                                 break;
  221.                                                 case 2:
  222.                                                         WriteCOMDATA(0xCC,0);
  223.                                                         WriteCOMDATA(data_h/100+0x30,1);
  224.                                                         WriteCOMDATA(data_h/10%10+0x30,1);
  225.                                                         WriteCOMDATA(data_h%10+0x30,1);
  226.                                                         WriteCOMDATA(0xCE,0);
  227.                                                 break;
  228.                                                 
  229.                                         }
  230.                                         delayms(400);
  231.                                         //按下加鍵,對設(shè)定目標(biāo)加
  232.                                         if(Add==0)
  233.                                         {
  234.                                                 delayms(400);
  235.                                                 switch(Mode_project)
  236.                                                 {
  237.                                                         case 1:data_l+=1;break;
  238.                                                         case 2:data_h+=1;break;                                                        
  239.                                                 }               
  240.                                         }
  241.                                         //按下減鍵,對設(shè)定目標(biāo)減
  242.                                         if(Reduc==0)
  243.                                         {
  244.                                                 delayms(400);
  245.                                                 switch(Mode_project)
  246.                                                 {
  247.                                                         case 1:data_l-=1;break;
  248.                                                         case 2:data_h-=1;break;                                                                                                                        
  249.                                                 }               
  250.                                         }
  251.                                         //短按設(shè)置鍵,切換設(shè)定目標(biāo),長按設(shè)置鍵2S,則退出設(shè)置頁面
  252.                                         if(Mode==0)
  253.                                         {
  254.                                                 delayms(600);
  255.                                                 while(Mode==0)
  256.                                                 {
  257.                                                         delayms(600);
  258.                                                         Mode_count++;
  259.                                                         if(Mode_count>6)
  260.                                                         {
  261.                                                                 WriteCOMDATA(0x0C,0);
  262.                                                                 delayms(100);
  263.                                                                 WriteChar(1,0,16,disp1);  //第一行顯示內(nèi)容
  264.                                                                 WriteChar(2,0,16,disp2); //第二行顯示內(nèi)容
  265. ……………………

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

這個程序是網(wǎng)上下載的,里面的hex可以運行,但是用keil編譯后的程序不行 屏幕不顯示,求大神指導(dǎo)如何修改:
糧倉糧庫8點溫度采集系統(tǒng).rar (92.51 KB, 下載次數(shù): 122)
這里有一個可用的版本,大家可以參考http://www.zg4o1577.cn/bbs/dpj-55028-1.html

評分

參與人數(shù) 2黑幣 +55 收起 理由
dingqinhong + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:465246 發(fā)表于 2019-3-29 22:54 | 只看該作者
所下載的壓縮包中,用其程序生成的.hex文件為錯誤文件,即其程序錯誤。之所以能運行,是因為其內(nèi)部有正確的.hex文件, 也就是說,他并沒有提供正確的程序。
回復(fù)

使用道具 舉報

板凳
ID:670899 發(fā)表于 2019-12-25 08:49 | 只看該作者
大佬,如何改溫度檢測,上限大于40,下限小于-20,報警
回復(fù)

使用道具 舉報

地板
ID:670899 發(fā)表于 2019-12-25 10:56 | 只看該作者
程序有錯誤
回復(fù)

使用道具 舉報

5#
ID:730449 發(fā)表于 2020-4-16 12:19 來自手機(jī) | 只看該作者
誰有24路的?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 美女黄18岁以下禁止观看 | 综合久久久 | 日中文字幕在线 | 亚洲性人人天天夜夜摸 | 欧美日日| 九九热精品视频 | 偷拍自拍第一页 | 日日夜夜精品免费视频 | 国产激情在线观看 | 日韩欧美专区 | 欧美日韩综合 | 一区二区三区在线免费观看 | 亚洲一区中文字幕在线观看 | 欧美精品91爱爱 | 麻豆视频在线免费看 | 国产精品久久久久久久久免费丝袜 | 欧美国产在线一区 | 国产精品自产av一区二区三区 | 免费视频二区 | 久久亚洲一区二区三区四区 | 国产激情视频在线观看 | 日日操视频 | 成人精品视频99在线观看免费 | 中文字幕国产 | 99久久99| 91精品国产综合久久小仙女图片 | 久久精品国产免费一区二区三区 | 韩日精品在线观看 | 手机在线一区二区三区 | 91麻豆精品国产91久久久久久久久 | 欧美一区二区三区视频 | 成人性生交大片免费看中文带字幕 | 欧美大片一区二区 | 成人免费高清 | 久一久 | 超碰520| 91国在线视频 | 91 视频网站 | 亚洲一区自拍 | 精品av天堂毛片久久久借种 | 日日干干|