51单片机在使用数码管的时候,若使用自定义函数则会出现如图所示情况
要实现的效果是利用switch语句来实现第几个数码管显示什么数字
代码如下 理想结果是应该只有第二个灯显示数字1
#include <REGX52.H>
void Nixie(unsigned char Location,unsigned char number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
}
P0=0x06;
}
void main()
{
Nixie(2,2);
}
即使不使用switch语句也是同样的结果,但是放在主函数里写显示正常
void Com_Int(void) interrupt 4
{
EA = 0;
if(RI == 1) //当硬件接收到一个数据时,RI会置位
{
LED=0;
RI = 0;
receive_data = SBUF;//接收到的数据
if(receive_data!=0)
receive_real_data=receive_data;
switch(receive_real_data) //新增的switch函数
{
case '5': Speed_add(); break;
case '6': Speed_reduce(); break;
}
SBUF=receive_real_data;//将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
EA = 1;
}
P0是段选,P2是位选吗?数码管是共阴的还是共阳的!