单片机如何同时控制四位数码管显示不同数字。

作者&投稿:俎蝶 (若有异议请与网页底部的电邮联系)
C51单片机如何让四位数码管分别显示四位不同的数字?~

每一次只能让一个数码管位选,其他的关闭,给数码管赋值。重复4次就可以了。
假设要显示“1234”:

#include
sbit k1 = P1^1;
sbit k2 = P1^2;
sbit k3 = P1^3;
sbit k4 = P1^4;//k1-k4 4个位选开关,我假设你的电路是低电平有效

uchar code table[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8;
0x80,0x98};//共阳极1-9
void delay( char t )//延时函数
{
char x,y;

for( x = t;x > 0;x-- )

{
for( y = 100;y > 0;y-- );

}
}


void main()//主函数
{
int i = 1234;

int temp;

while(1)
{
temp = i;//temp = 1234;
//显示第4位
k1 = k2 = k3 = k4 = 1;//关闭所有未选
k4 = 0;//打开第4位位选
P2 = table( temp%10 );//假设P2口控制数码管
temp = temp / 10;//temp = 123

delay( 5 );

//显示第3位
k1 = k2 = k3 = k4 = 1;//关闭所有未选
k3 = 0;//打开第3位位选
P2 = table( temp%10 );//,假设P2口控制数码管
temp = temp / 10;//temp = 12
delay( 5 );

//显示第2位
k1 = k2 = k3 = k4 = 1;//关闭所有未选
k4 = 0;//打开第4位位选
P2 = table( temp%10 );//,假设P2口控制数码管
temp = temp / 10;//temp = 1;
delay( 5 );
//显示第1位
k1 = k2 = k3 = k4 = 1;//关闭所有未选
k4 = 0;//打开第1位位选
P2 = table( temp%10 );//假设P2口控制数码管
delay( 5 );

}

}

先让你的第一个数码管显示要显示的第一个数字,其他数码管关闭;
然后关闭第一个数码管显示;
然后让你的第二个数码管显示要显示的第二个数字,其他数码管关闭;
然后关闭第二个数码管;
然后让第三个数码管显示要显示的第三个数字,其他数码管关闭;
然后关闭第三个数码管;
……
……
依次类推,到最后一个后返回到第一个重新显示。
当显示的速度足够快的时候,你就看到所有的数码管都亮起来,显示了不同的数字。
这个叫扫描显示。
当你从头扫到尾的频率在25Hz之上的时候,看到的就都亮了,当然如果之后25Hz会感觉到抖动。
至于能跑到多少Hz要看你单片机的速度了。
我们电脑显示屏一般在60Hz。

你的图不是很清楚,根据你图上的功能来看,器件应该是:
单片机(51系列) -> 8路缓冲器(74HC245) -> 数码管(四位)
1、由于单片机IO口的驱动能力有限,在单片机和数码管中间增加了缓冲器
这样可以有效的保护单片机,提高了驱动能力。
2、接法:四位数码管有四个选择端,保证统一时间只A-G字段,只对一个数码管有效。
3、点亮数码管,通过选取不同的选择端,选择好某一位数码管,通过A-G字段点亮。这个10K的上拉电阻,就针对单片机的,
因为单片机的P0口,内部是不带上拉电阻的,
10K,既能保证单片机有可靠的高电平输出,又能保证有一定的驱动

动态扫描,这是最基本的思路。

模拟串口方式0:
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit P3_2=P3^2; //模拟接受
sbit P3_3=P3^3; //模拟发送
uchar code smg[11]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff};//数码管编码0~ 9
void display(uchar z);
main()
{
display(5);
display(0);
display(4);
while(1);
}

/************模拟串口显示**************/
void display(uchar z)
{
uchar i;
uchar temp;
temp = smg[z];
for(i=0;i<8;i++)
{
P3_3= 0;
if(temp & 0x01) P3_2=1;
else P3_2 = 0;
P3_3= 1;
temp = temp>>1 ;
}
}

串口}方式0:
void display()
{
SM0=0;
SM1=0; //方式0
for(i=0;i<3;i++)
{
SBUF=smg[snum[2-i]];
while(!TI) ;
TI=0;
delay(1000);
}
}

还有并行口方式 占用I/O不推荐 不过程序很简单


小米打印机怎样在A4纸上同时打印4个不同人以上的一寸证件照片?
可以先在电脑上用word编辑一下,把不同照片放到一页上,然后打印就可以了。

手摇插片机使用方法
4.2.2、左手执线包顶部,将其体积厚的一半放入插片机中滑导之间,在线包底部水平插入两片EI片(注意:毛面向上光面向下,以减小对中滑导及上滑导表面的磨擦),同时让线包底部的钢片水平接触上滑导,底部塑胶水平接触活动板上平面,右手执手轮摇柄,轻按住线包,先慢速启动3-5片时,将矽钢片顶部...

如何玩胶片机?
1、持机姿势:左手手心托着相机,手指放在镜头旁固定,拇指扶着机身后盖,因为对于控制后盖和胶卷都比较方便。2、检查机内是否有卷。在打开机背前,先将回片杆按上面的箭头指示方向转个几圈,确定一下机内是否有底片。即便有底片,也已经回片妥当。3、打开机身后盖,一般手动胶片单反后盖的打开方式都是...

如何正确使用粉末压片机
3、初次试车应将压力调节器控制的指示针放置6上,将粉子倒入斗内,用手转动试车手轮,同时调节充填和压力,逐步增加到片剂的重量和硬软程度达到成品要求,然后先开动电动机,再开离合器,进行正式运转生产,在生产过程中,须定时抽验片剂的质量,是否符合要求,必要时进行调整之。4、速度的选择对机器使用...

怎样拍多重曝光
问题七:用佳能5d3怎么拍多重曝光 设置菜单里面就有多重曝光;多重曝光功能的多重曝光次数为2至9次,并且有“加法”、“平均”、“明亮”和“黑暗”4种图像重合方式可选。 在拍摄菜单3中选择“多重曝光”选项 选择“多重曝光”选项 关闭――选择此选项,则禁用“多重曝光”功能。 ・开――功能\/控制:选...

港片一机四位是什么意思
一台机器可以同时服务四个人。一机四位是指一台机器可以同时服务四个人,这个词语通常用于餐饮、娱乐等场所,例如一些餐厅、游戏厅、电影院等,80年代会用作形容港产片。港片就是中国香港本土拍出的电影或电视剧的统称。

削片机控制线怎么接
1、首先两个电容任意两根互接,再和电机红相接以及开关线互接。电机线红白互接,再接开关上任一根。剩下的电机黄线接25的电容线,黑线接150的电容线。2、其次切片机刀片若反转,将两根红线互换就可以调正。380V的电线任意接,如果刀片反转,那么将羊肉切片机插头三根电线任意两根火线互换就可调正。通...

怎么设置一台电脑控制多台打印机,同时打印照片,请高手指点
1、一台电脑可以通过不同的接口连接并控制多台打印机,2、将不同的打印机通过不同的接口与电脑正确连接,然后逐一安装打印机的驱动程序,(这里不再赘述),3、正确安装打印机驱动程序后,即实现了多台打印机与电脑正确连接,当需要控制哪一台打印机实现打印操作时,在电脑开始菜单中选择“设备和打印机...

用单片机对步进电机进行控制
很多工业控制设备对位移和角度的控制精度要求较高, 一般电机很难实现, 而步进电机可精确实现所设定的角度和转数。本设计主要是运用51 单片机控制六线4 相步进电机系统, 由单片机产生驱动脉冲信号, 控制步进电机以一定的转速向某一方向产生一定的转动角度。同时能够利用单片机实现电机的正、反转及速度控制,并能在数码...

口罩打片机如何实现超声波熔接和自动封边的?
南方力劲的口罩打片机工作原理主要基于超声波熔接与自动封边技术。这款创新设计的机器集成了杯型口罩边缘焊接和冲切两个传统上独立的步骤。通过多工位转盘设计,机头同时执行焊接和切料任务,利用PLC控制系统和触摸屏操作界面,操作流程简单易行,一个人即可独立操作,只需放置和取出材料即可,显著节省人力。

临沭县18699916517: 单片机可以实现一个独立按键控制数码管多个数字吗? -
衅巧小儿: 一个按键控制4个数码管显示4个数,最简单的方法是按一次键计一个数,最大数是9999,即可显示四位数.再简单点,按一次键开始自动计数,最大数还是9999,再按一次键停止计数.这样控制程序好写.长按和短按对于初学者有点难,当然了,要能写出程序来是最好啦.

临沭县18699916517: AT89C51单片机怎么用汇编语言让4个数码管同时显示1234? -
衅巧小儿: 1、首先我们先打开keil. 2、接着,我们要定义好库函数,void main(){while(1)//不断循环显示{dispaly();}}void dispaly(){P0=smg[1];//选择显示数字几,P1=0x7f;//控制是否点亮数码管. 3、接着,我们加上一条循环语句.delay(5);//显示5...

临沭县18699916517: 如何用一个单片机驱动四个四位数码管同时显示四组不同数据? -
衅巧小儿: 方法一:两个HD7279,正好可以驱动16个数码管,电路简单,不占单片机资源 方法二:74HC154译码扫描,或者两个P口扫描,需要16个三极管驱动或者两片ULN2003之类的,比较占用单片机资源

临沭县18699916517: 如何让单片机不同数码管同时显示不同数? -
衅巧小儿: 先让你的第一个数码管显示要显示的第一个数字,其他数码管关闭; 然后关闭第一个数码管显示; 然后让你的第二个数码管显示要显示的第二个数字,其他数码管关闭; 然后关闭第二个数码管; 然后让第三个数码管显示要显示的第三个数字,其他数码管关闭; 然后关闭第三个数码管; …… …… 依次类推,到最后一个后返回到第一个重新显示. 当显示的速度足够快的时候,你就看到所有的数码管都亮起来,显示了不同的数字. 这个叫扫描显示. 当你从头扫到尾的频率在25Hz之上的时候,看到的就都亮了,当然如果之后25Hz会感觉到抖动. 至于能跑到多少Hz要看你单片机的速度了. 我们电脑显示屏一般在60Hz.

临沭县18699916517: at89s52单片机 如何实现4个按键控制四位数码显示管,按p3.2数码管显示1111,按p3.3显示2222,如此类推、、 -
衅巧小儿: 你好,我对at89s52单片机不是很熟悉,刚才在百度上查了一下,它的P3口是这样的:P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平.对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可...

临沭县18699916517: 用51单片机编程实现集成4位8段数码管显示不同的数字 -
衅巧小儿: 刷新时间过短可能造成cpu的不响应. char js(char k) {if(k==4) k=0; return k;} void delayy(int k) {int i,j;for (i=0;i<k;i++){for (j=0;j<60;j++){;}} } void main() { for (;;){z=js(z);i=js(i);P0=0; P1=0xff-(0x01<<z);j=time[i];P0=table[j]; delayy(1);z+...

临沭县18699916517: 使用单片机驱动4位数码管,亮度不一样,第一位很亮,其他很暗,为什么? -
衅巧小儿: 程序里没有做鬼影处理.你每次显示一位数码管之后,在delay之后都将P1和P3口清空,当然是按照你的电路来写,目的就是让数码管什么也不显示.然后再次赋值显示下一位的值.建议使用定时器来显示,这样能保证每一位的亮度完全相同.

临沭县18699916517: 51单片机怎么控制四位数码管,有没有汇编程序?我只能控制两位!求详解! -
衅巧小儿: display:;显示子程序 mov dptr,#numtab;送数据表 mov a,a_bit;送个位 movc a,@a+dptr;查表 mov p1,a;送p0显示 30 setb p3.7;选中第一个数码管 lcall d1ms;显示1ms cpl p3.7;关显示 mov a,b_bit;送10位数据 35 movc a,@a+dptr;查...

临沭县18699916517: 怎么样编写程序在51单片机上的数码管显示不同的 -
衅巧小儿: 动态显示.就是先单独显示完一位后,然后关闭这一位(也就是熄灭这一位的led),然后再单独显示下一位.由于人眼反应慢,随意看起来就像4位数码管都在同时显示

临沭县18699916517: 52单片机如何让数码管同时显示12345678并一起闪烁? -
衅巧小儿: 数码管本身可能就是动态显示,相当于每个数码管都在闪烁,只是我们的眼睛分辨不出来而感觉不到闪烁,动态显示再加上闪烁,稍微有点复杂.但是还是可以实现的,因为...

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