导航:首页 > 操作系统 > 单片机8位数码管

单片机8位数码管

发布时间:2022-08-04 14:43:45

单片机8位数码管显示

给你个程序,可是你的数码管的位选是什么?用的锁存器来选定还是三极管?根据你的意思是只要八个数码管都亮,不需要选择哪个亮哪个灭.

既然是共阳接法,你的阴极应该接的是P2口了,给P2口的八个脚低电平,那么你看这个这个程序吧.

#incluede<reg52.h>//我板子上用的是AT89C52,这是头文件,其实你这个貌似不需要加头文件,头文件里的内容是定义了一些东西,可以包含进来直接用,

voidmain()

{

P2=0xf9;

}

我的是八个三极管来选择亮哪个数码管,也是共阳接法.p1口位选(选择是哪个数码管亮),P0口段选(操作P0口来实现是显示0~F),请看我的板子所配的程序.

#inlcude<reg52.h>

voidmain()

{

P1=0;//选种所有的数码管,也就是八个数码管都亮.

P0=0xf9;//让被选种的数码管都亮"1".

}

看我的截图,我把三个图截在一起,第一个图说的是共阳数码管的接法,.第二个图说的是数码管的段是如何接的,第三个图是我板子上其中四个三极管控制四数码管的选亮与否,也就是位选.

数码管的段说的是数码管其实是有8段LED接在一起,因此就有所谓的共阳和共阴.

❷ 51单片机控制8个数码管并显示1-8

数码管段选连接到单片机P0口,位选连接到P2口

ORG0000h

MAIN:

CALLDISPLAY

AJMPMAIN

DISPLAY:

MOVR0,#0

MOVR1,#0x01

MOVDPTR,#TAB

LOOP:

INCR0

MOVA,R0

MOVCA,@A+DPTR

MOVP0,#0;消隐

MOVP0,A;送段码

CALLDELAY

MOVA,R1;送位码

RLA;移位

MOVP2,A

MOVR1,A

CALLDELAY

CJNER0,#8,LOOP;判断8次是否循环完成

RET

DELAY:

MOVR6,#25

DD:MOVR7,#50

DJNZR7,$

DJNZR6,DD

RET

TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

❸ 51单片机八位数码管原理图

下面三个图为开发板的原理图,此开发板用了两个74HC573寄存器,可减少单片机io口的使用.锁存器U8用来控制位选,即控制哪个数码管.U9控制段选,

❹ 单片机驱动8位数码管

设位码接P1;
uchar buf[8] = {0};
void display( ){ //1ms运行一次
static uchar w = 0;
P1 = 0;
P0 = an[buf[w]];
P1 = (1 << w);
w = (w + 1) % 8; //循环+1
}

❺ 单片机 按键控制8位数码管显示问题

关于数码管的显示,是显示完一个位的是数字后,在显示下一个位时要先把上一个位显示彻底关闭掉,通常可以是把全部数码管位全部显示为空的状态,谈后在开下一个位的显示(有延时),这样在开下一个位的锁存时上一个位的数据就不会跑到该位显示,不然会在下一位显示时会与上一个位的数字出现重影现象。。。
还有对于数码管的显示,最好是一次性显示完全部数码管,还没有得位就显示0ff(要记得初始化你的数组)。我个人不建议你这种显示按位数变化方式。。。
for(i=0;i<j;i=i+1)
//每次都显示完8个数码管比较好。。。
{
/*
在此增加把所有数码管显示为0FF状态,全部位都打开显示
*/
display=weima_table[i];
//数码管需要显示的位
weima_latch=1;
//锁存器(位码)打开
weima_latch=0;
//锁存器(位码)关闭
display=cunchudisplay[i];
//数码管需要显示的段
anma_latch=1;
//锁存器(段码)打开
anma_latch=0;
//锁存器(段码)关闭
Delay(100);
}
判断归零一个变量,最好紧跟在修改该值的后面,不用放在主循环里每次循环都要判断,虽然你那没多大问题但可读性不够好。。。
j=j+1;
if(j==8)
{j=0;}

❻ 单片机8位数码管依次显示0到7,要求用c语言实现

假设8个数码管公共端均接地,同时显示0-7
#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,0x82,0xf8,0x80,0x90,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)%10;/*显示0-9*/
DelayMS(200);
}
}
下面程序从左到右显示
#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);
}
}
}

❼ 关于单片机驱动八只数码管

共阳管,"0"对应0(A)0(B)0(C)0(D)0(E)0(F)1(G)1(DIGHT),注意你的接线顺序

注意npn管驱动

0x80左移为0x100,或者高位截断的话就是0x00,绝不是0x01,是左移,不是循环左移

❽ 51单片机显示八位数码管的C语言程序

1、最开始,我们先打开keil。

❾ 51单片机八位数码管,

以上设计是没有采用时钟芯片的,时间来源才用的是单片机定时自动重载的方式计算实现。如果加上时钟芯片的话,可以实现断电继续走时,现在常用的方案就是这样。

关于单片机程序方面,难者不会,会者不难,在此寥寥几句话也说不清楚。

有问题可以继续追加

阅读全文

与单片机8位数码管相关的资料

热点内容
为什么要编译源代码 浏览:819
输入法freetype交叉编译 浏览:436
电阻单片机代号 浏览:469
来画app怎么添加对话框 浏览:318
python序列化分布式 浏览:107
域名服务器是什么形式 浏览:681
rsa加密解密速度快 浏览:924
mac电脑如何单片机开发 浏览:547
纪念日app怎么用小插件 浏览:331
如何更改安卓手机所在地区 浏览:217
程序员负债120万 浏览:80
阶层pdf 浏览:380
linuxgit安装配置 浏览:319
用源码搭建app要改什么 浏览:42
密码学教程pdf 浏览:3
亚马逊做的加密货币 浏览:81
怎么搭建云播服务器 浏览:867
网站客服机器人源码 浏览:317
2021程序员的出路 浏览:547
发行与承销pdf 浏览:945