用89c51单片机写一个数码管显示HELLO的程序,是在一个七段数码管上依次出现几个字母

如题所述

在数码管依次排列好这一句话,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去

代码如下:

#include; //用的是单独操作,没有用总线

sbit led1 = P1^0;

sbit led2 = P1^1;

sbit led3 = P1^2;

sbit led4 = P1^3;

sbit led5 = P1^4;

sbit led6 = P1^5;

sbit led7 = P1^6; //看清楚自己的管脚,不一定对应,这里采用P0对应段选

code unsigned char led_paly[5] = {0x76,0x79,0x38,0x38,0x5c};// H E L L O

void delay(unsigned int um)//延时函数

{

int i,j;

for(i = 0;i < um;i++)

{

for(j = 0;j < 200;j++);

}

}

void display()

{

P0 = led_paly[0];//显示H

led2 = 0;

delay(50);

led2 = 1;

P0 = led_paly[1];//显示E

led3 = 0;

delay(50);

led3 = 1;

P0 = led_paly[2];//显示L

led4 = 0;

delay(50);

led4 = 1;

P0 = led_paly[3];//显示E

led5 = 0;

delay(50);

led5 = 1;

P0 = led_paly[4];//显示O

led6 = 0;

delay(50);

led6 = 1;

}

void main(void)

{

while(1)

{

display();

}

}

扩展资料:

51单片机的接口作用

P0口:可以被定义为数据/地址的低八位,能够用于外部程序/数据存储器。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:标准输入输出I/O,P1口管脚写入1后,被内部上拉为高,可用作输入。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:既可用于标准输入输出I/O,也可用于外部程序存储器或数据存储器访问时的高八位地址。

P3口:既可以做标准输入输出I/O,也可作为AT89C51的一些特殊功能口。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-25
将HELLO编码做成表,依次出现的话,用一个变量,查表里的第一个值也就是“H”送到数码管段选显示并用一个变量记录显示位置,假如在第一个数码管上显示,这个变量为0,然后500ms后前面查表用的变量加1,查第二个 也就是E 显示在第二个数码管上,然后依次类推
第2个回答  推荐于2017-11-25
大概理解你的意思,是在数码管一次排列好这一句话,首先第一步需要做的是数码管的取模工作。
#include<reg51.h>
//这边为了让你看的更容易,用的是单独操作,没有用总线
sbit led1 = P1^0;
sbit led2 = P1^1;

sbit led3 = P1^2;

sbit led4 = P1^3;

sbit led5 = P1^4;

sbit led6 = P1^5;

sbit led7 = P1^6;

//看清楚自己的管脚,不一定对应,这里采用P0对应段选
code unsigned char led_paly[5] = {0x76,0x79,0x38,0x38,0x5c};

// H E L L O
void delay(unsigned int um)//延时函数
{
int i,j;
for(i = 0;i < um;i++)
{
for(j = 0;j < 200;j++);
}
}
void display()
{
P0 = led_paly[0];//显示H
led2 = 0;
delay(50);
led2 = 1;

P0 = led_paly[1];//显示E
led3 = 0;
delay(50);
led3 = 1;

P0 = led_paly[2];//显示L
led4 = 0;
delay(50);
led4 = 1;

P0 = led_paly[3];//显示E
led5 = 0;
delay(50);
led5 = 1;

P0 = led_paly[4];//显示O
led6 = 0;
delay(50);
led6 = 1;
}
void main(void)
{
while(1)
{
display();
}
}
未验证,应该差不多,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去,可追问本回答被网友采纳

用89c51单片机写一个数码管显示HELLO的程序,是在一个七段数码管上依次...
在数码管依次排列好这一句话,首先取模,然后写显示函数,写完函数放置while(1)中无限循环下去 代码如下:include; \/\/用的是单独操作,没有用总线 sbit led1 = P1^0;sbit led2 = P1^1;sbit led3 = P1^2;sbit led4 = P1^3;sbit led5 = P1^4;sbit led6 = P1^5;sbit led7 = P1^6...

用89c51单片机 6个数码管循环显示HELLO的程序 及仿真电路图
TR1=1;TR0=1;ET0=1;ET1=1;EA=1;while(1);}

用89c51单片机做一个八段共阳数码管上显示 HELLO!的程序
楼上正解,HELLO的码段可以自己编写,看数码管的7段结构图,也就是看看abcdefg在数码管中哪个位置,显示出HELLO该哪些段亮灭,编码。单片机开发问题或许我这可以帮助的。

89c51单片机的数字钟程序?
40H~47H :显示管,每位暂存器,存放要显示的数码的地址。可根据地址加1,实现该位数加1; 并且低4位可以代表管子要显示的值(42H、45H除外)。 48H :要显示的位值(0~7,由译码器翻译出) 49H :每位每次刷出时要显示的时间0~256us 4A :20次定时,的次数计数器 4BH,4CH :小时十位进位刷0,时,小时两位数的...

用89c51单片机和4位数码管做一个动态显示的时钟,程序怎么编写,求大神帮 ...
include <reg51.h> \/\/ 显示 0 1 2 3 4 5 6 7 , 8位数码管 试试 char code table[] = { 0x3f, 0x06, 0x5b, 0x4f,0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c,0x39, 0x53, 0x79, 0x71};void delayms(int k);void main(){ while (1){ char i = 0...

[高分]怎样用89c51单片机控制LED数码管显示 不要C源程序 还有怎么连接...
给你一个2 位共阴数码管,动态显示的程序 。晶振、复位及电源电路未画出,你自己补上。COUNT EQU 50H SP1 EQU P3.6 SP2 EQU P3.7 ORG 0 AJMP MAIN ORG 30H MAIN: MOV COUNT,#0 K1: ACALL DISP JB SP1,K2 LCALL DISP JB SP1,$;-3 LCALL DLY LCALL DISP JNB SP1,$-3 INC ...

...要求89C51单片机实现4位7段数码管动态和静态显示,希望大神能给写个...
\/ 按键静态显示不同数字,即按1键显示1 动态显示:数字移动显示 \/ include<reg52.h> define uint unsigned int define uchar unsigned char sbit Dp=P0^6;sbit d1=P2^4;sbit d2=P2^5;sbit d3=P2^6;sbit d4=P2^7;uchar code table[]= {0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0x...

89c51单片机汇编程序 将累加器A中的八位二进制数据采用七段数码管以...
用查表法 mov dptr,#shuzi movx a,@a+dptr mov p0,a shuzi:DB 005H,0DDH,046H,054H,09CH,034H,024H,05DH,004H,014H,0FFH;;根据数码管段位自己计算从0到9的数值

89c51单面机c语言时钟控制器编程
89c51单面机c语言时钟控制器编程、、、就是在数码管上每隔一秒钟显示该秒对应的数字、、当显示第60秒时、、蜂鸣器响一下、、、依次循环就是一个简易的分秒计时器用c语言怎么编程啊那... 89c51单面机c语言时钟控制器编程、、、就是在数码管上每隔一秒钟显示该秒对应的数字、、当显示第60秒时、、蜂鸣器响一下、...

89c51单片机定时计数器的工作原理?
单片机C51计数器要求:编写一个计数器程序,将T0作为计数器来使用,对外部信号计数,将所计数字显示在数码管上。 该部分的硬件电路如图所示,U1的P0口和P2口的部份引脚构成了6位LED数码管驱动电路,数码管采用共阳型,使用PNP型三极管作为片选端的驱动,所有三极管的发射极连在一起,接到正电源端,它...

相似回答