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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機顯示8bit精度的濕度,一直是00 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
想要用數碼管來顯示8bit精度的濕度,但不知道哪里錯了,顯示一直是00,求大佬幫幫忙。s1,s2是兩個中斷源,中斷程序是用來顯示我事先設定的濕度閾值的。


單片機源程序如下:
  1. #include "reg52.H"
  2. #include <intrins.H>      
  3. #include <stdio.h>
  4. #define MEASURE_HUMI 0x05
  5. #define ACK 1
  6. #define noACK 0
  7. #define STATUS_RSG_W 0x06
  8. #define STATUS_RSG_R 0x07
  9. #define FUNCTION_SET
  10. #define _7SEG_H_
  11. sbit DATA=P1^0;
  12. sbit SCK=P1^1;
  13. sbit s1=P3^2;
  14. sbit s2=P3^3;
  15. sbit s3=P1^2;
  16. sbit s4=P1^3;
  17. sbit s5=P1^6;
  18. sbit s6=P3^4;
  19. sbit DBPort=0x80;
  20. sbit led1=P1^4;
  21. sbit led2=P1^5;
  22. unsigned char shidu;
  23. unsigned int a=0x20;
  24. unsigned int b=0x40;
  25. unsigned int c[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  26. unsigned char d;
  27. unsigned char e;
  28. unsigned char f;
  29. unsigned char g;
  30. void Delay100ms()                //@12.000MHz
  31. {
  32.         unsigned char i, j, k;

  33.         _nop_();
  34.         _nop_();
  35.         i = 5;
  36.         j = 144;
  37.         k = 71;
  38.         do
  39.         {
  40.                 do
  41.                 {
  42.                         while (--k);
  43.                 } while (--j);
  44.         } while (--i);
  45. }

  46. void Disp()
  47. {
  48.   f=e;
  49.         e=e&0x0F;

  50.         d=c[e];
  51.         P2=d;
  52.         f=f>>4;
  53.         f=f&0x0F;

  54.         f=c[f];
  55.         P0=f;
  56. }
  57. void Disp1()
  58. {
  59.         unsigned char i,j;
  60.   i=g;
  61.         g=g&0x0F;

  62.         j=c[g];
  63.         P2=j;
  64.         i=i>>4;
  65.         i=i&0x0F;

  66.         i=c[i];
  67.         P0=i;
  68. }
  69. char write_byte(unsigned char value)
  70. {
  71. unsigned char        error=0;
  72.         unsigned char i=0;
  73.         for(i=0x80;i>0;i/=2)
  74.         {
  75.                 if(i&value)
  76.                         DATA=1;
  77.                 else
  78.                         DATA=0;
  79.                 SCK=1;
  80.                 _nop_();_nop_();_nop_();
  81.                 SCK=0;        
  82.         }
  83.         DATA=1;
  84.         SCK=1;
  85.         error=DATA;
  86.         _nop_();_nop_();_nop_();
  87.         SCK=0;
  88.         DATA=1;
  89.         return error;
  90. }
  91. char read_byte(unsigned char ack)
  92. {
  93.         unsigned char i,val=0;
  94.         DATA=1;
  95.         for(i=0x80;i>0;i/=2){
  96.                 SCK=1;
  97.         if(DATA)
  98.                 val=(val|i);
  99.         _nop_();_nop_();_nop_();
  100.         SCK=0;
  101.         }
  102.         if(ack==1)DATA=0;
  103.         else DATA=1;
  104.         _nop_();_nop_();_nop_();
  105.         SCK=1;
  106.         _nop_();_nop_();_nop_();
  107.         SCK=0;
  108.         _nop_();_nop_();_nop_();
  109.         DATA=0;
  110.         return val;
  111.         
  112. }
  113. void qidong(void){
  114.         DATA=1;SCK=0;
  115.         _nop_();
  116.         SCK=1;
  117.         _nop_();
  118.         DATA=0;
  119.         _nop_();
  120.         SCK=0;
  121.         _nop_();
  122.         SCK=1;
  123.         _nop_();
  124.         DATA=1;
  125.         _nop_();
  126.         SCK=0;
  127. }
  128. void reset(void){
  129. unsigned char i;
  130.         DATA=1; SCK=0;
  131.         for(i=0;i<9;i++)
  132.         {SCK=1;
  133.                 SCK=0;
  134.         }
  135.                 qidong();
  136. }
  137. char measure(unsigned char h,unsigned char j,unsigned char k){
  138. unsigned int i;
  139.         unsigned char error=0;
  140.         qidong();
  141.         error+=write_byte(MEASURE_HUMI);
  142.         for(i=0;i<65535;i++)if(DATA==0)break;
  143.         if(DATA) error+=1;
  144.         h=read_byte(ACK);
  145.         j=read_byte(ACK);
  146.         k=read_byte(noACK);
  147.         return error;
  148. }

  149. void int0_isr()interrupt 0
  150. {
  151.         EA=0;
  152.         g=a;
  153.         Disp1();
  154.         Delay100ms();
  155.         while(s1==1)
  156.                 {
  157.         if(s3==0)
  158.         {a++;
  159.         Delay100ms();
  160.                 g=a;
  161.         Disp1();
  162.         }
  163.         if(s4==0)
  164.         {
  165.                 a--;
  166.                 Delay100ms();
  167.                 g=a;
  168.         Disp1();
  169.         }
  170. }
  171.                 EA=1;
  172.    IE0=0;
  173. }

  174. void int2_isr()interrupt 2
  175. {
  176.                 EA=0;
  177.         g=b;
  178.         Disp1();
  179.         Delay100ms();
  180.         while(s2==0)
  181.                 {
  182.         if(s3==0)
  183.         {b++;
  184.                 Delay100ms();
  185.                 g=b;
  186.         Disp1();
  187.         }
  188.         if(s4==0)
  189.         {
  190.                 b--;
  191.                 Delay100ms();
  192.                 g=b;
  193.         Disp1();
  194.         }
  195. }
  196.                 EA=1;
  197.     IE1=0;
  198. }
  199. void shoudong()
  200. {

  201.         if(s5==0)
  202.         {        led1=0;
  203.                 Delay100ms();
  204.         while(s5==1)
  205.         {led1=0;

  206.           Disp();
  207.                 Delay100ms();
  208.         }
  209.         }
  210.         led1=1;
  211.         if(s6==0)
  212.         {        led2=0;
  213.                 Delay100ms();
  214.         while(s6==1)
  215.         {led2=0;

  216.                 Delay100ms();
  217. }
  218.         }
  219.         led1=1;
  220. }

  221. void main()
  222. {
  223.         unsigned  char error;
  224.         unsigned char hh;
  225.         unsigned check;
  226.         Delay100ms();
  227.         error=0;
  228.         IT0=1;
  229.         IT1=1;


  230.         EA=1;

  231.         EX1=1;
  232.         EX0=1;
  233.   P0=0;
  234.         P2=0;
  235.         reset();
  236.         Delay100ms();
  237.         
  238.         error+=measure(shidu,hh,check);
  239.         if(error=1)reset();
  240.   e=shidu;
  241.         Disp();
  242.   Delay100ms();
  243.         
  244.         while(1){
  245.          shoudong();
  246.         while(shidu>a)
  247.         {
  248.           shoudong();
  249.                 led1=0;

  250.                 Delay100ms();
  251.         }
  252.         led1=1;
  253.         while(shidu<b)
  254.         {
  255.     shoudong();
  256.                 led2=0;

  257.                 Delay100ms();
  258.         }
  259.         led2=1;
  260. }        
  261. }
復制代碼

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费观看黄视频 | 精品久久久久久久久久久 | 婷婷综合五月天 | 日日操日日干 | 日本精品久久 | 欧美成人一区二区三区 | 久久成人精品 | 日韩欧美天堂 | 欧美成人h版在线观看 | 一区二区国产精品 | avmans最新导航地址 | 玖玖视频免费 | 一区二区高清在线观看 | 欧美在线a| 久久另类视频 | 一区二区三区中文字幕 | 欧美日韩精品久久久免费观看 | 成人国产精品入口免费视频 | 黄色一级片视频 | 欧美国产一区二区 | 91av亚洲 | 久久91精品 | 国产综合网站 | 日韩av在线一区 | 中文字幕在线视频精品 | 亚洲色图第一页 | 不卡一二区 | 三级视频在线观看电影 | 蜜桃视频在线观看免费视频网站www | 天天曰天天干 | 日韩在线播放视频 | 成人免费黄视频 | 中文字幕亚洲一区二区三区 | 天天看逼 | 欧美一区二区三区在线免费观看 | 亚洲一区二区三区在线播放 | 一区二区免费高清视频 | 99热这里有精品 | 国产精品亚洲综合 | 自拍偷拍精品 | 国产精品jizz在线观看老狼 |