1. 如何利用单片机让4位数码管显示
程序如下(用的是STC89C52芯片):
#include<reg52.h>//52系列单片机头文件
#defineucharunsignedchar
#defineuintunsignedint
uintx,y;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//共阴极数码管编码
voiddisplay(uchar,uchar,uchar,uchar);//声明子函数斗谨
voiddelay(int);//声明子函数
voidmain()
{
while(1)
{
display(1,2,3,4);//主程序始终调用数码管显示子程序
}
}
voiddisplay(uchara,ucharb,ucharc,uchard)
{
P2=0xef;
P0=table[a];//给第一个数码管送"a"
delay(1);//延时1ms
P2=0xdf;
P0=table[b];//给第二个数码管送"b"
delay(1);//延时1ms
P2=0xbf;
P0=table[c];//给第三个数码管送"c"
delay(1);//延时1ms
P2=0x7f;空亩基
P0=table[d];//给第三个数码管送"d"
delay(1);//延时1ms
}
voiddelay(uintz)//延时子函数
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
(1)数码管显示b单片机扩展阅读
led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法耐昌不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
2. 单片机数码管显示的数值编码
昏,你学过数字电路么?关于7段数码管的部分(其实我们用的是8段),数码管中有8断二极管,从最上到小数点,分别是a,b,c,d,e,f,g,h(这个是小数点),8个数码管统一接在地线或者高电平,所以只要看二极管的那一面接为啥,这也就是什么共阳极和共阴极了,你可以手工自己面一下码,比如说你上面所说的共阳极吧,如果想要显示1的话,是不是b段,c段为低电平呀,其他为高呀,对应的编码是不是1111
1001.(最低位是a,次位为b,后c,。。。。)
,那不是0xf9么?。。。。
3. 单片机数码管显示的原理(CA CC) 字型的显示 动态显示的原理 大概的说下 采纳的再加分
数码管,举个例子,8段共阴极数码管。其实它的结构很简单,就是8个LED发光二极管,这8个LED发光二极管的正极就是a b c d e f g dp(小数点)这8个,负极就8个LED连接在一起。
单片机I/O口比如P0什么的不是有8个?正好连接到8个发光二极管的正极。然后把数码管负极接地。当你要显示数字,比如2时,2对应a b d e g这几个字母对应的LED亮,所以只要单片机接到abdeg的IO口置高电平就行了,正高负低,LED不就亮了?对应的LED亮了,不就显示对应的数字了?
至于动态显示,一般是8个数码管吧?段的接口不变,还是P0口,而它们的负极呢,不再接地了,而是接到P2口(P1什么的都行)。P2口来控制哪个数码管亮。只有当P2口为低电平的时候,LED才有可能导通并亮。
比如你要显示12345678,你可以先把P0口的段码调到1,也就是bc亮,P1.1、P1.2置高电平,这样就是显示1了,然后就是位选了,1是显示在第一位,所以你应该把P2.0置低电平,其他位置高电平,这样,第一个数码管就显示1了。显示2,则把P2.1拉低,其他拉高。这样弄一个循环,数码管不就从1依次显示到8了?
不过由于单片机执行指令很快,如果直接12345678这样显示,由于太快,会导致数码管很暗,所以,你可以在切换数码管的时候,加上一点点的延时,不过不能太长,不然就会闪了。当然你也可以把显示程序放到中断里,比如没过10ms就显示一次,这样会更好一点。
懂了吗?
4. 51单片机怎样用键盘控制数码管显示
51单片机怎样用键盘控制数码管显示的方法。
如下参考:
1.首先,编写代码并点亮数码管。