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

 我来答
A1620921354
2020-04-09 · TA获得超过5813个赞
知道答主
回答量:388
采纳率:100%
帮助的人:16.6万
展开全部

在数码管依次排列好这一句话,首先取模,然后写显示函数,写完函数放置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的一些特殊功能口。

百度网友eff8e75
2013-04-25 · 超过31用户采纳过TA的回答
知道答主
回答量:140
采纳率:0%
帮助的人:65.9万
展开全部
将HELLO编码做成表,依次出现的话,用一个变量,查表里的第一个值也就是“H”送到数码管段选显示并用一个变量记录显示位置,假如在第一个数码管上显示,这个变量为0,然后500ms后前面查表用的变量加1,查第二个 也就是E 显示在第二个数码管上,然后依次类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxlzql2009
推荐于2017-11-25 · TA获得超过234个赞
知道小有建树答主
回答量:293
采纳率:0%
帮助的人:293万
展开全部
大概理解你的意思,是在数码管一次排列好这一句话,首先第一步需要做的是数码管的取模工作。
#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)中无限循环下去,可追问
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式