运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序

作者&投稿:夙卞 (若有异议请与网页底部的电邮联系)
51单片机,8个数码管循环显示1-9的C语言程序。~

假设8个数码管公共端均接地,同时显示1-9
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff
};
void DelayMS(uint x)
{
uchar t;
while(x--)
for(t=120;t>0;t--);
}
void main()
{
uchar i=0;
P0=0x00;
while(1)
{
P0=~DSY_CODE[i];
i=(i+1)%10;/*显示0-9*/
DelayMS(200);
}
}
下面程序从左到右显示
#include
#include
#define uchar unsigned char
#define uint unsigned int

uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};

void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=200;i>0;i--);
}
}

void main()
{
uchar i,k=0x80;
while(1)
{
for(i=8;i>0;i--)
{
P2=0xff;
k=_crol_(k,1);
P0=DSY_CODE[8-i];
P2=k;
DelayMS(3);
}
}
}

动态显示的是有固定格式的,赋值,开显示,延时,关显示,假设p0口接数据显示位,p2口低4位接片选,
p2=tab[1];
//赋值
p3_0=0;
//开第一位显示
for(i=0;i<200:i++);//延时
p3_0=1;
//关第一位显示
p2=tab[2];
p3_1=0;
//开第二位显示
for(i=0;i<200:i++);
p3_1=1;
这个程序就是让两个数码管分别显示1和2,注意程序开头包含头文件regx52.h,如果是包含reg52.h编译不了的

#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,nn=0;
uchar dat[]={2,0,1,2,1,1,4,5,8,2};
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
number%=4;
switch(number)
{
case 0:P2=0x08;P0=distab[nn];
break;
case 1:P2=0x04;P0=distab[nn+1];
break;
case 2:P2=0x02;P0=distab[nn+2];
break;
case 3:P2=0x01;P0=distab[nn+3];
break;
default:break;
}
nn++;
nn%=7;
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

又是来骗积分的。


如何在51单片机的P3口输入4个独立按键?
要实现4个独立按键的中断,可以采用外部中断的方式。在51单片机中,可以通过P3口的外部中断请求(P3.2-P3.5)实现多个独立按键的中断响应。具体实现方法如下:1. 首先需要将P3.2-P3.5设置为输入模式,并使能中断请求。2. 在程序中,需要编写中断服务函数,用于处理按键中断事件。当某个按键按下时,...

用51单片机控制4位一体数码管实现1234轮流显示的程序代码是什么,求!pro...
delay(500);displayDigit(4);delay(500);} }

你好,我用51单片机要实现4个按钮控制8盏流水灯,四个按钮分别是启动停止...
if(k1==0) { while(k1==0); flag=1; led=0xfe; } } if(k2==0) { delay(10); if(k2==0) { while(k2==0); flag=2; } } if(k3==0) { delay(10);

51单片机1按键切换4种不同状态的灯的c程序??可以是正闪,反闪,多种间隔...
以下是一个简单的51单片机程序,通过按下按键可以实现4种不同状态的灯亮灭,包括正闪、反闪、多种间隔闪。程序中使用了定时器来实现闪烁功能。程序中使用了P1.0到P1.3作为控制灯的引脚,P3.2作为按键的引脚。每当按下按键时,通过判断状态值来切换不同的灯亮灭模式。定时器中断函数用来实现灯的闪...

...51单片机做一个4x4矩阵键盘及四位显示电路 实现四位数加减法_百度知 ...
四位数加减,要用5位数码管才能正确显示结果,加法的结果可能出现5位。减法的结果,可能出现负数和4位值,这都需要5位数码管才能显示出来。至于实现代码,百度一下,有很多的,下来后稍加修改就可以了。不要期望得到完全符合你要求的代码,那样一方面出现几率较低,另一方面也不利于你的学习。

51单片机中用4个开关控制4个发光二极管的C语言程序设计
TX-1单片机开发板 独立键盘开关接在P3.4到P3.7口#include<reg52.h>sbit p34=P3^4;sbit p35=P3^5;sbit p36=P3^6;sbit p37=P3^7;void delay(uint z);main(){while(1){if(p34==0)P1=0xfe;if(p35==0)P1=0xfd;if(p36==0)P1=0xfb;if(p37==0)P1=0xf7;}} ...

51单片机4位数码管显示数字
1、静态显示:对于静态显示,可以直接利用IO口将对应的数字编码发送到数码管的段选引脚上。将P0口设置为0x3f,可以显示数字0。2、动态显示:对于动态显示,有两种常见的方法。一种是提高刷新频率,使得人眼无法分辨,产生显示的效果。另一种是利用锁存器件,先显示一个数字,锁定到一个数码管上,再显示...

运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序_百度...
include<reg51.h> define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到f uchar number,nn=0;uchar dat[]={2,0,1,2,1,1,4,5,8,2};void t0isr() interrupt 1 { TH0=(...

如何用51单片机产生4路PWM信号
可以用定时器做啊,我用吴 鉴 鹰单片机开发板做过的,用定时器加标志位做,可以产生很多路PWM波。

51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序。
0xc0, 0xf9, 0xa4, 0xb0, 0x99, \/\/0-4 0x92, 0x82, 0xf8, 0x80, 0x90};\/\/5-9 while(1) { P0 = SEG[n1]; \/\/P0口,外接共阳数码管的段选端 delay(2000);n1++; if(n1 > 9) n1 = 0;} } 4个(任意个)共阳数码管的段选端,接在 P0,其位选,都接电源即可。

万秀区19670932544: 运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序 -
亓腾麝珠: #include<reg51.h>#define uchar unsigned char; uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f uchar number,nn=0; uchar dat[]={2,0,1,2,1,1,4,5,8,2}; void t0isr() interrupt 1 { TH0=(...

万秀区19670932544: 请帮忙,这是运用51单片机实现4位8段LED数码管的动态数字显示的c语音程序,帮我详细注解一些关键性的句子 -
亓腾麝珠: #include#define uchar unsigned char//宏定义 #define uint unsigned int uchar count; uint disnum; sbit dula=P2^6; sbit wela=P2^7; uchar code tabledu[]={//段码表 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};...

万秀区19670932544: 用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+...

万秀区19670932544: 51单片机用汇编语言实现八个LED的全亮全灭 -
亓腾麝珠: ;以89c51单片机为例,假定用P1控制LED: IO_LED EQU P1; led_0 BIT P1.0; led_1 BIT P1.1; led_2 BIT P1.2; led_3 BIT P1.3; led_4 BIT P1.4; led_5 BIT P1.5; led_6 BIT P1.6; led_7 BIT P1.7;;定义开关LED的数据,假定LED正极一端接电源,...

万秀区19670932544: 如何使用单片机at89c51驱动4位8段数码管,如果用到芯片来驱动的,电路图如何连接? -
亓腾麝珠: 看你将四位数码管接在单片机的哪一组输出口 例如51单片机一般都是四组八位输i/o口P0,P1,P2,P3口 一般P0口是三态i/o是要接上拉电阻的.其他接口是不用接上拉电阻的.上拉电阻一般选用1k~4k7都可以保证各管脚输出的电流小于500mA就可...

万秀区19670932544: 51单片机如何控制8个led程序 -
亓腾麝珠: #include<reg51.h> 包含单片机专用头文件 #include<intrins.h> 这个是什么俺也不知道,但这个程序不需要这个头文件 void Delay10ms(unsigned int c); 自定义的延时函数声明 main() 主函数 {unsigned int LED; 建立一个数值型变量,变量名...

万秀区19670932544: 怎么用51单片机驱动4位8段数码管作一个简单的计时器?程序怎么写?要求写出每条语句的解释.要用汇编的! -
亓腾麝珠: 动态显示的要点就是先位选,送段码(这2 个先后也可换一下)延时1~5ms,关显示(即关位选).再下一位.... 我空间里的这个可以参考.http://hi.baidu.com/47okey/blog/item/180367355f735da6d1a2d328.html

万秀区19670932544: 四位八段共阴数码管怎么连接51单片机 -
亓腾麝珠: 一般8根段码线占一个完整的端口如p0口,另外4个端口如p1.0一p1.4驱动4个三极管分别接数码管的位控端段输出一般加100一200欧的电阻三极管基极要串1000欧左右的电阻 三极管NPN或PNP均可

万秀区19670932544: 请问如何用单片机实现同时驱动5个4位的8段数码管.目前单片机就15个口可用 -
亓腾麝珠: 使用译码器74HC154,4线-16线,这样一组IO就可以驱动1个4位8段了,然后再使用5个IO口来控制相应的5个.不过,这样你的亮度不会太好,单片机需要扫描160回.

万秀区19670932544: 我用51单片机画的4*4的矩阵键盘和4个8段的led相连,让第十个按钮按下显示数字10 -
亓腾麝珠: MOV A,#0B0H

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