找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2221|回复: 2
打印 上一主题 下一主题
收起左侧

数码管温度显示程序,有没有大神帮忙看看哪里出错了

[复制链接]
跳转到指定楼层
楼主


  1. #include"reg51.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #include"intrins.h"
  5. sbit DQ=P3^7;
  6. sbit P20=P3^0;
  7. sbit P21=P3^1;
  8. sbit P22=P3^2;
  9. sbit P23=P3^3;
  10. sbit P24=P0^0;
  11. code uchar tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
  12. code uchar tab1[]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};
  13. uchar a,b,t,h;
  14. uchar bai,shi,ge,xiao;
  15. void delay(unsigned int i)
  16. {
  17.   while(i--);  
  18. }
  19. //初始化函数
  20. bit int_DS18B20(void)
  21. {
  22.   unsigned char x=0;
  23.   DQ=1;
  24. delay(8);
  25.   DQ=0;
  26. delay(80);
  27.   DQ=1;
  28. delay(14);
  29.   x=DQ;
  30. delay(30);
  31.   return x;
  32. }
  33. //读一个字节
  34. read(void)
  35. {
  36. unsigned char i=0;
  37. unsigned char dat=0;
  38. for(i=8;i>0;i--)
  39. {
  40. DQ=0;
  41. dat>>=1;
  42. DQ=1;
  43. if(DQ)
  44. dat|=0x80;
  45. delay(4);
  46. }
  47. return(dat);
  48. }
  49. //写一个字节
  50. write(unsigned char dat)
  51. {
  52. unsigned char i=0;
  53. for(i=8;i>0;i--)
  54. {
  55. DQ=0;
  56. DQ=dat&0x01;
  57. delay(5);
  58. DQ=1;
  59. dat>>=1;
  60. }
  61. delay(4);
  62. }
  63. //启动转换
  64. void int_(void)
  65. {
  66. while(int_DS18B20());
  67. write(0xCC);
  68. write(0x44);
  69. }
  70. void main(void)
  71. {
  72. uint count=0;
  73. P3=0X00;
  74. int_();
  75. delay(2200);
  76. for(count=0;count<1000;count++)
  77. {
  78. P20=1;
  79. P1=tab[0];
  80. delay(30);
  81. P20=0;
  82. P21=1;
  83. P1=tab[0];
  84. delay(30);
  85. P21=0;
  86. P22=1;
  87. P1=tab1[0];
  88. delay(30);
  89. P22=0;
  90. P23=1;
  91. P1=0xc6;
  92. delay(30);
  93. P23=0;
  94. }
  95. while(1)
  96. {
  97. delay(120);
  98. while(int_DS18B20());
  99. write(0xcc);
  100. write(0xbe);
  101. a=read();
  102. b=read();
  103.   if(b>127)
  104. {
  105. a=~a;
  106. b=~b;
  107. a>>=4;
  108. t=b<<4;
  109. t=t|a;
  110. t+=1;
  111. shi=t/10;
  112. ge=t-shi*10;
  113. for(count=0;count<123;count++)
  114. {
  115. if(t>=10)
  116.   {
  117.   P20=1;
  118.   P1=0xbf;
  119.   delay(30);
  120.   P20=0;
  121.   P21=1;
  122.   P1=tab[shi];
  123.   delay(50);
  124.   P21=0;
  125.   P22=1;
  126.   P1=tab1[ge];
  127.   delay(30);
  128.   P22=0;
  129.   P23=1;
  130.   P1=0xc6;
  131.   delay(30);
  132.   P23=0;
  133.   }
  134.   else
  135.   {
  136.   P20=0;
  137.   P21=1;
  138.   P1=0xbf;
  139.   delay(30);
  140.   P21=0;
  141.   P22=1;
  142.   P1=tab1[ge];
  143.   delay(30);
  144.   P22=0;
  145.   P23=1;
  146.   P1=0xc6;
  147.   delay(30);
  148.   P23=0;
  149.   }
  150. }
  151. }
  152. else
  153. {
  154. count=0;
  155. a=a>>4;
  156. t=b<<4;
  157. t=t|a;
  158. if(t>36)
  159. {P24=0;}
  160. else P24=1;
  161. bai=t/100;
  162. shi=(t-bai*100)/10;
  163. ge=t-(bai*100+shi*10);
  164.    for(count=0;count<123;count++)
  165.    {
  166.    if(bai)
  167.    {
  168.    P20=1;
  169.    P1=tab[bai];
  170.    delay(30);
  171.    P20=0;
  172.    }
  173.    P20=0;
  174.    P21=1;
  175.    P1=tab[shi];
  176.    delay(30);
  177.    P21=0;
  178.    P22=1;
  179.    P1=tab1[ge];
  180.    delay(30);
  181.    P22=0;
  182.    P23=1;
  183.    P1=0xc6;
  184.    delay(30);
  185.    P23=0;
  186.    }
  187. }
  188. int_();
  189. }


复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:488382 发表于 2019-3-12 19:51 来自手机 | 只看该作者
大哥大哥,我一直在找你这个数码管,请问它在DXP里如何找到?
回复

使用道具 举报

板凳
ID:475247 发表于 2019-3-13 09:15 | 只看该作者
本帖最后由 还有谁? 于 2019-3-22 12:33 编辑

很器件在里面,看看别人怎么弄的再说

评分

参与人数 2黑币 +24 收起 理由
static + 8 很给力!
shuisheng + 16 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表