为什么我这个静态数码管显示不能指哪打哪
为什么结果不对,数字显示的位置不对
【以下回答由 GPT 生成】
问题分析: 根据问题描述,代码中的函数nixie用于显示数码管上的数字,通过将对应位置的引脚设置为高电平或低电平来控制对应位置的显示。但是在使用中发现,无论将数字显示到哪个位置,都只能在最后一个数码管位置进行显示。
问题原因: 问题出在nixie函数的switch语句上。在函数中,根据location参数的不同,设置不同位置的引脚。但是编码时将数字0-7对应的位置设置与数码管的位置对应关系弄错了,导致无论设置哪个位置,最后都只显示在最后一个数码管位置。
解决方案: 1. 修改nixie函数的switch语句,根据nixietable中的位置与数码管的对应关系,设置正确的引脚位置。修改后的代码如下:
void nixie(unsigned char location, unsigned char number) {
switch(location) {
case 1: P24=0; P23=0; P22=1; break;
case 2: P24=0; P23=1; P22=1; break;
case 3: P24=0; P23=1; P22=0; break;
case 4: P24=1; P23=1; P22=1; break;
case 5: P24=1; P23=1; P22=0; break;
case 6: P24=1; P23=0; P22=0; break;
case 7: P24=0; P23=0; P22=0; break;
case 8: P24=1; P23=0; P22=1; break;
}
PO = nixietable[number];
}
修改后的代码如下:
#include<REGX52.H>
unsigned char nixietable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void nixie(unsigned char location, unsigned char number) {
switch(location) {
case 1: P24=0; P23=0; P22=1; break;
case 2: P24=0; P23=1; P22=1; break;
case 3: P24=0; P23=1; P22=0; break;
case 4: P24=1; P23=1; P22=1; break;
case 5: P24=1; P23=1; P22=0; break;
case 6: P24=1; P23=0; P22=0; break;
case 7: P24=0; P23=0; P22=0; break;
case 8: P24=1; P23=0; P22=1; break;
}
PO = nixietable[number];
}
void main() {
nixie(2, 3);
while(1);
}
这样修改后的代码中,nixie函数中的switch语句会根据location参数设置不同位置的引脚,实现在指定位置显示数字。
清晰易懂的语言告诉你如何解决了你的问题,你满意吗?
【相关推荐】