永发信息网

51单片机共阴数码管越来越暗

答案:4  悬赏:50  手机版
解决时间 2021-04-04 23:13
我在写一个51单片机的程序,是让共阴数码管显示矩阵键盘按下的按钮所包含的字母或者数字,但是我发现越是输入得多,数码管闪烁越厉害,而且越来越暗,而且靠左一个的数码管有右边一个数码管的残影。求大神给去残影的方法,下面送上我的代码;还有,在输满8个之后开始出现乱显示东西了,为啥?

void main(void){
unsigned char cord_l;
unsigned char cord_r;
unsigned char total;
unsigned char num;
while(1){
Key=0x0f;
cord_l=Key;
while(Key==cord_l){
if(num!=0){
Display(num);
if(num==9){
num=0;
}
}
}
if(Key!=cord_l){
DelayMs(10);
if(Key!=cord_l){
cord_l=Key;
Key=0xf0;
cord_r=Key;
total=cord_l+cord_r;
number[num]=cult(total);
num++;
while(cord_r==Key){
Display(num);
}
}
}

}
}

unsigned char cult(unsigned char total){
unsigned char i;
switch(total){
case 0x7E: i=0; return i;break;
case 0x7D: i=1; return i;break;
case 0x7B: i=2; return i;break;
case 0x77: i=3; return i;break;
case 0xBE: i=4; return i;break;
case 0xBD: i=5; return i;break;
case 0xBB: i=6; return i;break;
case 0xB7: i=7; return i;break;
case 0xDE: i=8; return i;break;
case 0xDD: i=9; return i;break;
case 0xDB: i=10; return i;break;
case 0xD7: i=11; return i;break;
case 0xEE: i=12; return i;break;
case 0xED: i=13; return i;break;
case 0xEB: i=14; return i;break;
case 0xE7: i=15; return i;break;
}
i=0;return i;
}

void DelayMs(unsigned char t){
while(t--){
DelayUs2x(245);
DelayUs2x(245);
}
}

void DelayUs2x(unsigned char t){
while(--t);
}

void Display(unsigned char num){
unsigned char i;
unsigned char t;
t=num-1;
for(i=0;i DataPort=wei[i];
LATCH1=1;
LATCH1=0;

DataPort=table[number[t]];
LATCH2=1;
LATCH2=0;
DelayMs(5);
t--;
}
}
最佳答案
你显示用中断或按键用中断,然后感觉你用573做的驱动你送位码和段码的程序对换,然后就是你在给573送数据前给它先送一个全0或1让它在送数据时不亮就没阴影了,你按键有延时,按了按键显示就抖变暗,手机打字欢迎追问
全部回答
关注这个问题
将显示程序放到中断去,并设置扫描中断时间在20ms以内
//51单片机控制3位7段共阴数码管 p0口控制 abcdefg dp , //p2.0-p2.2控制123位,----注意:没有用p2.3。 //要使其间隔1s分别显示123,231,321,213...........无限循环 //下列程序,经过仿真,符合要求。 #include #define uchar unsigned char sbit bit1 = p2^0; sbit bit2 = p2^1; sbit bit3 = p2^2; uchar code dulatab[] = //数字编码0-9 {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; //---------------------------------------------------------------- void delay(uchar time) { uchar i, j; for(i = 0; i < time; i++) for(j = 0; j < 110; j++); } //---------------------------------------------------------------- void disp_num(uchar a , b, c) { uchar i; for(i = 1; i < 250; i++) { p2 = 255; //关显示. p0 = dulatab[a]; bit1 = 0; delay(4); p2 = 255; //关显示. p0 = dulatab[b]; bit2 = 0; delay(4); p2 = 255; //关显示. p0 = dulatab[c]; bit3 = 0; delay(4); } } //---------------------------------------------------------------- void main() { while(1) { //要使其间隔1s分别显示123,231,321,213...........无限循环. disp_num(1, 2, 3); disp_num(2, 3, 1); disp_num(3, 2, 1); disp_num(2 , 1, 3); // disp_num(? , ?, ?); 还想显示?内容,楼主可自行编写. // disp_num(? , ?, ?); } } //----------------------------------------------------------------
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
广汽传祺gs5tcs是什么意思
苹果7安装好了高德地图,但无法打开运行,百
娇媚,粗狂,端庄,静谧,凄冷,莅临,吝啬,
描写比赛场面的段落,场面描写的片段
Hangzhou is well-known the west lake the
“了”“辶”是多少笔画?
例2详细过程
弱气少女资源谁有
苹果笔记本里的㎡符号怎么打
上班了把金毛留在家里他会不会特别闷
矿产品稽查能查外来的矿产品吗
单选题一个数的绝对值等于4,这个数是A.4B.-4
怎样制作姓氏头像图片,怎样做带姓氏图片大全
申时是什么意思
为什么一直说,it's just a good busines
推荐资讯
朋友淘得一物:龙头龟身麒麟尾,龟背上还有一
送给姑姑的生日祝福
爱人的生日祝福句子,收到爱人生日祝福回谢的
怎么识别钻石戒指真假,怎样快速用肉眼辨别钻
x的平方=(6-x)的平方+4
安徽北部适合种植什么,重庆地区适合种植写什
fakegpske可以在电脑上使用吗
台湾红烧牛肉面里放牛油吗
ps4使命召唤13和战地1哪个好玩
约一位女性朋友出来看电影,她问我为什么约她
生态木墙板和实木墙板有什么区别
“从前种种,譬如昨日死,以后种种,譬如今日
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?