单片机数码管动态显示6个数码管显示012345问题

作者&投稿:郎素 (若有异议请与网页底部的电邮联系)
在六个数码管上同时分别显示012345的数字的程序是?用汇编语言写 , 谢谢!~

我的开发板是共阳极的
方法就是让它动态显示 LZ可以自己想想怎么让它循环起来
ORG 0000H
MOV R7,#4
DLO:MOV R4,#250
DLO1:
MOV A,#0C0H
MOV P0,A
CLR P2.0
ACALL D1MS
SETB P2.0

MOV A,#0F9H
MOV P0,A
CLR P2.1
ACALL D1MS
SETB P2.1

MOV A,#0A4H
MOV P0,A
CLR P2.2
ACALL D1MS
SETB P2.2

MOV A,#0B0H
MOV P0,A
CLR P2.3
ACALL D1MS
SETB P2.3

MOV A,#99H
MOV P0,A
CLR P2.4
ACALL D1MS
SETB P2.4

MOV A,#92H
MOV P0,A
CLR P2.5
ACALL D1MS
SETB P2.5



DJNZ R4,DLO1
DJNZ R7,DLO
SJMP DLO
D1MS:
MOV R6,#50H
DJNZ R6,$
RET

# include# define uint unsigned int# define uchar unsigned charcode uchar shu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, /* 0 1 2 3 4 56 7*/0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //数码管段选 /* 8 9a b c def*/code uchar wen[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//数码管位选uchar huancun[] = {0x00,0x00,0x00,0x00,0x00,0x00};//数码管段选缓存sbit duan = P2^6;//段选sbit wei = P2^7;//位选void delay(uchar x)//延时函数{uchar i,j;for(i = 0; i9)//移到最后面 回到初始状态{ j = 0;}}}照着你给你电路图写的,有问题请追问

#include <reg52.h> //52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; // 申明U1锁存器的锁存端
sbit wela=P2^7; // 申明U2锁存器的锁存端
uchar code table[]={ //共阴极数码管编码
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //位选数据,6位数码管的位选数据
uint i=0;
void delay(uint x) //延时x毫秒
{
uint a,b;
for(a=x;a>0;i--)
for(b=110;b>0;b--);
}
void main()
{
while(1)
{
dula=1;
P0=table[i]; //送段选数据
dula=0;
P0=0xff; //关闭显示
wela=1;
P0=wei[i]; //送位选数据
wela=0;
delay(500); //延时
i++;
if(i==7)i=0;
}
}

楼下 NJGQZF 的答案,最后if括号里条件应该为 i==6,如果i==7,则显示6时,六个数码管同时显示6。我刚刚测试的!

有原理图吗


...那根本没有办法显示,因为各个数码管的相应字段接在一起
四位一体数码管,要用数字电路的译码器驱动,像你第一个图的电路,确实只能当一位来用。但是用单片机就可四位都亮,而且显示四个不同的数。单片机采用动态扫描方式驱动,别说是四位一体,8位一体也照样驱动。当然了,你是用数字电路的思维来考虑这个问题的,还气愤地整出双片机,太有才啦!让你看...

运用51单片机实现2位8段数码管显示00-99,数码管的段选择数据由P0口控制...
根据使用情况来讲: 使用上来说很流畅,不过机器的发热量有些大,尤其是玩了半小时3D游戏或者是看了720P的视频的时候,可以明显感觉到热量,相机那块比较热。 因为平常经常拿手机看片,发现看了90分钟以上的时候,会发现视频和音频不同步的情况,估计是温度升高导致机能下降导致的。不过一般情况下都没问...

要令五个数码管分别显示1、2、3、4、5,单片机的P1.5引脚应输出什么...
这种指令输出的一二三四五六,单片的话也可以输出一个四五二三。

让静态数码管循环显示0到9,每个数字显示延迟半秒
因你没有给原理图,所以,画了一个仿真图,一位共阴数码管接在P0口,组成静态显示电路,每个数字显示0.5秒,采用定时器T0定时来实现。仿真图如下,请及时采纳。程序如下 include<reg52.h> unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char...

单片机时钟是独立按键控制吗
该机器是独立按键控制。单片机时钟需要使用独立按键调节和控制,可调节时间显示、日期和闹钟等功能,使用期间较为便捷。片机时钟设置:1、使用数码管显示时间。2、使用单片机内部定时实现走时。3、通过按键设置时间,设置时对应显示位置闪烁。

数字电子钟可设报告
本设计由以下几个部件组成:单片机AT89C51、四个八段码共阴极数码管显示、四个微动按钮等其它组件。在启动后开始从00时00分显示。可以手动校准时间,秒使用两个发光二极管的闪烁来提现,本设计设计简单易于实现。图1 99秒计时器系统原理框图 2.2硬件连接方式数码管使用动态显示,P0口作为四个八位共阴数码管的段选输出端...

单片机控制一个4位的共阴数码管通电的状态下显示时间的程序
void xian()\/\/把时分秒送到数码管显示。{ uint i;miaog=miao%10;miaos=miao\/10;feng=fen%10;fens=fen\/10;shig=shi%10;shis=shi\/10;for(i=0;i<8;i++){ switch(i){ case 0:P3=b[7];P2=a[miaog];break;case 1:P3=b[6];P2=a[miaos];break;case 2:P3=b[5];P2=0x40;...

单片机连接共阴极六位数码管,显示23.3458...类似这样的数,选择显示前四...
首先会分离十位,百位 十分位 百分位,扫描显示时,对于不需要显示的位,可以直接跳过,也可以送暗码0xFF或0x00,对于带小数点的那一位,可以在没有小数点的七段码前加0x80。

《单片机C语言程序设计实训100例——基于8051+Proteus仿真》 第03...
实例63:用LED数码显示器伪静态显示数字1234 实例64:用数码管显示动态检测结果 实例65:数码秒表设计 实例66:数码时钟设计 实例67:用LED数码管显示计数器T0的计数值 实例68:静态显示数字“59”单片机c语言编程100个实例目录3 键盘控制*键盘控制* *键盘控制 *键盘控制 *\/ 实例69:无软件消抖的独立...

数码管显示 4位数码管从0显示到9999,然后再从0到9999计数,并且在显示完...
将按键插入原位置,使焊角插入焊孔并露出尖端部分,用电烙铁将其与焊孔焊牢,装上键帽即可。2012-7-19 16:48:03vdeatguamkj2805860736k楔ǒ力k楔ǒ力iㄎst‘擐uo洄z榨lm绰数码管显示 4位数码管从0显示到9999,然后再从0到9999计数,并且在显示完一次后,以-**-形式显示计数次数 ...

湖口县19649699217: 设计单片机控制6位数码管动态显示电路,并编程实现让数码管同时显示 -
印褚他利: #include #define uchar unsigned char#define uint unsigned intuchar code DSY_CODE[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};void DelayMS(uint x){ uchar t;while(x--)for(t=120;t>0;t--);}void main(...

湖口县19649699217: 如何同时点亮6个共阴极数码管并显示不同数字,比如52.945 -
印褚他利: 这个有两种方法了:其一就是用单片机的I/O口分别控制每个数码管,但是这样的话资源浪费就太严重了...其二就是用单片机的两个I/O口对六个数码管进行段选和位选操作,选中其中一个数码管时,其他的均未被选中,也就不会显示数字,被选中的显示对应值,然后选中下一个数码管时,其他的都是不亮的,这样依次显示每个数码管,当人眼看到时,由于人眼睛的视觉暂留效应,就会看到6个管同时显示了

湖口县19649699217: 6位数码管动态扫描c语言求高手指点迷津!!!! -
印褚他利: 第一,段选 和 位选的 num值 是不同的,这个要注意;第二,在开启段选(duanxuan=1) 和 开启位选(wexuan=1) 前,必须选清掉P1的值,或者先进行P1赋值,再开启 段选、位选.如果 段选/位选=1 是关闭而不是开启,那同样道理,在=0(开启)后,也要进行清P1.

湖口县19649699217: C语言单片机代码 数码管动态显示 -
印褚他利: 这里的16个元素代表的是从十六进制数0~9、A、B、C、D、E、F的段码,根据什么来填这些数组元素?那就要看你设计程序时定义数组的作用才能确定.table[1]对应的元素为0x06,是十六进制数,转换成二进制数是00000110B,分别对应于数码管的Dp、g、f、e、d、c、b、a 脚,所以在共阴数码管上点亮b、c两段,显示的是数字1,其它同理.

湖口县19649699217: 关于用单片机实现数码管动态扫描显示 -
印褚他利: 那是因为你第一个扫描的时间比较长,原因是你第一个的扫描时间=显示函数中的延时+其他程序循环的时间;解决的方法有两个:一、除了在显示函数里面显示外,其他地方都关闭显示,也就是说,在返回显示函数的时候,关闭所以的显示;二、就是在定时中断里面显示

湖口县19649699217: 51系列单片机驱动多个数码管 -
印褚他利: 用六片 595,即可静态显示时、分、秒.但是,这时分秒的公共端,还要用一位接口来控制.类似于动态显示的位选.当换另一个位时,再让这六片 595,显示年、月、日.当换另一个位时,再让这六片 595,显示星期、温度、湿度.当换另一个位时,再让这六片 595,显示某某节日的倒计时,或农历.595 用单片机的三条引线,位选,用四条.共七个引脚,即可驱动 24 位数码管. 并且,仅仅是四位的动态显示,因此,毫无闪烁的现象. 单片机,使用仅有 15 个 IO 引脚的 AT89C2051,即可够用.

湖口县19649699217: 让6位数码管闪烁显示原理 -
印褚他利: 1 单片机数码管动态显示的过程中,设置一个闪烁寄存器,专门保存要闪烁显示的位子,再增加一个闪烁显示码的暂存器.2 每次调用显示程序时,先要判断需要显示闪烁的位子的显示码,是不是等于“灭”的显示码,不是的话,将该位的显示码送闪烁显示码的暂存器进行保存,将“灭”的显示码送入相应的显示缓冲区的位子,调用显示程序;如果等于“灭”的显示码,则将保存在闪烁显示码的暂存器中的显示码再送回相应的显示缓冲区的位子,调用显示程序.

湖口县19649699217: 52单片机如何让数码管同时显示12345678并一起闪烁? -
印褚他利: 数码管本身可能就是动态显示,相当于每个数码管都在闪烁,只是我们的眼睛分辨不出来而感觉不到闪烁,动态显示再加上闪烁,稍微有点复杂.但是还是可以实现的,因为你已经成能让数码管动态的显示数字了,那么你就一段时间让数码管显示正常的数字,一段时间让数码管全灭(假设你的数码管是共阳极的话,简单点实现就是此时位选的值全是高电平),这样就能完成动态数码管的闪烁功能,但是这个时间还需要实际调试

湖口县19649699217: 怎么在六个数码管上同时分别显示012345的数字,接线?
印褚他利: <p></p> <p>数码管段选接单片机的口,比如P0口,正好8位,位选拿出6个IO来,利用人眼视觉暂留的效应动态显示012345</p>

湖口县19649699217: 用89c51单片机 6个数码管循环显示HELLO的程序 及仿真电路图 -
印褚他利: #include<reg51.h> #define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9 uchar ledtab[]={0x66,0x79,0x68,0x68,0x5c, //HELLo 0x00,0x39,0x6d,0x00,0x3f,0x66}; // C51 04 0x66,0x79,0x68,0x...

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