非著名程序员艺术家-栈斗者 2019-05-27 23:29 采纳率: 0%
浏览 483

单片机51和adc0804模拟量转数字量,数码管显示乱码,知道的可以帮我看看的。

程序我也查了半天了,奈何小白总是照不出来问题,仿真电路也看了半天,好像也没啥问题。我先给大家看看电路图吧。图片说明图片说明图片说明图片说明

 #include <reg52.h>
 #include <intrins.h>
 #define uchar unsigned char 
 #define uint  unsigned int 
 sbit dula=P2^0;
 sbit wela=P2^1;
 sbit adwr=P3^6;
 sbit adrd=P3^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,    //定义一个阴极数码管的编码表。
                    0x66,0x6d,0x7d,0x07,
                    0x7f,0x6f,0x77,0x7c,
                    0x39,0x5e,0x79,0x71};
void delayms(uchar xms) 
{
 uint i,j;
 for(i=xms;i>0;i--)
   for(j=110;j>0;j--);
}
void display(uchar bai,uchar shi,uchar ge )
{
 wela=0;
 dula=0;
 P0=0X00;
 P0=table[bai];
 dula=1;
 dula=0;
 P0=0xff;
  P0=0x7e;
 wela=1;
 wela=0;
 delayms(10);
  wela=0;
 dula=0;
  P0=0X00;
  P0=table[shi];
 dula=1;
 dula=0;
 P0=0xff;
  P0=0x7d;
 wela=1;
 wela=0;
 delayms(10);
  wela=0;
 dula=0;
  P0=0X00;
  P0=table[ge];
  dula=1;
 dula=0;
 P0=0xff;
 P0=0x7b;
 wela=1;
 wela=0;
 delayms(10);
}
void main()
{
 uchar a,A1,A2,A3,adval;
 while(1)
 {
  adwr=1;
  _nop_();
  adwr=0;
  _nop_();
  adwr=1;
  _nop_();
  P1=0xff;
  adrd=1;
  _nop_();
  adrd=0;
  _nop_();
  adval=P1;
  adrd=1;
  delayms(10);
  A1=adval/100;
  A2=adval%100/10;
  A3=adval%10;
   for(a=10;a>0;a--)
  {
   display(A1,A2,A3);
  }
 }
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 16:22
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器