找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机动作不对...数码管显示电位器的AD值

[复制链接]
跳转到指定楼层
楼主
ID:197878 发表于 2017-5-16 18:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是89C51单片机做实验,数码管显示电位器的AD值,现在想加几个动作但是上电后,灯完全没反应,请教教我····

  1. #include"reg51.h"
  2. #include"XPT2046.h"

  3. //--定义使用的IO--//
  4. #define GPIO_DIG P0
  5. #define uchar unsigned char                 

  6. sbit LSA=P1^5;
  7. sbit LSB=P1^6;
  8. sbit LSC=P1^7;

  9. sbit  bj=P3^1;
  10. sbit   dj1=P2^2;
  11. sbit deng=P2^3;
  12. sbit dj2=P2^4;

  13. uint temp;
  14. //--定义全局变量--//
  15. unsigned char code DIG_CODE[17]={
  16. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  17. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  18. //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码

  19. uchar DisplayData[8];                //用来存放要显示的8位数的值
  20. void DigDisplay(void);
  21. void xianshi(void)
  22. {
  23.                 uint  count;
  24.         while(1)
  25.         {
  26.           if(count==50)
  27.           {
  28.                   count=0;
  29.                 temp = Read_AD_Data(0x94)*2.46;                //   AIN0 电位器                通道地址        001
  30.         //        temp = Read_AD_Data(0xD4);                //   AIN1 热敏电阻                通道地址        101
  31.         //        temp = Read_AD_Data(0xA4);                //   AIN2 光敏电阻                通道地址        010
  32.         //        temp = Read_AD_Data(0xE4);                //   AIN3 外部输入                通道地址        110
  33.           }
  34.           count++;


  35.           DisplayData[6]=DIG_CODE[temp%10000/1000];
  36.           DisplayData[7]=DIG_CODE[temp%1000/100];



  37.           DigDisplay();
  38.         }
  39. }
  40. void DigDisplay(void)
  41. {
  42.         unsigned char i;
  43.         unsigned int j;
  44.         for(i=0;i<8;i++)
  45.         {
  46.                 switch(i)         //位选,选择点亮的数码管,
  47.                 {
  48. //                        case(0):
  49. //                                LSA=0;LSB=0;LSC=0; break;//显示第0位
  50. //                        case(1):
  51. //                                LSA=1;LSB=0;LSC=0; break;//显示第1位
  52. //                        case(2):
  53. //                                LSA=0;LSB=1;LSC=0; break;//显示第2位
  54. //                        case(3):
  55. //                                LSA=1;LSB=1;LSC=0; break;//显示第3位
  56.                         case(4):
  57.                                 LSA=0;LSB=0;LSC=1; break;//显示第4位
  58.                         case(5):
  59.                                 LSA=1;LSB=0;LSC=1; break;//显示第5位
  60.                         case(6):
  61.                                 LSA=0;LSB=1;LSC=1; break;//显示第6位
  62.                         case(7):
  63.                                 LSA=1;LSB=1;LSC=1; break;//显示第7位        
  64.                 }
  65.                 GPIO_DIG=DisplayData[i];//发送段码
  66.                 j=50;                                                 //扫描间隔时间设定
  67.                 while(j--);        
  68.                 GPIO_DIG=0x00;//消隐
  69.         }
  70. }

  71. void main(void)
  72. {  dj1=dj2=0;
  73.          while(1)
  74.         {         xianshi();
  75.               if(temp<1000)              {dj1=1;dj2=1;bj=1;deng=0;}
  76.                  if(1000<=temp<2000)        {dj1=1;dj2=1;bj=0;deng=0;}
  77.              if(temp>2000 && temp<8000) {dj1=1;dj2=0;bj=0;deng=0;}
  78.              if(temp>8000)              {dj1=0;dj2=0;bj=1;deng=1;}
  79.         }                                                     
  80. }        


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

使用道具 举报

沙发
ID:197878 发表于 2017-5-16 18:23 | 只看该作者
因为输入范围不足我把数据乘了2.46倍,应该是主程序有问题吧,我纯新手····
回复

使用道具 举报

板凳
ID:82765 发表于 2017-5-17 06:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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