51单片机驱动数码管静态显示
首先要知道数码管的电路图
4位数码管,通过控制数码管的(1234管脚)也就是数码管的位选端的电平,控制对应的数码管位置亮,控制断选端(A~DP端)电平输出控制数码管的二极管亮。
采用共阳极数码管,也就是需要数码管位选端(1234端)控制输入高电平驱动数码管,每次只能控制一位数码管亮
由于89C52的P0的IO口没有上拉电阻,因此需要在IO口和数码管之间加上一个排阻,也就是RP1
#include <REGX52.H>
sbit wei1 = P2^4;//定义第一位数码管
sbit wei2 = P2^5;//定义第二位数码管
sbit wei3 = P2^6;//定义第三位数码管
sbit wei4 = P2^7;//定义第四位数码管
void Nixie(unsigned char Location,Number)
{
switch(Location) //通过switch循环控制数码管位选端
{
case 1:wei1=0; wei2=0; wei3=0; wei4=1;break;
case 2:wei1=0; wei2=0; wei3=1; wei4=0;break;
case 3:wei1=0; wei2=1; wei3=0; wei4=0;break;
case 4:wei1=1; wei2=0; wei3=0; wei4=0;break; //共阳极数码管位选端输入高电平驱动
}
P0=0xA4; //P0口输出0010 0101数码管显示2
}
void main()
{
Nixie(1,1); //驱动数码管位选端1就是第一位数码管亮
}
运行后