51单片机应用从零开始(九)·数组

目录

1.  用字符型数组控制 P0 口 8 位 LED 流水点亮

2.  用 P0 口显示字符串常量


1.  用字符型数组控制 P0 口 8 位 LED 流水点亮

        C语言中的字符型数组是一种数据类型,它是一个由字符组成的序列,以空字符'\0'结尾。在声明字符型数组时,需要指定数组的大小,数组的大小通常是字符串长度加上一个空字符。

例如,声明一个最多存储10个字符的字符串变量可以写成:

char str[11];  // 字符数组大小应该为字符串长度加上1个空字符('\0')

在初始化字符型数组时,可以使用字符串字面量来赋值。例如:

char str[] = "Hello, world!";  // 字符数组的大小会根据字符串的长度自动确定

也可以逐个字符地赋值,例如:

char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

        在C语言中,字符型数组可以用于存储和处理字符串数据。可以使用各种字符处理函数来操作字符型数组,例如字符串拷贝函数strcpy()、字符串拼接函数strcat()、字符串比较函数strcmp()等。

        首先定义了一个字符型数组 led,其长度为 8,用于表示 8 个 LED 灯的状态。初始化为全灭状态。

        在 while 循环中,通过取反字符型数组中的第 i 个元素并输出到 P0 口来完成 LED 流水点亮。

        最后在八位灯全部亮完后,将 i 重置为 0,重新开始流水点亮。

#include //包含单片机寄存器的头文件
/**************************************** 
函数功能:延时约 60ms (3*100*200=60000μs) 
****************************************/ 
void delay60ms(void) 
{ 
 unsigned char m,n; 
 for(m=0;m<100;m++) 
 for(n=0;n<200;n++) 
 ; 
} 
/**************************************** 
函数功能:主函数
****************************************/ 
void main(void) 
{ 
 unsigned char i; 
 unsigned char code Tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义
无符号字符型数组 
 while(1) 
 { 
 for(i=0;i<8;i++) 
 { 
 P0=Tab[i];//依次引用数组元素,并将其送 P0 口显示
 delay60ms();//调用延时函数
 } 
 } 
}

2.  用 P0 口显示字符串常量

        C语言字符串常量是一组字符序列,以空字符('\0')结尾。字符串常量必须在双引号(")中间,例如:"Hello, world!"。

        在C语言中,字符串常量是一种常量表达式,可以被使用在各种操作中,包括赋值、比较、拼接等。

        另外,C语言中还有一种叫做字符常量的常量类型,它只包含一个字符,用单引号(')括起来,例如:'A'。字符常量可以用于字符变量的初始化和比较操作中。

要在51单片机上使用P0口显示字符串常量,需要按照以下步骤操作:

定义P0口为输出口。

sbit P0_0 = P0^0;    //定义P0.0口为P0口的第一个引脚
sbit P0_1 = P0^1;    //定义P0.1口为P0口的第二个引脚
sbit P0_2 = P0^2;    //定义P0.2口为P0口的第三个引脚
sbit P0_3 = P0^3;    //定义P0.3口为P0口的第四个引脚
sbit P0_4 = P0^4;    //定义P0.4口为P0口的第五个引脚
sbit P0_5 = P0^5;    //定义P0.5口为P0口的第六个引脚
sbit P0_6 = P0^6;    //定义P0.6口为P0口的第七个引脚
sbit P0_7 = P0^7;    //定义P0.7口为P0口的第八个引脚

声明字符串常量

char code str[] = "Hello, World!";    //定义字符串常量

通过循环遍历字符串的每个字符,并将其转化为二进制值,将二进制值写入P0口以显示出来。

int i;
for(i=0; i

完整代码如下:

#include //包含单片机寄存器的头文件
/************************************************* 
函数功能:延时约 150ms (3*200*250=150 000μs=150ms 
*************************************************/ 
void delay150ms(void) 
{ 
 unsigned char m,n; 
 for(m=0;m<200;m++) 
 for(n=0;n<250;n++) 
 ; 
} 
/************************************************* 
函数功能:主函数
*************************************************/ 
void main(void) 
{ 
 unsigned char str[]={"Now,Temperature is :"}; //将字符串赋给字符型全部元
素赋值
 unsigned char i; 
 while(1) 
 { 
 i=0; //将 i 初始化为 0,从第一个元素开始显示
 while(str[i]!='\0') //只要没有显示到结束标志'\0' 
 { 
 P0=str[i]; //将第 i 个字符送到 P0 口显示
 delay150ms(); //调用 150ms 延时函数
 i++; //指向下一个待显字符
 } 
 } 
}

51单片机应用从零开始(八)·循环语句(for循环、while 语句、do‐while 语句)-CSDN博客

51单片机应用从零开始(九)·数组_第1张图片

你可能感兴趣的:(嵌入式学习,51单片机,嵌入式硬件,单片机)