目录
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<reg51.h> //包含单片机寄存器的头文件
/****************************************
函数功能:延时约 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<strlen(str); i++){P0 = str[i]; //将字符转化为二进制值并写入P0口
}
完整代码如下:
#include<reg51.h> //包含单片机寄存器的头文件
/*************************************************
函数功能:延时约 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博客