怎样用一个单片机控制8个数码管

~ 你要控制的是一个数码管8个段码,还是8个8段数码管?

如果是一个8段数码管的8个段码,直接连接8个I/O到对应的8个段的控制端即可,通过I/O输出高低电平控制对应的段码。

如果是8个数码管,则,每个数码管的8个断码控制线并联总线到I/O,作为数据控制。每个数码管的使能端口单独控制,或者使用进位模式,做选择控制哪一个数码管显示。

动态扫描,如下例,P0送段码,P2送位码,共阳极。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};

void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=200;i>0;i--);
}
}

void main()
{
uchar i,k=0x80;
while(1)
{
for(i=8;i>0;i--)
{
P2=0xff;
k=_crol_(k,1);
P0=DSY_CODE[8-i];
P2=k;
DelayMS(3);
}
}
}

写程序就可以驱动

不外接芯片的话,用8个口控制显示哪一位,8个口控制显示哪几段

单片机 按键控制8位数码管显示问题
答:i];//数码管需要显示的段 duanma_latch=1;//锁存器(段码)打开 duanma_latch=0;//锁存器(段码)关闭 Delay(100);} 判断归零一个变量,最好紧跟在修改该值的后面,不用放在主循环里每次循环都要判断,虽然你那没多大问题但可读性不够好。。。j=j+1;if(j==8){j=0;} ...

单片机8位数码管显示
答:inlcude<reg52.h> void main(){ P1=0;//选种所有的数码管,也就是八个数码管都亮.P0=0xf9;//让被选种的数码管都亮"1".} 看我的截图,我把三个图截在一起,第一个图说的是共阳数码管的接法,.第二个图说的是数码管的段是如何接的,第三个图是我板子上其中四个三极管控制四数码管的选...

如何用单片机控制8段共阳数码管进行动态显示!!!
答:段还是位噢位的就参考这个6位的 org 0000h start:mov r0,#00h mov r2,#20h l1: mov a,#00h mov dptr,#8002h movx @dptr,a l2:mov a,r0 mov dptr,#tab movc a,@a+dptr mov dptr,#8004h movx @dptr,a mov dptr,#8002h mov a,r2 movx @dptr,a acall l3 inc r0 mov a...

如何使单片机中,按一个键,数码管显示8个一样的数字,主芯片为AT89c51,求...
答:这种入门级的小程序,建议自己摆弄摆弄 给你点建议吧:首先能显示一个数字 能显示八个数字 按键的检测,用轮询的方法,就是一直循环读取一个gpio的状态 把2,3组合在一起,当检测到gpio的状态有变化时(就是高低电平的转换),点亮八个数码管 ...

89C52单片机怎么点亮8个数码管?下面代码为什么就亮了3个
答:0x06, //"1"0x5B, //"2"0x4F, //"3"0x66, //"4"0x6D, //"5"0x7D, //"6"0x07, //"7"0x7F, //"8"0x6F, //"9"0x77, //"A"0x7C, //"B"0x39, //"C"0x5E, //"D"0x79, //"E"0x71, //"F"0x76, //"H"0x38, //"L"0x37...

用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒...
答:给你一份我自己写的,利用四位数码管显示模拟时钟的程序吧,供你研究 另外,再给你一个一位数码管的,是你要求的那种 这两个都是利用单片机的定时器中断来产生秒信号的 下面这个是 四位数码管的,最下边的是一位数码管的,端口不一样的话,自己改下 /***/ include<reg51.h> sbit p20=P3^7...

单片机上8个数码管这样是让他循环显示,怎样让它静态显示呢?
答:/**52单片机,12MHz晶振,8位共阴数码管,P0口段选,P2口低电平位选,P20最高位,P27最低位**/ include <reg52.h> define uchar unsigned char define uint unsigned int define TRUE1 define FALSE0 define th00xfe define tl00x0c//500us at 12MHz(定时器工作模式1 状态)define DisTimeAt500...

用C51系列的单片机控制 在8位数码管动态显示秒表 要c语言版程序 谢谢...
答:显示程序和硬件关联,如驱动方式、位数等,所以没有统一的程序,假定动态显示,大概思路如下:1、设置定时中断,定时中断时间是5毫秒;2、中断程序完成秒计时,秒数发生变化时,要将秒数对应的显示码放到显示缓冲区;3、每次中断循环显示一位数码管;下面是我曾经写的一个显示程序(显示缓冲区G_Disp_Buf...

运用51单片机实现2位8段LED数码管的动态数字显示,写出汇编程序(C程序...
答:P2=TAB[1]; //赋值 P3_0=0; //开第一位显示 FOR(I=0;I<200:I++);//延时 P3_0=1; //关第一位显示 P2=TAB[2];P3_1=0; //开第二位显示 FOR(I=0;I<200:I++);P3_1=1;这个程序就是让两个数码管分别显示1和2,注意程序开头包含头文件regx52.h,如果是包含reg52...

at89c51单片机驱动8个数码管滚动显示数字,要求8个数码管同时显示。我...
答:题目的要求是什么?要求8个数码管同时显示。让数码管依次显示0~7这8个数字,8个数码管滚动显示数字,是先显示1秒钟01234567,之后再显示70123456,1秒钟之后,再显示67012345,...吗?楼主的程序,现在是显示出来什么了?=== 电路图有明显错误。看程序中的段码,应该使用共阳的数码管,即,数码管的...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网