单片机中数码管程序p2 0xef p0 table

2021-01-13 06:26:56 字数 5951 阅读 8180

1楼:匿名用户

这个 是数码管扫描一部分,

p2=0xef;\\开通这一位的数码管,让它把数字显示在p2_7的这位上

p0=table[a];\\table是一个数组,里面应该是数码管的段码,这样就会就能在上面开通那位显示具体的数据。‘a'

delay(1);\\延时作用,因为人眼对光的反应没有单片机运算那么快,如果不延时就会让眼睛看到数码多显。

2楼:匿名用户

p2有八个引脚啊,p2=oxef是11101111,对应p2.0-p2.7的电平;同理p0口对应赋值为table[a]这个数组中第a+1个元素的值;delay(1)调用延时函数,1要看delay函数中具体指的时间长短单位

如何利用单片机让4位数码管显示?

3楼:沈伟栋

程序如下(用的是stc89c52芯片):

#include//52系列单片机头文件

#defineucharunsignedchar

#defineuintunsignedint

uintx,y;

ucharcodetable=;//共阴极数码管编码

voiddisplay(uchar,uchar,uchar,uchar);//声明子函数

voiddelay(int);//声明子函数

voidmain()

}voiddisplay(uchara,ucharb,ucharc,uchard)

voiddelay(uintz)//延时子函数

扩展资料

led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。

位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据led的接法不同分为共阴和共阳两类,了解led的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

4楼:匿名用户

;晶振:12mhz

;p2.0、p2.1、p2.2、p2.3接共阳数码管的选通端,p0口接数据输出端

cs0 bitp2.0 ;个位位选

cs1 bitp2.1 ;十位位选

cs2 bitp2.2 ;百位位选

cs3 bitp2.3 ;千位位选

dsw equ30h ;位选计数

dsb0 equ31h ;显示缓冲单元个位dsb1 equ32h ;显示缓冲单元十位dsb2 equ33h ;显示缓冲单元百位dsb3 equ34h ;显示缓冲单元千位***0000h

ljmpmain

***0030h

movdsb0,#04h ;显缓="1234"

movdsb1,#03h

movdsb2,#02h

movdsb3,#01h

movtmod,#01h ;方式1定时

movth0,#0f0h ;4ms定时

movtl0,#60h

setbtr0

mloop: jnbtf0,$ ;4ms到?

clrtf0 ;清定时标志

movth0,#0f0h ;4ms定时重设movtl0,#60h

lcalldisp

ajmpmloop

;====4位数码管扫描子程序====

disp: orlp2,#1fh ;关闭数码显示器mova,dsw ;根据扫描循环变量转移anla,#07h

rla

movdptr,#dstab

jmp@a+dptr

dstab: ajmpdis0

ajmpdis1

ajmpdis2

ajmpdis3

ajmpdis0 ;冗余

ajmpdis0

ajmpdis0

ajmpdis0

dis0: mova,dsb0 ;扫描个位数码管anla,#0fh

movdptr,#led7 ;查显缓个位值的七段码表movca,@a+dptr

movp0,a ;七段码送p0口

clrcs0 ;点亮个位数码管

movdsw,#01h ;扫描指针指向下十位retdis1: mova,dsb1 ;扫描十位数码管anla,#0fh

movdptr,#led7

movca,@a+dptr

movp0,a

clrcs1

movdsw,#02h

retdis2: mova,dsb2 ;扫描百位数码管anla,#0fh

movdptr,#led7

movca,@a+dptr

movp0,a

clrcs2

movdsw,#03h

retdis3: mova,dsb3 ;扫描千位数码管anla,#0fh

movdptr,#led7

movca,@a+dptr

movp0,a

clrcs3

movdsw,#00h

ret;====led七段共阳段码表====led7: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

db80h,90h,88h,83h,86h,0a1h,86h,8eh

end希望可以帮助你。

5楼:匿名用户

利用动态扫描让四位数码管稳定的显示1234。

3.2子情境目标:

(1)掌握单片机控制四位数码管的动态扫描技术,包括程序设计和电

路设计,本任务的效果是让四位数码管稳定的显示1234。

(2)用proteus进行电路设计和实时**

3.3知识点链接

(1)数码管动态扫描(动态扫描的定义以及与静态显示的区别)

动态显示的特点是将所有位数码管的段选线s一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。

(2)总线的应用

元器件与总线的连线

p0口的接线采用总线方式,详细如图5-17所示。

① 选择总线按钮

② 绘制总线:与普通电线的绘制方法一样,选择合适的起点、终点单击。

如果终点在空白处,左键双击结束连线。

画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。在画斜线时,需要关闭线路自动路径功能才好绘制。

proteus的线路自动路径功能简称war,当选中两个连接点后,war将选择一个合适的路径连线。war可通过使用标准工具栏里的“war”命令按钮来关闭或打开,也可以在菜单栏的“tools”下找到这个图标。

③ 给与总线连接的导线贴标签partlabels

与p0口相连的线标签名依次为p00—p06,本电路中的p0口的上拉电阻通过总线与p0口相连,数码管也是通过总线与p0口相连,这些都需要标注,以表明正确的电气连接。单击绘图工具栏中的导线标签按钮,使之处于选中状态。将鼠标置于图形编辑窗口的欲标标签的导线上,跟着鼠标的指针就会出现一个“×”号,表明找到了可以标注的导线,单击鼠标左键,弹出编辑导线标签窗口,如图5-16所示。

在“string”栏中,输入标签名称(如p00),单击“ok”按钮,结束对该导线的标签标定。同理,可以标注其它导线的标签,如图5-16所示。

注意,在标定导线标签的过程中,相互接通的导线必须标注相同的标签名。

图5-16编辑导线标签窗口

3.4任务步骤

3.4.1步骤一:proteus电路设计,单片机控制四位共阴极数码管动态扫描显示的原理图如图5-17所示。

图5-17四位共阴极数码管动态扫描显示的原理图

1、选取元器件

①单片机:at89c52

②带公共端的排阻:respack-8

③四位共阴极数码管:7seg-mpx4-cc

2、放置元器件、放置电源和地、连线、元器件属性设置

数码管动态扫描显示的原理图如图5-17所示,整个电路设计操作都在isis平台中进行。

(1)带公共端的排阻(respack-8)如图5-18所示,在本电路中作为p0的

上拉电阻,在如图5-19所示***ponentvalue一栏中可更改阻值,例如本例中将阻值更改为200欧姆。

图5-18排阻图5-19排阻属性框

至此,我们便完成了整个电路图的绘制。

3.4.2步骤二:源程序设计与目标**文件生成

(1)程序流程图

图5-20数码管动态扫描的流程图

(2)源程序设计

#include//52系列单片机头文件

#defineucharunsignedchar

#defineuintunsignedint

uintx,y;

ucharcodetable=;//共阴极数码管编码

voiddisplay(uchar,uchar,uchar,uchar);//声明子函数

voiddelay(int);//声明子函数

voidmain()

}voiddisplay(uchara,ucharb,ucharc,uchard)

voiddelay(uintz)//延时子函数

6楼:卓磨

如何利用单线机长四位数马力显示。

7楼:匿名用户

呵呵,这位挺大方。我来给看一下。

用c语言还是汇编?

步行者===电子单片机团

8楼:做而论道

下列程序经过实验,可以满足题目要求.

***0000h

ljmpmain

***0030h

main:

mov70h,#04h

mov71h,#03h

mov72h,#02h

mov73h,#01h

;-------------------------------m_loop:

lcalldisp

ajmpm_loop

;-------------------------------disp:

movdptr,#d_tab

movr2,#01h

movr0,#70h

d_loop:

mova,@r0

movca,@a+dptr

movp2,#0;消隐.

movp0,a;输出段码.

movp2,r2;输出位码.

lcalldl_1ms

mova,r2

rla

movr2,a

incr0

cjner0,#74h,d_loopretd_tab:

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

db80h,90h,88h,83h,86h,0a1h,86h,8eh

;-------------------------------dl_1ms:

djnzr7,$

djnzr7,$

retend

;**********====

实验是在某个型号的实验板上进行。

该实验板上共有8位数码显示器,是由两块四位一体的数码管构成。

低四位数码管的电路如下图所示。元件引脚都已经标出。

89C52单片机怎么连接让P3口控制数码管

1楼 匿名用户 只想用p3口的话,必须另加控制元件。 1一种方法是用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。 2另一方法是,用p3口的4位接一个bcd译码器控制数码管的段码,再p3口的3位接一个3 8译码器来控制数码管的位进行动态扫描。 3再就是可以用p3口的两根串行线接串并转换ic,...

为什么单片机数码管的动态显示要有循环次数为

1楼 匿名用户 程序呢,估计是有8个数码管 一次要扫完8个数码管,若对这8 个数码管反复进行数十次上百次扫描,就其可使持续显示数s,若无限循环,则一直维持显示,但实际在扫描的间隔,中间还有大量的闲置时间,可以进行其它工作,例如获得新的计算结果,来更新显示内容 2楼 匿名用户 为什么单片机数码管的动态...

为什么我单片机数码管段码是共阴极的而位码是共阳极的

1楼 位码的数字和电路是有直接关系的。 位码没有共阴极和共阳极之分,而只是数码管的内部结构的不同。 0x3f 这些是共阴极的数码管的段码表。 0xc0 是共阳极数码管的段码表。 2楼 匿名用户 位码是0xfe 0xfd 0xfb 0xf7 0xef 0xdf 0xbf 0x7f,这 应该是共阴呀, ...