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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

單片機源程序如下:
  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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃 | 久久久久久国产精品 | 51ⅴ精品国产91久久久久久 | 欧美一区二区在线 | 精品国产18久久久久久二百 | 91精品国产综合久久福利软件 | 黑人巨大精品 | 日本视频免费观看 | 免费黄色特级片 | 91精品久久久 | 国产欧美一区二区三区在线播放 | 亚洲欧美综合 | 91色视频在线观看 | www.天天干.com | 中文在线一区二区 | 国产午夜精品久久久久免费视高清 | 懂色av色香蕉一区二区蜜桃 | 成人av片在线观看 | 欧美中文字幕在线观看 | 日韩综合网| 精品国产鲁一鲁一区二区张丽 | 色姑娘av| 免费看淫片 | 亚洲一区二区三区四区五区中文 | 一二三区视频 | 日韩a在线 | 日日夜夜视频 | 国产区第一页 | 亚洲精品乱码久久久久久9色 | 国产精品一区二区av | 黑人巨大精品欧美一区二区免费 | 国产三区在线观看视频 | 中午字幕在线观看 | 久久久久久久久久久蜜桃 | 亚洲影音先锋 | h视频在线免费 | a级黄色片视频 | 成人国产精品免费观看 | 精品国产乱码久久久久久丨区2区 | 欧美日韩一区二区三区不卡视频 | 国产高清在线精品 |