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,这 应该是共阴呀, ...