怎么用单片机实现6位led数码管显示?

如题所述

用仿真实现,采用6位一体的共阴数码管,P0口输出段码,P2口输出位码。仿真图如下:

程序如下

#include <reg51.h>

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,//0~9段码

0x77,0x7c,0x39,0x5e,0x79,0x71,};//共阴数码管A~F段码表

uchar buf[]={0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};//显示字母

void delay()//延时子程序

{

uint j;

for(j=300;j>0;j--);

}

void display()//显示子程序

{

uchar i,litbit=0xfe;

for(i=0;i<6;i++)

{

P2=litbit;//输出位码

P0=table[buf[i]];//输出段码

litbit=_crol_(litbit,1);

delay();//延时

}

}

void main()

{

while(1)

{

display();

}

}

温馨提示:内容为网友见解,仅供参考
无其他回答

怎么用单片机实现6位led数码管显示?
0x77,0x7c,0x39,0x5e,0x79,0x71,};\/\/共阴数码管A~F段码表 uchar buf[]={0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};\/\/显示字母 void delay()\/\/延时子程序 { uint j;for(j=300;j>0;j--);} void display()\/\/显示子程序 { uchar i,litbit=0xfe;for(i=0;i<6;i++){ P2=lit...

6位数码管动态显示程序(数码管动态显示程序)
构建一个使用LED数码管显示动态数字的程序,需要遵循以下步骤。首先,选择硬件,确保LED数码管与单片机的P0口相连接,以便控制各个段码。接下来,P2口需要连接一个译码器,负责产生位码,采用扫描方式逐个显示数字。此方法通过在一定时间间隔内切换各个位码,实现动态显示效果。每秒一次的扫描频率是基本要求,...

怎样用51单片机实现累加计时和倒计时,并用六个共阴极数码管显示出来。用...
显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。在本设计中,24小时时钟显示、秒表的设计和显示都是依靠单片机中的定时器完成。使用定时器T0产生1s的中断,在中断...

单片机数码管动态显示6个数码管显示012345问题
sbit wela=P2^7; \/\/ 申明U2锁存器的锁存端 uchar code table[]={ \/\/共阴极数码管编码 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; \/\/位选数据,6位数码管的位选...

用51单片机C语言编写程序实现6位共阴极数码管循环显示0123456789ABCDEF...
\/\/数码管段选 \/* 8 9a b c def*\/code uchar wen[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};\/\/数码管位选uchar huancun[] = {0x00,0x00,0x00,0x00,0x00,0x00};\/\/数码管段选缓存sbit duan = P2^6;\/\/段选sbit wei = P2^7;\/\/位选void delay(uchar x)\/\/延时函数...

51单片机共阴数码管利用静态显示,让六个数码管显示1~6,程序怎么写?
首先把位选打开,送入位选数据后,关闭锁存器,实现锁存,进入循环,随之打开段选锁存器,送入段选数据后,再次关闭段选。 接下来,这个延时操作对于实际看到数码管的显示效果特别重要,因为程序在段选后之后,会马上消隐,显示的时间之后几个微秒,这显然不太合理,需要在关闭段选后加上延时,这样一来,才会让每位数码管亮...

设计单片机控制6位数码管动态显示电路,并编程实现让数码管同时显示
0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};void DelayMS(uint x){ uchar t;while(x--)for(t=120;t>0;t--);}void main(){ uchar i=0;P0=0x00;while(1){ P0=~DSY_CODE[i];i=(i+1)%16;\/*显示0-f*\/DelayMS(400);}} ...

利用单片机控制6个共阳数码管,采用动态显示方式稳定显示自己的生日_百 ...
3]=0; disdat[4]=9; disdat[5]=9; }void t1isr() interrupt 3 \/\/显示{ TH1=0xec; TL1=0x78; switch(scanled) { case 0: P2=0x01; P0=~ledtab[disdat[5]]; break; case 1: P2=0x02; P0=~ledtab[disdat[4]]; break; case 2: P2=0x04;...

51单片机电子钟六位数码管显示整点提醒仿真设计( proteus仿真+程序+...
1. 开机控制显示按键,时\/分切换按键,加1按键。2. 每到整点,蜂鸣器会发出提示音。3. 通过六位一体数码管显示时、分、秒,开机时显示为12:00:00。设计使用12MHz频率的51单片机。硬件电路图由图纸绘制,程序在keil 4\/keil 5中编写,并在proteus上进行仿真。设计遵循S0047编号。51单片机型号(如...

如何用单片机AT89C51控制六位数码管,可以显示出不同的六个数字(123456...
void t0isr() interrupt 1 { TH0=0xf4;TL0=0x48;switch(number){ case 0:P2=0x01;P0=distab[1];break;case 1:P2=0x02;P0=distab[2];break;case 2:P2=0x04;P0=distab[3];break;case 3:P2=0x08;P0=distab[4];break;case 4:P2=0x10;P0=distab[5];break;case 5:P2=0x20;...

相似回答
大家正在搜