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<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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/214596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CnosDB FDW:打通一扇通往PostgreSQL世界的大门

本文档提供了下载、安装和使用 CnosDB FDW 的简要说明。请根据您的实际需求和环境对文档进行调整。 概述 CnosDB FDW 是一个用于在 PostgreSQL 数据库中访问 CnosDB 数据库的外部数据包装器&#xff08;Foreign Data Wrapper&#xff09;。它提供了在 PostgreSQL 中查询 CnosD…

【USRP】5G / 6G 原型系统 5g / 6G prototype system

面向5G/6G科研应用 USRP专门用于5G/6G产品的原型开发与验证。该系统可以在实验室搭建一个真实的5G 网络&#xff0c;基于开源的代码&#xff0c;专为科研用户设计。 软件无线电架构&#xff0c;构建真实5G移动通信系统 X410 采用了目前流行的异构式系统&#xff0c;融合了FP…

思维模型 赫洛克效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。及时反馈&#xff0c;激发动力。 1 赫洛克效应的应用 1.1 赫洛克效应在管理中的应用 美国惠普公司是一家全球知名的科技公司&#xff0c;该公司非常注重员工的激励和认可。在惠普公司&…

[RoFormer]论文实现:ROFORMER: ENHANCED TRANSFORMER WITH ROTARY POSITION EMBEDDING

文章目录 一、完整代码二、论文解读2.1 注意力机制2.2 绝对位置编码2.3 相对位置编码2.4 旋转位置编码Long-term decayAdaption for linear attention 2.5 模型效果 三、过程实现四、整体总结 论文&#xff1a;ROFORMER: ENHANCED TRANSFORMER WITH ROTARY POSITION EMBEDDING …

操作系统·存储器管理

根据冯诺依曼原理&#xff0c;程序必须先存储在内存中&#xff0c;才可以执行。 在多道程序并发执行的系统存储器管理非常重要。 5.1 存储器管理的功能 5.1.1 主存分配与回收 要完成内存的分配和回收工作&#xff0c;要求设计者选择和确定几种策略和结构&#xff1a; 1.调入…

基于springboot + vue体育馆使用预约平台

qq&#xff08;2829419543&#xff09;获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;采用vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xf…

浅学指针(5)sizeof和strlen的进阶理解

系列文章目录 文章目录 系列文章目录前言1. sizeof和strlen的对⽐1.1 sizeofsizeof不是函数&#xff0c;是运算符 1.2 strlen1.3 sizeof 和 strlen的对⽐ 2. 数组和指针笔试题解析• sizeof(数组名)&#xff0c;sizeof中单独放数组名&#xff0c;这⾥的数组名表⽰整个数组&…

设计模式基础(1)

目录 一、设计模式的定义 二、设计模式的三大类别 三、设计模式的原则 四、主要设计模式目录 4.1 创建型模式&#xff08;Creational Patterns&#xff09; 4.2 结构型模式&#xff08;Structural Patterns&#xff09; 4.3 行为型模式&#xff08;Behavioral Patterns&…

怎样使用rtsp,rtmp摄像头低延时参于Web视频会议互动直播

业务系统中有大量的rtsp&#xff0c;rtmp等监控直播设备&#xff0c;原大部分都是单一业务监控直播之类&#xff0c;目前很多业务需要会议互动&#xff0c;需要监控参会&#xff0c;提出需摄像头拉流参会的需求&#xff0c;由于rtmp&#xff0c;rtsp原生不支持web播放&#xff…

并发编程2:Java 加锁的原理和JVM对锁的优化

为什么要加锁 在多进程的环境下&#xff0c;如果一个资源被多个进程共享&#xff0c;那么对资源的使用往往会表现的随机和无序&#xff0c;这显然是不行的。例如多个线程同时对控制台输出&#xff0c;每个线程都输出的是完整的句子但是多个线程同时同时输出&#xff0c;则输出…

如何购买阿里云服务器

作为一家全球领先的云计算服务提供商&#xff0c;阿里云提供了多种云产品和解决方案&#xff0c;包括云服务器、对象服务OSS、数据库、存储、SSL、域名和CDN等。阿里云服务器是一种灵活可扩展的云计算服务&#xff0c;适用于各种规模和类型的企业和个人用户。阿里云以其出色的性…

重启路由器可以解决N多问题?

为什么重启始终是路由器问题的首要解决方案? 在日常的工作学习工作中,不起眼的路由器是一种相对简单的设备,但这仍然是我们谈论的计算机。 这种廉价的塑料外壳装有 CPU、随机存取存储器 (RAM)、只读存储器 (ROM) 和许多其他组件。 该硬件运行预装的软件(或固件)来管理连接…

【多线程】-- 10 线程同步synchronized方法/块

多线程 6 线程同步 同步方法 由于我们可以通过private关键字来保证数据对象只能被方法访问&#xff0c;所以我们只需要针对方法提出一套机制&#xff0c;这套机制就是synchronized关键字&#xff0c;它包括以下两种用法&#xff1a; ​ synchronized方法和synchronized块 …

会声会影2023序列号免费永久序列号和激活码下载使用(附破解补丁)

前言 会声会影2023破解版免费下载是经过修改的视频剪辑软件&#xff0c;它能够免费为您提供很多功能。会声会影2023免费下载提供超过 1500 种独特的效果&#xff0c;可让您提升自我。会声会影破解版是用于是制作独一无二的视频的最强大、功能最全的软件。 它是一个简单而快速的…

【算法】滑动窗口题单——5.多指针滑动窗口醒醒⭐

文章目录 930. 和相同的二元子数组解法1——前缀和 哈希表解法2——滑动窗口 ⭐ 1248. 统计「优美子数组」1712. 将数组分成三个子数组的方案数⭐⭐⭐2444. 统计定界子数组的数目解法——多指针滑动窗口代码2——简洁写法&#xff1a;一次遍历O(1) 空间&#x1f402;⭐ 992. K…

docker部署jupyter

文章目录 1.搜索镜像2.拉取镜像3.创建挂载4.运行容器4.查看容器运行运行状态5.token查看6.访问jupyter 1.搜索镜像 docker search jupyter: 命令用于在 Docker Hub 上搜索名为 “jupyter” 的镜像。搜索结果显示了一个名为 “jupyter/datascience-notebook” 的镜像&#xff0…

掌握大型语言模型(LLM)技术:推理优化

原文链接&#xff1a;Mastering LLM Techniques: Inference Optimization | NVIDIA Technical Blog 大模型相关技术文章已整理到Github仓库&#xff0c;欢迎start! 堆叠Transformer层以创建大型模型可以获得更好的准确性、few-shot学习能力&#xff0c;甚至在各种语言任务中具有…

python 运用pandas 库处理excel 表格数据

文章目录 读取文件查看数据数据选择数据筛选创建新列计算并总结数据分组统计 读取文件 Pandas 是一个强大的数据分析库&#xff0c;它提供了丰富的数据结构和数据分析工具&#xff0c;其中之一是用于读取不同格式文件的 read_* 函数系列。以下是一个简单介绍如何使用 Pandas 读…

HDMI之数据岛

概述 发送端在发送视频信号之前,将多媒体信息通过数据岛传输给接收端。接收端通过数据岛信息获取当前分辨率(VIC),编码信息(RGB/YCR等),色彩空间,位深等等。然后对应将视频信息解码。与此同时,多余的带宽用于传输音频信息等。本文通过具体的包信息(从实验室仪器拍照…

3.5.6 轮询访问介质访问控制

目录 介质访问控制轮询协议令牌传递协议 介质访问控制 信道划分介质访问控制&#xff08;MAC Multiple Access Control&#xff09;协议&#xff1a; 基于多路复用技术划分资源网络负载重&#xff1a;共享信道效率高&#xff0c;且公平网络负载轻&#xff1a;共享信道利用率低…