单片机 两位数码管显示,使用两位数码管显示器,循环显示两位数0-99

作者&投稿:阚法 (若有异议请与网页底部的电邮联系)
单片机两位数码管显示两位数~

数码管是直接驱动的,还是动态扫描的?
数码管是共阴极还是共阳极的?
数码管控制数据准备从哪2个口输出?
按键对应哪个口输入?

1、新建项目,做好准备。

2、数码管段选表。

3、延时函数。

4、uchar i; 变量i;wk = 1;打开位选,P0 = 0xf7;1111 0111第4位数码管显示,wk = 0;关闭位选。

5、while(1) //死循环效果{} 。

6、dk = 1;//打开段选,P0 = leddata[i];,dk = 0;//关闭段选,delay(100);//延时效果。

7、选择效果,限制i值的循环范围。

;***********
共阴动态显示 P0接段控,P1接位控,P3接按键输入 ;P0口接键盘扫描接口,P1口接数码管接口段控,P2口低四位接位控
;****************
DIR :MOV R0,#00H
MOV DPTR,#TAB
MOV R4,#100
DIR4:MOV R3,#0feH
MOV R2,,02H
DIR1:CJNE R2,#01,DIR2
MOV A,R0
MOV B,#0AH
DIV AB
SJMP DIR3
DIR2: MOV A,B
DIR3: MOVC A,@A+DPTR
MOV P1,A;段控
MOV P2,R3;位控
LCALL DEL2MS
MOV A,R3
RL A
MOV R3,A;循环显示
DJNZ R2,DIR1
INC R0
DJNZ R4,DIR4
RET

DEL2MS:MOV R6,#5
DEL: MOV R7,#200
DEL1:DJNZ R7,DEL1
DJNZ R6,DEL
RET

TAB:DB 0C0H,0F9H,0A4H,0B0H,099H
DB 092H,082H,0F8H,080H,090H,0CEH,086H

共阴还是共阳的

这个分用串口还是并口实现


桐柏县15714733500: 单片机两位数码管显示两位数 -
寇法清胃: 1. 数码管是直接驱动的,还是动态扫描的? 2. 数码管是共阴极还是共阳极的?3. 数码管控制数据准备从哪2个口输出? 4. 按键对应哪个口输入?

桐柏县15714733500: 单片机矩阵键盘输入两位数,在数码管中显示出来 -
寇法清胃: 按銉扫描给一个不需要的初值,如 key=16,这个值在数码管上显示不出来 然后判断key是否等于16即可 另外还要判断 i是否为1,为1则清0 以下是我的5位数获取程序 c=1; while(c {keyval=keyscan(); if(keyval {switch(c) { case 1:b1=keyval; break; ...

桐柏县15714733500: 单片机的数码管显示两位数的c出现了问题? -
寇法清胃: s1=0只是让 p0.0口为0 P0=0xfe 也是让 P0.0口为0,但还让别的口为高.你s1=0时,要让s2等等别的口为高才行.要是同时有两个或多个为0就不行了.

桐柏县15714733500: 单片机串口控制数码管显示两位数字时显示不对 -
寇法清胃: 如果数码管驱动程序是正确的,那么可能的原因有: 1.如果你驱动数码管的程序是是在main函数中调用的,请修改程序使之以中断的方式实现,否则需要优化程序使程序不能存在大延迟. 2.如果是定时器中断实现数码管扫描的,请将该定时器中断优先级置为较高,并且增大定时器初值以提高定时器溢出率.如果是定时器不是自动装初值的,装初值的语句要放到最后. 3.中断实现数码管扫描有两中,一种是每次中断只点亮一只数码管,刷新率低.一种是每次中断都扫描一遍数码管.强烈推荐第二种方法.

桐柏县15714733500: 单片机的矩阵按键怎么输入两位数,例如,先输入2,数码管显示2,再输入3,数码管显示23,有类似程序更好 -
寇法清胃: 我的思路是,把你输入的数字先保存在一个数组里,然后实时的显示该数组的内容即可.#define MAX_NUM 2 uchar num_pos = 0;//输入数字的个数计数.char num_buff[MAX_NUM] = {-1,-1}; void DisplayNum() { for(i = 0; i < num_pos; i++) { //...

桐柏县15714733500: 求单片机程序:把01~32输入单片机,按下独立按键,双位数码管显示一个双位数,谢谢
寇法清胃: 可以从00加到99,719913261 这个可以写.

桐柏县15714733500: 51单片机里用一个按键让一个两位数加一并显示在两个数码管上,但是在按着按键不放时第一个数码管总是会 -
寇法清胃: 你的数码管显示应该是扫描方式,所以按键按下时,单片机不能直行显示扫描了,只会亮一个.你可以在定时器中显示数码管.

桐柏县15714733500: 单片机80c51设计一个两位计数器, -
寇法清胃: 使用计数器,两位数码管的显示有软件编写:把计数器得到的数进行分位处理——找出相应字形——显示——(返回循环)

桐柏县15714733500: 我用单片机控制两个数目管显示两个数,数码管为公阴数码管,为什么显示老是感觉两个数字互相串扰着显示? -
寇法清胃: 需要增加消隐和延时:while(1) { dula=1; P0=table[1]; dula=0; wela=1; P0=0xfe; wela=0; delayms(5); //显示5mswela=1; P0=0xff; wela=0; //需要关闭显示器. dula=1; P0=table[3]; dula=0;//再显示下一位. wela=1; P0=0xfd; wela=0; delayms(5); //显示5mswela=1; P0=0xff; wela=0; //关闭显示器 }

桐柏县15714733500: 用单片机c51编出程序,显示两位学号 -
寇法清胃: 如果是静态数码管,那么可以通过锁存器来分别控制数码管显示,如果是动态的,那么只能扫描控制两位及两位以上的数码管.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网