导航:首页 > 操作系统 > 单片机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位数码管相关的资料

热点内容
做什么app赚钱 浏览:83
博途编译失败联系客户支持部门 浏览:926
金蝶旗舰版编译 浏览:50
万象服务器断电后启动不了怎么办 浏览:356
我的世界苹果版的2b2t服务器地址咋查 浏览:95
xlsx转换pdf 浏览:98
3dmax挤出命令英语 浏览:903
靶心率的定义和算法 浏览:514
3d模术师app哪里下载 浏览:474
php中文api文档 浏览:458
安卓设计怎么加入输入框 浏览:185
主根服务器什么时候开始 浏览:738
奇门遁甲完整版pdf 浏览:904
app软件怎么用的 浏览:802
电子书pdf购买 浏览:194
浪潮服务器如何做系统 浏览:112
冒险岛img格式加密 浏览:598
我的世界手游如何复制命令 浏览:660
天刀自动弹琴脚本源码 浏览:971
打开其它app微信怎么收不到 浏览:447