我们做一个课程设计需要用到四位数码管显示。在网上找到四位数码管的引脚图。却不知道如何使用。是需要编程来驱动四位数码管显示么?可是我们没学过编这个程序。请大师讲解~~使用方法
使用LED时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段. 具体看图。 根据你要显示的东西,需要对数码管进行编码,主要是设置 位选(选中哪个数码管显示) 和 段选(数码管显示的具体内容)。 数码管的亮暗就是 发光二极管 导通与截止的过程,参照图。 另外数码管有静态显示和动态显示2种,4位的话一般都是采用动态显示。 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。 下面给出一个程序你参考下: /*利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出“HELLO”。到此保持住。(设晶振12MHZ)*/ #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar code table[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x89,0x86,0xc7,0xc0,0xff;//0~9、hello uchar temp,t0,t1,aa,bb,cc,bai,shi,ge,flag,flag1; uint shu; void init(); void display(uchar,uchar,uchar,uchar,uchar,uchar); void delay(uint z) uint t1,y; for(t1=z;t1>0;t1--) for(y=110;y>0;y--); void main() init(); while(1) if(flag1!=1) display(7,6,5,bai,shi,ge); //计数 else display(10,11,12,12,13,14); //保持 hello void init() shu=432; temp=0xfe; P1=temp; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0++; if(flag!=1)//说明计数没有结束 if(t0==10) t0=0; temp=_crol_(temp,1); P1=temp; else if(t0%10==0)//每500ms闪一次500*10(正好闪3次) P1=~P1; if(t0==60)//3miao 后关闭灯 TR0=0; P1=0xff; flag1=1; void timer1() interrupt 3 TH1=(65536-50000)/256; TL1=(65536-50000)%256; t1++; if(t1==2) t1=0; shu--; bai=shu/100; shi=shu%100/10; ge=shu%10; if(shu==398) TR0=0;//定时器关闭 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1;//重启定时器 flag=1;//标志位定义 t0=0;//t0清零 P1=0xff;//关闭流水灯 TR1=0;//定时器关闭 void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge) //最高位显7 dula=1; P0=table[aa]; dula=0; P0=0x00; wela=1; P0=0x01; wela=0; delay(1); //第二位显6 dula=1; P0=table[bb]; dula=0; P0=0x00; wela=1; P0=0x02; wela=0; delay(1); //第三位显5 dula=1; P0=table[cc]; dula=0; P0=0x00; wela=1; P0=0x04; wela=0; delay(1); dula=1; P0=table[bai]; dula=0; P0=0x00; wela=1; P0=0x08; wela=0; delay(1); dula=1; P0=table[shi]; dula=0; P0=0x00; wela=1; P0=0x10; wela=0; delay(1); dula=1; P0=table[ge]; dula=0; P0=0x00; wela=1; P0=0x20; wela=0; delay(1);