‘壹’ 我用lpc900系列的单片机,怎么用一组如八位p0口,加2个位选,来控制两个共阳极的七段led,是从00-90来回显
p0做数据用,cs_1和cs_2做led的选择。共阳的就是输出低电平有效。然后,在程序里边做个计数器count,count从00-->90-->00循环加,每加到一个数,分别用count/10和count%10得到个位和十位的数字,比如count=90,那么个位就是0,十位就是9。然后就是分别先后把cs_1=0,p0的值为要显示的数的段码,然后cs_1=1;接着cs_2=0,p0的值为要显示的数的段码,然后cs_2=1;计数周期和两个数码管显示的时间间隔可以添加适当的延时。大概思路就是这样
‘贰’ 共阳极数码管显示0~9对应的段码
共阳极数码管显示0~9对应的段码。
#include
#include
#defineucharunsignedchar//宏定义以后用uchar替代unsignedchar
#defineuintunsignedint//宏定义作用同上ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//数码管0-9的段码值//延时
voidDelayMS(uintx)//延时函数
{
uchart;//定义变量数值范围0-255
while(x--)for(t=0;t<120;t++);
}//主程序
voidmain()//主函数
{uchari=0;//定义变量i并且i=0P0=0x00;//P0口=0x00P0口全部为低电平
while(1)//主循环
{
P0=~DSY_CODE[i];//P0=取反的数码管段码值
i=(i+1)%10;//i=i自加1个位的数
DelayMS(300);//延时}}/
‘叁’ 单片机汇编:LED数码管从0---9之间,依次每按一下亮一位数字,并循环!
START: MOV P3, #0FFH MOV DPTR, #SEGPT MOV A, #0 LOOP: MOVC A, @A+DPTR MOV P1, A KEY: JB P3.2, KEY INC A CJNE A, #10, LOOP MOV A, #0 SJMP LOOP SEGPT: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳极 ABCDEFGH对应x.01234567