找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2432|回复: 4
收起左侧

单片机adc0804转换电压使用1602显示。为什么检测不到P1端的电压值

[复制链接]
ID:226129 发表于 2017-9-11 20:09 | 显示全部楼层 |阅读模式
adc0804转换电压使用1602显示。为什么检测不到P1端的电压值。
程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar code table[]="Voltage:";
  6. uchar code table1[]="V";
  7. uchar table2[3];
  8. uchar table3[]={0,1,2,3,4,5,6,7,8,9};
  9. uchar table4[]={.1};
  10. sbit lcden=P3^4;
  11. sbit lcdrs=P3^5;

  12. sbit dula=P2^6;
  13. sbit wela=P2^7;

  14. sbit adwr=P3^6;
  15. sbit adrd=P3^7;
  16. sbit adcs=P3^0;
  17. uchar num;
  18. void delay(uint z)
  19. {
  20.         uint x,y;
  21.         for(x=z;x>0;x--)
  22.                 for(y=110;y>0;y--);
  23. }
  24. void write_com(uchar com)
  25. {        lcden=0;
  26.         lcdrs=0;
  27.         P0=com;
  28.         delay(5);
  29.         lcden=1;
  30.         delay(5);
  31.         lcden=0;
  32. }
  33. void write_data(uchar date)
  34. {        lcden=0;
  35.         lcdrs=1;
  36.         P0=date;
  37.         delay(5);
  38.         lcden=1;
  39.         delay(5);
  40.         lcden=0;
  41. }
  42. void init()
  43. {
  44.         dula=0;
  45.         wela=0;
  46.         lcden=0;
  47.         write_com(0x38);
  48.         write_com(0x0c);
  49.         write_com(0x06);
  50.         write_com(0x01);
  51. }
  52. void main()
  53. {        uchar adval,A3,A2,A1,b;
  54.         init();
  55.         write_com(0x80);
  56.         for(num=0;num<8;num++)
  57.         {
  58.                 write_data(table[num]);
  59.                 delay(5);
  60.         }
  61.         write_com(0x80+0x0e);
  62.         for(num=0;num<1;num++)
  63.         {
  64.                 write_data(table1[num]);
  65.                 delay(5);
  66.         }

  67.         while(1)
  68.         {        adcs=1;
  69.                 adwr=1;
  70.                 _nop_();
  71.                 adwr=0;
  72.                 _nop_();
  73.                 adwr=1;
  74.                
  75.                 P1=0xff;
  76.                 adrd=1;
  77.                 _nop_();
  78.                 adrd=0;
  79.                 _nop_();
  80.                 adval=P1;
  81.                 adcs=0;
  82.                 adrd=1;
  83.                 for(b=0;b<5;b++)
  84.                 {
  85.                 write_com(0x80+0x0a);
  86.                 write_data(table2[0]+48);
  87.                 write_com(0x80+0x0b);
  88.                 write_data(table2[1]+48);
  89.                 write_com(0x80+0x0c);
  90.                 write_data(table2[2]+48);         
  91.                  }
  92.                 A1=adval/100 ;
  93.                 A2=adval%100/10;
  94.                 A3=adval%10;
  95.                 table2[0]=table3[A1];
  96.                 table2[1]=table3[A2];
  97.                 table2[2]=table3[A3];
  98.                
  99.                
  100.                        
  101.         }
  102. }
复制代码


回复

使用道具 举报

ID:111634 发表于 2017-9-11 21:49 | 显示全部楼层
P1端的电压值是数字信号,不是模拟信号!
回复

使用道具 举报

ID:96682 发表于 2017-9-12 05:47 | 显示全部楼层
没头没脑滴不明白楼主说的是啥意思
回复

使用道具 举报

ID:226129 发表于 2017-9-12 08:37 | 显示全部楼层
zl2168 发表于 2017-9-11 21:49
P1端的电压值是数字信号,不是模拟信号!

就是让P1端的数字信号显示出来。不是吗?求指教
回复

使用道具 举报

ID:111634 发表于 2017-9-12 10:11 | 显示全部楼层
本帖最后由 zl2168 于 2017-9-12 10:18 编辑

检测不到P1端的电压值?你怎么检测?用万用表吗?还是keil中观测P1口的数据?
给你介绍几个参考案例参考一下吧!
Proteus仿真一下,确认有效。
实例81 ADC0808中断方式A-D(ALE输出CLK)
实例81 ADC0808A-D( ALE输出CLK,中断方式).rar (54.32 KB, 下载次数: 4)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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