怎样用单片机控制数码管的显示?

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

控制数码管显示通常涉及到驱动数码管的硬件连接和编写相应的软件代码。数码管可以是共阳极或共阴极的,这决定了你需要如何驱动它们。以下是一个基本的例子,展示了如何使用8051单片机控制一个共阴极数码管显示数字。

首先,假设你有一个共阴极数码管,并且它连接到单片机的P0口。每个数码管的段(a, b, c, d, e, f, g,
dp)通过限流电阻连接到P0口的相应位。共阴极数码管的公共端(阴极)连接到地。

在这个例子中,我们定义了一个段码表seg_table,它包含了数字0到9对应的7段数码管的段码。在主循环中,我们通过循环遍历这个表,并将每个数字的段码发送到P0口,从而在数码管上显示相应的数字。

如果你使用的是多位数码管,你可能需要使用动态扫描技术来依次点亮每个数码管,并快速切换,以便人眼看到的是连续的显示。这通常涉及到额外的I/O口来控制每个数码管的公共端,并且需要在软件中实现动态扫描逻辑。



1、LS147优先编码器的输入端和输出端都是低电平有效,即当某一个输入端低电平0时,4个输出端就以低电平0的输出其对应的8421BCD编码。当9个输入全为1时,4个输入出也全为1,代表输入十进制数0的8421BCD编码输出。

2、不用单片机,用数字电路实现很容易呀。用一片10线-4线编码器,接10个按键,输出为BCD码,再用一片74LS247,七段译码器/驱动器,输出接一个共阳数码管即可,按几号键,数码管就显示几了。下表就是74LS147的真值表。

3、LS147是优先编码器,从高位起,为0的就输出对应的编码的反码值。而其后的输入状态是被忽略不计的。这里,I9=1,I8=1,I7=0,那么编码输出7=0111,反码就是1000了。




单片机控制多位数码管的电子时钟程序
用单片机控制多位数码管的电子时钟,用独立按键进行控制,可显示时间,日期,有闹钟功能,独立按键进行时间日历,闹钟设置 软件编程: keil工程C语言代码:\/*** 项目名称:数码管电子时钟 实现功能:数码管显示时间、日期,时间、日 期可调,可设置闹钟,闹铃响一分钟。 ***\/ #include reg52.h #define...

51单片机怎么用按键控制一个数码管,按一下显示一
\/*---名称:单个共阳数码管动态显示变化数字内容:通过循环检测P1口按键输入值,然后用数码管输出,没有按键按下时原值不变---*\/#include\/\/包

单片机程序求修改,实现按键控制数码管0-9,急!!!
\/*实现定时器1方式1定时1S使得数码管加1显示功能*\/ if(key3==0) { delay(7);if(key3==0) { flag = ~flag;while(key3==0);} } } void T1_ini(){ TMOD=0X10;TH1=(65536-50000)\/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;} void timer1() interrupt 3 { a++;...

51单片机按键控制流水灯和数码管(最好用外部中断)?
51单片机按键控制流水灯和数码管,P1口接8个LED灯,P0口接一个共阳数码管,P3.2和P3.3各接一个按键,分别用外部中断0和中断1。早蜂鸣器接在P2.7上。仿真图如下。

如何利用单片机让4位数码管显示?
程序如下(用的是STC89C52芯片):include<reg52.h>\/\/52系列单片机头文件 define uchar unsigned char define uint unsigned int uint x,y;uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};\/\/共阴极数码管编码 void display...

如何用单片机控制12V的数码管
很明显,你的单片机输出电平最高才5V,而三极管的E级接了12V,所以无论单片机输出0还是1都是无法使三极管截止的,就算输出5V电平时,发射结和限流电阻之间还是有7V的电压,三极管一直出于导通状态,所以建议你改用NPN的管子,E接地,C接数码管,不过这样数码管要用共阴的,或者改成下图的形式 ...

求51单片机控制2个数码管的程序
两只数码管段码分别由P0,P2输出控制,P0是十位,P2是个位。P3.2,P3.4分别接两只按键,P32.清0,P3.4计数。以上程序来自《单片机C语言程序设计实训100例--基于8051+Proteus仿真》include <reg52.h> define uchar unsigned char define uint unsigned int uchar DSY_CODE[]= { 0x3f,0x06,0x5b...

如何用单片机AT89C51控制六位数码管,可以显示出不同的六个数字(123456...
include<reg51.h> define uchar unsigned char uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};uchar number=0;void t0isr() interrupt 1 { TH0=0xf4;TL0=0x48;switch(number){ case 0:P2=0x01;P0=distab[1];...

单片机一个引脚怎么控制数码管一个数字?引脚才一位,而数字需要8位控制...
使用8位串入并出的移位寄存器,比如74ls164,串入数据完毕后同时输出到7段数码管 像下面这个 用74ls164做的五环,省了很多引脚

用单片机控制4位LED数码显示,先从左到右慢速动态扫描显示数字“1357...
include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int uchar code dis_code_[]={0xf9,0xb0,0x92,0xf8,0xa4,0x99,0x82,0x80,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c};void delay(uint t){ uchar i;while (t--){ for(i=0;i<200;i++...

合川市15132988343: 怎样用单片机驱动LED数码管显示 -
再雁氨酚: 数码管是由若干个led发光字段组成,当不同字段点亮时可形成不同的数字或字符.所有字段的led阳极接在一起,点亮字段靠控制led阴极的称共阳极数码管,反之为共阴极数码管.单片机就是通过输出端口控制数码管不同字段的亮暗完成字符显示的(有时要加电流驱动电路).对于多位数码管显示器在显示方式上分为静态显示(多位同时显示)和动态显示(扫描各位依次显示).如果你有单片机学习板的话最好,自己看教程学习,这方面你可以看吴鉴鹰单片机开发板,教程和板子功能做得全面

合川市15132988343: 请问单片机中要怎么用按键控制数码管显示的模式..用C语言编程.. -
再雁氨酚: 可以用按键中断,也可以用按键查询. 用按键中断:如果按键按下就进入中断子程序里,然后在中断子程序里改变显示模式即可 按键查询:用while 语句查询某个按键是否按下,如果未按下则继续执行子程序,如果按键按下则跳入到事先写好的子程序,在子程序里改变显示模式希望能帮到你!

合川市15132988343: 如何用单片机控制数码管 -
再雁氨酚: 分离部分数码管需要专门的驱动芯片如TM1628,或者单独由一个单片机芯片驱动.

合川市15132988343: 怎样用单片机控制数码管亮第一个的前提下再亮第二个,同样再亮第三个,,第四......第八个 -
再雁氨酚: 用单片机的一个8位端口控制数码管的亮和灭,让该端口依次输出对应的状态值

合川市15132988343: 求单片机高手帮忙.帮写一个数码管的显示程序.十万火急.谢谢了 -
再雁氨酚: ORG #0000H LJMP #0030H MIAN: MOV DPTR , #TAB ;表头送指针 MOV A, #0HMOV R2,#2AH ;延时一秒 MOV R3,#3BH MC: MOV R4,#4CHDJNZ R3,MC DJNZ R2,MC MOV P0,A+@DPTR ;从表中取值 INC A ;自加一,去下一...

合川市15132988343: 用单片机控制数码管显示电路图的运行原理 -
再雁氨酚: 单片机控制数码管显示电路图的运行原理是利用人眼“视觉暂留”的原理来实现的. 1、根据科学论断,人眼视觉暂留时间是一帧也就是1/24秒,大约42毫秒时间. 2、在多个数码管显示电路中,控制上是通过扫描显示也就是分别分时给每个数码管送显示数据(段码+位码),而全部数码管的一次扫描时间不超过1/24秒. 3、要想达到稳定显示,经过试验,每个数码管数据暂留时间又不能太少,一般不少于3毫秒.因此一个单片机的扫描控制流程最多可以控制14个数码管. 4、扫描控制,一般用定时器来实现,51单片机有2个定时器,因此,最多可以同时控制28个数码管稳定显示.

合川市15132988343: 请问怎么用单片机控制三位数码管,让它显示一个值?需要用到驱动吗? -
再雁氨酚: 用轮询的方法,送第一位显示数据时,给第一位通电,送第二位显示数据时,给第二位通电,送第三位显示数据时,给第三位通电,至少驱动,普通的数码管可以直接通过单片机的IO驱动

合川市15132988343: 单片机驱动数码管 -
再雁氨酚: 哈哈哈哈 刚才回答了你一个关于单片机驱动二极管的.现在看来,你问那个问题的原因是想用单片机驱动数码管.共阳极的数码管需要在阳极上接一个PNP的三极管.每一位用一个.数码管的段全部接到单片机的P0口.限流电阻取470欧至560欧之间.使用的时候,用CLR语句打开响应的三极管,这时,此位选通.然后送出段码.延时一毫秒后,用SETB语句关闭这个三极管.然后转到下一位实施相同动作就好了.图中只是一位的.多位的也很简单.就是多占用几个IO口,多用几个三极管和电阻而已.数码管的限流为470-560 三极管的限流为4.7K就很好

合川市15132988343: 单片机与数码管显示是如何进行通信的? -
再雁氨酚: 给你举个例子: 4位7段LED P0口接LED段选端,P1口接位选端. 先选位后选段显示

合川市15132988343: 单片机 键盘控制数字的加减 在数码管上显示出数据 -
再雁氨酚: 是主函数出了问题,你的键盘扫描程序是有返回值的函数,返回的值是指函数的运算结果,不是对于keycounts这个变量的,所以你需要把主函数改成 while (1){uchar m;m=keyscan();bai=m/100;shi=m/10%10;ge=m%10;display(bai,shi,ge)...

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