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

作者&投稿:容朗 (若有异议请与网页底部的电邮联系)
~

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

ORG 0000h

MAIN:

 CALL DISPLAY

 AJMP MAIN

DISPLAY:

 MOV R0,#0

 MOV R1,#0x01

 MOV DPTR,#TAB

 LOOP:

 INC R0

 MOV A,R0

 MOVC  A,@A+DPTR

 MOV P0,#0 ;消隐

 MOV P0,A  ;送段码

 CALL DELAY

 MOV A,R1 ;送位码

 RL A  ;移位

 MOV P2,A

 MOV R1,A

 CALL DELAY

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

 RET

DELAY:

 MOV R6,#25 

DD: MOV R7,#50

 DJNZ R7,$

 DJNZ R6,DD

 RET

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

 END



8个按钮开关控制数码管显示1-7,8个按键,显示7个数,哪个键不显示吗,应该显示1-8才对呀。
数码管在按钮没有按下的时候显示数字。按下后显示相应数字,不按也显示数字,按下也显示数字,都是数字,有什么区别,难道是外国的数字?
这叫什么题目吗?


单片机如何实现一位显示八位数据?
1、 数码管显示演示程序: 在8个LED数码管上依次显示1,2,3,4,5,6,7,8。引用端口:数码管数据p0,数码管控制p2;DIS_DIGIT EQU 40H;位选通值, 传送到P2口用于选通当前数码管的数值,; 如等于0xfe时, 选通P2.0口数码管DIS_INDEX DATA 41H;显示索引, 用于标识当前显示的数码管和缓冲...

单片机中只用一个开关控制8个LED轮流亮灭,按一下第一个亮,再按一下第...
单片机中只用一个开关控制8个LED轮流亮灭,这很容易实现,也是最简单的控制方法,只要识别了按键按下了,就可以控制。轮流点亮更容易,用移位函数_crol_或_cror_就行了。是要仿真吗,给你个仿真图。

怎样用一个单片机控制8个数码管
如果是一个8段数码管的8个段码,直接连接8个I\/O到对应的8个段的控制端即可,通过I\/O输出高低电平控制对应的段码。如果是8个数码管,则,每个数码管的8个断码控制线并联总线到I\/O,作为数据控制。每个数码管的使能端口单独控制,或者使用进位模式,做选择控制哪一个数码管显示。

单片机用汇编语言编写用一个控制器控制8个LED灯亮
MOVR2,#07H;LOOP1:RRCA;右移1位 MOVP2,A;输出到P2 CALLDELAY;DJNZR2,LOOP1;右移7次 JMPMAIN DELAY:MOVR3,#20;延时0.2s D1:MOVR4,#20 D2:MOVR5,#248 DJNZR5,DJNZR4,D2 DJNZR3,D1 RET END

...跪求大神单片机练习题 1.用单片机控制8个LED灯,8个LED灯从左到右...
while(1){recy=0xfe;for(k=1;k<=8;k++){ P1=recy;Delay(50000);recy=recy<<1;} }

我需要单片机C51一个开关控制8个LED灯的程序 编程
unsigned charuchar led[5]={0x7e,0x3c,0x18,0x00,0xff};uchar num;sbit key=P1^0;main(){P0=0xff;num=0;while(1) { if(key==0) { while(key==0); P0=led[num]; num++; num%=5; } }}

在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按 ...
一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个就可以类推)\\r\\n\\r\\n1、初始值为0:上电复位后,单片机驱动数码管显示0.(如果不会,百度里搜51控制数码管等关键字,特别多试验电路和程序。)\\r...

单片机P1口控制8个LED灯显示,汇编程序(要有一个奇偶校对)
include <reg51.h> int i;unsigned char code z[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80} void delay(unsigned int z){ unsigned int m,n;for(m=0;m<z;m++)for(n=0;n<50;n++);} main { while(1){ for(i=0;i<8;i++){ P1=z[i];delay(200);} } } 感觉...

单片机中如何用一个按键控制八个灯的状态?
void delay(uint z);void main(){ uchar a;a=0x00;P0=0x00;\/\/P0输出; led共阴接法 P1输入按键另一端接地 P0加上拉电阻 P1=0xff;while(1){ P0=0x00;if(P1!=0xff){ a=P1;switch(a){ case 0xfe: P0=0x01;delay(3000);break;case 0xfd: P0=0x02;delay(3000);break;case 0x...

C语言C51单片机一个按钮控制8个LED灯,来高手解决,急啊,在线等,要求在...
unsigned char define uint unsigned int sbit K1=P2^0;void delay1s() \/\/1s延时 { uchar j,k,l;for(l=0;l<100;l++)for(j=20;j>0;j--)for(k=248;k>0;k--);} void main(){ K1=1;while(1){ if(K1==0){ P0=0xaa;delay1s();P0=~0xaa;delay1s();} K1=1;} } ...

阿图什市17317234796: 51单片机控制8个数码管并显示1 - 8 -
大叔胞导赤: 数码管段选连接到单片机P0口,位选连接到P2口 ORG 0000h MAIN:CALL DISPLAYAJMP MAIN DISPLAY:MOV R0,#0MOV R1,#0x01MOV DPTR,#TABLOOP:INC R0MOV A,R0MOVC A,@A+DPTRMOV P0,#0 ;消隐MOV P0,A ;...

阿图什市17317234796: 单片机汇编语言8只数码管显示1 - 8 -
大叔胞导赤: 1、 数码管显示演示程序: 在8个LED数码管上依次显示1,2,3,4,5,6,7,8.引用端口:数码管数据p0,数码管控制p2;DIS_DIGIT EQU 40H;位选通值, 传送到P2口用于选通当前数码管的数值,; ...

阿图什市17317234796: 八个数码管显示一个数字的汇编语言 -
大叔胞导赤: 这简单,只显示一个数,用延时就可以了,如果复杂一点的就需要用定时器来控制.DISPLAY: MOV R2,#0FEH LOOP: MOV P0,A MOV A,R2 MOV P2,A RL A MOV R2,A LCALL DELAY JNB ACC.7,DISPLAY RET

阿图什市17317234796: 51单片机加八个数码管设计一个单片机显示系统,要求八只管分别显示1~8.求这个程序的流程图,没有图 -
大叔胞导赤: 8个数码管的话一般都是由一个三八译码器控制,而且有三个i/o口作为选择数码管的钥匙,三个i/o口按一定顺序组合成的二进制000~111即是数字为0~7的8个数码管分别对应的三极管(开关),三个i/o口对应哪个数字就打开哪个数字的开关从而对应的数码管就会亮,其他一定会灭,所以为i/o口的一次赋值,就只开一个数码管.所以要求8个数码管分别显示1~8其实就是很快地轮次开闭8个数码管的开关,不断循环往复,切换开关的速度让肉眼无法识别有闪动感,而且每切换一次开关之前记得先消除鬼影 如何快速切换开关? 1.定时器中断或定时器中断函数 2.普通的延时函数(延时要自己测试) 3.不延时(开关切换之前要消除鬼影)

阿图什市17317234796: 我用的是51单片机实验板有8个数码管,点亮两位数码管的程序怎么写 -
大叔胞导赤: MAIN: MOV DPTR,#TAB MOV R7,#00H;十位计数 MOV R2,#00H;个位计数 DSUP0: MOV R6,#00H;扫描速度计数 DSUP: MOV A,R2 MOVC A,@A+DPTR MOV P0,A CLR P20;显示个位 SETB P21 LCALL YSH2S MOV A,R7 MOVC A,@A+...

阿图什市17317234796: 51单片机串口通信控制八位数码管显示时钟程序,用C语言怎么写??求告诉. -
大叔胞导赤: 不是取反,是关闭对应数码管.思路:判断按键->调整时间->显示时间;你要实现闪烁,需要在显示数字部分下功夫

阿图什市17317234796: 51单片机驱动八位数码管电子钟 -
大叔胞导赤: #include<reg52.h>#include<intrins.h>#define uchar unsigned char #define uint unsigned int#define DP 0x80 uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//八位位选码表 //0 1 2 3 4 5 6 7 uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0...

阿图什市17317234796: 51单片机8段数码管显示 -
大叔胞导赤: 限流电阻用排阻不要用单个的电阻 就是没个数码管都单独接个限流电阻

阿图什市17317234796: 单片机是怎么控制8个数字的数码管?8个数字要64个引脚,单片机总共才40个引脚? -
大叔胞导赤: 驱动的方法有很多,你说的这是单片机直接静态驱动,这种驱动方式编程上最简单,但是消耗IO口太多,一般2位以上的数码管都不用它. 使用单片机直接动态驱动,8位数码管只需要占用16个IO口,其中8个输出段选信号,8个输出片选信号,这种方式比较常用,编程上也不是特别麻烦. 使用锁存器(比如74HC573)通过IO口分时复用来实现,8位数码管只需要8个IO口,段选和片选共用这8个IO口. 最终极的办法:通过串入并出移位寄存器级联驱动,这种方法是静态驱动,无论多少位数码管,只需占用2个IO口,单片机将段选信号串行发出,静态驱动没有片选信号.

阿图什市17317234796: 51单片机,为什么八个连在一起的数码管通过代码只亮一个,哪个硬件决定的?573吗,怎么决定的? -
大叔胞导赤: 八个数码管显示可以把段码接一起,位码分开控制就可以达到这个效果了,动态显示就可以了

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