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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2187|回復: 1
打印 上一主題 下一主題
收起左側

51單片機+DS18B20制作成溫度控制顯示系統,小數點如何顯示?求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:572202 發表于 2019-6-26 09:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
呀呀呀,大佬們可以在我的程序基礎上讓溫度顯示出小數點嘛。。∪f分感謝,,代碼邊上的亂碼是我原來的注釋,仿真圖已附上

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  6. uchar code tab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
  7. char displayData[4];
  8. uint shi,fen=9,miao=9,T50ms;
  9. uchar bai,sh,ge,a,b,t;
  10. sbit a0=P2^0;
  11. sbit a1=P2^1;
  12. sbit a2=P2^2;
  13. sbit a3=P2^3;
  14. sbit DQ=P3^7;



  15. void delay(uint n)
  16. {
  17.         while(n--);      
  18. }

  19. void init()
  20. {
  21.         TMOD=0x01;
  22.         TH0=(65536-50000)/256;
  23.         TL0=(65536-50000)%256;
  24.         ET0=1;
  25.         EA=1;
  26.         TR0=1;
  27.         EX0=1;
  28.         
  29.         
  30. }

  31. void scan()
  32. {
  33.           displayData[0] = tab[miao%10];
  34.           displayData[1] = tab[(miao/10)%10];
  35.           displayData[2] = tab[fen%10]|0x80;
  36.           displayData[3] = tab[(fen/10)%10];      
  37. }

  38. void display()               
  39. {
  40.         char i;
  41.         for(i=0;i<=3;i++)
  42.         {
  43.                 switch(i)
  44.                 {
  45.                         case 0:a0=0;a1=0;a2=0;a3=1;break;
  46.                         case 1:a0=0;a1=0;a2=1;a3=0;break;
  47.                         case 2:a0=0;a1=1;a2=0;a3=0;break;
  48.                         case 3:a0=1;a1=0;a2=0;a3=0;break;
  49.                 }
  50.                 if(i==2){
  51.                         P0=(displayData[i]&0x7f);
  52.                         }else
  53.                 P0=displayData[i];
  54.                         delay(200);
  55.                         P0=0xff;
  56.                         }
  57. }

  58. int_DS18b20()
  59. {
  60.         uchar x=0;
  61.   DQ = 1;   
  62.   delay(8);
  63.   DQ=0;   
  64.   delay(80);
  65.   DQ=1;   
  66.   delay(10);
  67.         x=DQ;
  68.   delay(20);
  69.         return x;
  70. }

  71. void write_byte(uchar dat)
  72. {
  73.         uchar i=0;
  74.   for(i=8;i>0;i--){
  75.   DQ=0;
  76.   DQ=dat&0x01;
  77.   delay(5);
  78.   DQ=1;
  79.   dat>>=1;
  80.   }
  81.         delay(4);
  82. }

  83. read_byte()
  84. {
  85.         uchar i=0;
  86.   uchar dat=0;
  87.   for(i=8;i>0;i--){
  88.     DQ=0;
  89.                 dat>>=1;
  90.     DQ=1;
  91.     if(DQ)
  92.     dat|=0x80;
  93.     delay(4);
  94.                 }
  95.         return (dat);
  96. }
  97.       
  98. void int_()
  99. {
  100.     while(int_DS18b20());
  101.     write_byte(0xcc);
  102.     write_byte(0x44);
  103. }

  104. void retemp()
  105. {
  106.         uint count=0,j=0;
  107.   P2=0xff;
  108.   int_();
  109.   delay(220);
  110.   for(count=0;count<100;count++){
  111.                 a0=1;
  112.     P0=tab[0];
  113.     delay(100);
  114.     a0=0;
  115.     a1=1;
  116.     P0=tab[0];
  117.     delay(100);
  118.     a1=0;
  119.     a2=1;
  120.                 P0=tab[0];
  121.     delay(100);
  122.     a2=0;
  123.     a3=1;
  124.     P0=0xc6;
  125.     delay(100);
  126.     a3=0;
  127.         }
  128.         for(j=0;j<40;j++) {
  129.                 delay(10);
  130.                 while(int_DS18b20());
  131.     write_byte(0xcc);
  132.     write_byte(0xbe);
  133.     a=read_byte();
  134.     b=read_byte();
  135.     if(b>127){
  136.                         a=~a;
  137.                         b=~b;
  138.                         a=a>>4;
  139.                         t=b<<4;
  140.                         t=t|a;
  141.                         t+=1;
  142.                         sh=t/10;
  143.                         ge=t%10;
  144.                         for(count=0;count<123;count++){
  145.                                 if(t>=10){
  146.                                         a0=1;
  147.                                         P0=0xbf;
  148.                                         delay(30);
  149.                                         a0=0;
  150.                                         a1=1;
  151.                                         P0=tab[sh];
  152.                                         delay(30);
  153.                                         a1=0;
  154.                                         a2=1;
  155.                                         P0=tab1[ge];
  156.                                         delay(30);
  157.                                         a2=0;
  158.                                         a3=1;
  159.                                         P0=0xc6;
  160.                                         delay(30);
  161.                                         a3=0;
  162.                                 }else{
  163.                                         a0=0;
  164.                                         a1=1;
  165.                                         P0=0xbf;
  166.                                         delay(30);
  167.                                         a1=0;
  168.                                         a2=1;
  169.                                         P0=tab1[ge];
  170.                                         delay(30);
  171.                                         a2=0;
  172.                                         a3=1;
  173.                                         P0=0xc6;
  174.                                         delay(30);
  175.                                         a3=0;
  176.                                 }
  177.                         }
  178.                 }else{
  179.                         count=0;
  180.                         a=a>>4;
  181.                         t=b<<4;
  182.                         t=t|a;
  183.                         bai=t/100;
  184.                         sh=t%100/10;
  185.                         ge=t%10;
  186.                         for(count=0;count<100;count++){
  187.                                 if(bai){
  188.                                         a0=1;
  189.                                         P0=tab[bai];
  190.                                         delay(20);
  191.                                         a0=0;
  192.                                 }else
  193.                                 a0=0;
  194.                                 if(sh){
  195.                                         a1=1;
  196.                                         P0=tab[sh];
  197.                                         delay(20);
  198.                                         a1=0;
  199.                                 }
  200.                                 a1=0;
  201.                                 a2=1;
  202.                                 P0=tab1[ge];
  203.                                 delay(20);
  204.                                 a2=0;
  205.                                 a3=1;
  206.                                 P0=0xc6;
  207.                                 delay(20);
  208.                                 a3=0;
  209.                         }
  210.                 }
  211.                 int_();
  212.         }
  213. }

  214. void main()
  215. {
  216.         init();
  217.         while(1){
  218.   scan();
  219.         display();
  220.         }
  221. }

  222. void timer0() interrupt 1
  223. {
  224.         TH0=(65536-50000)/256;
  225.         TL0=(65536-50000)%256;
  226.         T50ms++;
  227.         if(T50ms==20)
  228.         {      
  229.           T50ms=0;
  230.           miao++;
  231.           if(miao>=60)
  232.           {
  233.            miao=miao-60;
  234.            fen++;
  235.            if(fen>=60)
  236.            {
  237.            fen=fen-60;
  238.                  shi++;
  239.                  }
  240.                 }
  241.         }
  242. }
  243. void timer1() interrupt 0
  244.         {   
  245.                 miao=miao+5;
  246.                 retemp();
  247.         }
復制代碼

所有資料51hei提供下載:
溫度測控顯示系統.rar (18.4 KB, 下載次數: 7)


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

使用道具 舉報

沙發
ID:558085 發表于 2019-6-26 11:04 | 只看該作者
不要怪沒給你分,只能說這個例子太多了。如果你能整個STM32與18B20的溫度計就會有分
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲成av人在线观看导航 | 久久不卡 | 欧美日韩不卡合集视频 | 国产伦精品一区二区三区四区视频 | 欧美成视频 | 91精品国产综合久久精品 | 国产一区91精品张津瑜 | 国产真实乱全部视频 | 欧美无乱码久久久免费午夜一区 | 日韩精品免费在线观看 | 毛片大全 | 亚洲免费视频播放 | 欧美精品乱码99久久影院 | 亚洲精品一区av在线播放 | 二区在线视频 | 成人在线免费观看视频 | 国产一区二区三区在线 | 91精品国产综合久久久动漫日韩 | 亚洲a视 | 国产精品99久久久久久宅男 | 中文字幕久久久 | 女人牲交视频一级毛片 | 在线观看黄色电影 | 日韩欧美国产一区二区三区 | 国产综合区 | 久久久久久免费精品一区二区三区 | 嫩草影院黄 | 国产视频第一页 | 91福利在线导航 | 国产视频h | 亚洲一区久久久 | 欧美一级欧美一级在线播放 | 中文字幕一区二区三区四区 | 一区二区三区精品视频 | 精品视频一区二区 | 国产精品福利网站 | 色婷婷一区二区三区四区 | 国产免费视频 | 黄网免费看| 国产一区二区在线免费观看 | 日韩精品一区在线 |