hantu 发表于 2020-2-13 12:55 while(1); 后面多列个; 去掉就正常了谢谢你 |
cccc888 发表于 2020-2-13 19:12 while(1); 后面多列个; 去掉就正常了谢谢你 |
cccc888 发表于 2020-2-13 19:12 我用的是共阴数码管,之前做实验一直都正常的,我在研究下吧 |
段码,换一个, 比如这样 unsigned char code numtab[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; p2=numtab[3];//显示3 |
hantu 发表于 2020-2-13 12:55 去掉了 AD 显示异常?还是一样,不知道哪里错了 #include <reg51.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char uchar code table[]={ //数码管编码 0到F 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; sbit dula=P2^6; //定义数码管的段选 sbit wela=P2^7; //定义数码管的位选 sbit adwr=P3^6; sbit adrd=P3^7; void delay_ms(uint); //申明延时函数;因为在主函数之前,也可以不申明 void display (uchar bai,uchar shi,uchar ge) //数码管显示子函数 { P0=0x00; dula=1; P0=table[bai]; dula=0; P0=0xff; wela=1; P0=0x7e; wela=0; delay_ms(5); P0=0x00; dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0x7d; wela=0; delay_ms(5); P0=0x00; dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0x7b; wela=0; delay_ms(5); } void delay_ms(uint cc) //延时子函数 { uint aa,bb; for (aa=cc;aa>0;aa--) for (bb=110;bb>0;bb--); } void main() //主函数 { uchar adval,A1,A2,A3,a; wela=1; P0=0x78; wela=0; while(1); { // adwr=1; // _nop_(); // adwr=0; // _nop_(); // adwr=1; // for(a=10;a>0;a--) // { display(A1,A2,A3); // } // P1=0xff; // adrd=1; // _nop_(); // adrd=0; // _nop_(); adval=0x00; // adrd=1; A1=adval/100; A2=adval%100/10; A3=adval%10; } } |
csmyldl 发表于 2020-2-13 13:07 我已经加了哈 |
嗯嗯 我去试一下 谢谢 |
hantu 发表于 2020-2-13 12:55 好的,我先试试哈,感谢你的建议。 |
在每一条P0=table[]前加上P0=0;就可以了 |
先不要ADC,先验证你能在数码管上正确显示要显示的数字吧 |