① 单片机控制七段数码管显示,为什么要加三极管驱动啊
数码管需要的工作电流大,单片机的驱动电流不够。一般的做法,就是利用单片机的输出,做三极管的基极驱动,然后让三极管的发射极做输出的驱动,输出更高的电压和大的电流。这样才能驱动数码管的显示。
所以工作中,一般选择共阳的。一段接电源,负端接单片机,但是为了增加驱动,一般也把单片机的输出口经过一个非门后,接数码管的负极。这样电路的输出电流和电压才能达到要求。
希望能对你
有用!!
② 用51单片机程序显示3位7段数码管,求具体程序
假设为共阴极数码管,驱动输入端接单片机P1口,共阴极接P2口的0.1.2.脚。我的程序如下,当前显示数字123
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef long int uint32;
code uint8 number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay_ms(uint16 x)//1ms延时
{
uint8 i = 121;
while(x > 0)
{
i = 121;
while(i > 0)
i --;
x --;
}
}
void xianshi(uint16 x)
{
uint8 i=0;
for(i=0;i<=2;i++)
{
P2=~(1<<i);
switch(i)
{
case 0:P1=number[(x/1)%10];break;
case 1:P1=number[(x/10)%10];break;
case 2:P1=number[(x/100)%10];break;
default:break;
}
delay_ms(10);
}
}
main()
{
while(1)
{
xianshi(123);
}
}
③ 求单片机实验七段数码管显示实验程序
/* ch03-3-4.c - 七段LED数码管实验程序 */
//==声明区=================================================
#include<reg51.h> //定义8051寄存器的头文件,P2-17~19
#define SEG P0 //定义七段LED数码管接至Port 0
/*声明七段LED数码管驱动信号数组(共阳)*/
char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99, //数字0-4
0x92,0x83,0xf8,0x80,0x98}; //数字5-9
void delay(int); //声明延迟函数
//==主程序==========================================
main() //主程序开始
{ unsigned char i; //声明无符号变量i
while(1) //无穷循环,程序一直跑
for(i=0;i<10;i++) //显示0-9,共10次
{ SEG=TAB[i]; //显示数字
delay(500); //延迟500×1m=0.5秒
} //for循环结束
} //主程序结束
//==子程序==========================================
/* 延迟函数,延迟约x×1ms */
void delay (int x) //延迟函数开始
{ int i,j; //声明整形变量i,j
for (i=0;i<x;i++) //计数x次,延迟x×1ms
for (j=0;j<160;j++); //计数120次,延迟1ms
} //延迟函数结束
④ 共阳极四位七段数码管(12个引脚)怎么连接到单片机上啊
哦,这个啊……
正面看的话,上面6脚,下面6脚,共12脚
上面从左到右是1,a,f,2,3,b
下面从左到右是e,d,dp,c,g,4
其中1,2,3,4是4个数码管的位选,因为是共阳,所以这几脚高电平时才有可能点亮数码管,记得要三极管驱动,9013就可以了.9013的C加个限流电阻接电源,B接单片机,E接1,2,3,4.单片机给高电平时选中.
a,b,c,d,e,f,g,dp是段码,低电平有效,一般也送单片机控制