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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git【成神路】

目录 1.为啥要学git啊&#xff1f;&#x1f615;&#x1f615;&#x1f615; 2.版本控制软件的基本功能 &#x1f91e;&#x1f91e;&#x1f91e; 3.集中式版本控制 &#x1f936;&#x1f936;&#x1f936; 4.分布式版本控制&#x1f60e;&#x1f60e;&#x1f60e; …

一款自动帮你生成UI界面和代码的AI神器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 只要描述你想要的UI是什么样的&#xff0c;它就能帮你生成&#xff0c;是不是很神奇&#xff1f; v0使用 AI 模型根据简单的文本提示生成用户界面和代码&#xff…

Android 13.0 SystemUI电池电量为0时延迟关机的解决方案

1.简述 在13.0系统rom定制化开发中,在系统开发中可能会遇到了在电池电量为0时这时未出现立即关机的情况,产生延时关机的问题,下面就来分析这个问题所产生的原因,然后解决这个问题 2.SystemUI电池电量为0延迟关机的核心代码 /frameworks/base/services/core/java/com/andr…

含光伏发电的变电站供电系统设计

摘要 面对全球日趋严重的能源危机问题&#xff0c;可再生能源的开发和利用得到了人们的高度重视。其中辐射到地球太阳能资源是十分富饶的&#xff0c;绿色清洁的太阳能不会危害我们的生存环境&#xff0c;因而受到了人们的广泛利用。光伏发电作为可再生能源被广泛的应用&#…

关于在PyTorch中使用cudnn.benchmark= True

关于在PyTorch中使用cudnn.benchmark True 在PyTorch中&#xff0c;cudnn.benchmark True是一个参数&#xff0c;用于启用或禁用cuDNN的基准测试模式。cuDNN是一个由NVIDIA开发的深度神经网络库&#xff0c;它为GPU提供了一个优化的计算接口。 基准测试模式是cuDNN的一个特性…

informer辅助笔记:utils/timefeatures.py

定义了一套与时间特征相关的类和函数&#xff0c;旨在从时间序列数据中提取有用的时间特征&#xff0c;以支持各种时间序列分析和预测任务 from typing import Listimport numpy as np import pandas as pd from pandas.tseries import offsets from pandas.tseries.frequenc…

2023.12.3 分布式SQL查询引擎-Presto

目录 1.Prosto简介 Apache Hadoop-MapReduce Apache Hive 2.Presto的优缺点 3.个人自用启动服务 个人自用启动服务 4.presto和hive的区别 5.presto优化 1.Prosto简介 Apache Hadoop-MapReduce 优点&#xff1a;统一、通用、简单的编程模型&#xff0c;分而治之思想处理…

利用STM32内置温度传感器实现温度监测系统

STM32微控制器是一款强大的嵌入式处理器&#xff0c;具有广泛的应用领域。其中&#xff0c;一些STM32微控制器内置了温度传感器&#xff0c;可以方便地实现温度监测功能。本文将详细介绍如何利用STM32内置温度传感器实现温度监测系统&#xff0c;并提供相应的示例代码。 一、硬…

【算法思考记录】力扣1423. 可获得的最大点数[Java, 滑动窗口]

Problem: 1423. 可获得的最大点数 date: “2023-12-03” 问题重述 正难则反&#xff0c;发挥逆向思维&#xff0c;因为最终无法选择的点数是一个连续区间&#xff0c;所以问题可转换成&#xff1a;在一个给定的数组中&#xff0c;我们需要找到移除长度为 n-k 的子数组后&#…

智慧灯杆系统平台架构设计需要考虑的几个要点

智慧灯杆是一种集成了各种先进技术的道路照明设施。它不仅提供照明服务&#xff0c;还可以具有物联网技术、视频监控、环境监测、广播通讯、无线网络覆盖等多种功能。这些智能功能可以通过互联网进行控制和管理&#xff0c;从而实现智慧城市的建设。智慧灯杆能够提升城市的智能…

Wpf 使用 Prism 实战开发Day07

待办事项页面设计 效果图: 一.布局设计 页面主要分上下布局&#xff0c;分2行进行设计&#xff0c;使用 Grid.RowDefinitions 将页面分上下2行 例如&#xff1a; <Grid.RowDefinitions><RowDefinition Height"auto"/><RowDefinition/> </Gri…

React基本知识点整理

React中引入样式的2种方式 1,内联样式 import React, { Component } from react export default class index extends Component {render() {return (<div><div style{{color:"red",fontSize:"18px"}}>内联样式</div></div>)} }…

Promise自定义封装

目录 Promise构造函数 then方法封装 catch方法封装 resolve方法封装 reject方法封装 all方法封装 race方法封装 这篇文章主要是介绍如何自己封装Promise构造函数以及其相应的方法。Promise是JS中的重点&#xff0c;很多的面试都会问到。因此需要对其有比较深入地认识。看…

创意项目开源,文生图、排序/优选等...,持续开源更新!!

热烈欢迎大家在git上star&#xff01;&#xff01;&#xff01;冲鸭&#xff01;&#xff01;&#xff01; 1.dalle1在厨房家具中文场景上训练。 GitHub - leeguandong/DALLE1: dalle1在中文家具场景的微调&#xff0c;效果并不好dalle1在中文家具场景的微调&#xff0c;效果…

【JavaSE】异常(学习笔记)

一、异常概述 异常&#xff1a;程序出错了 1、异常的分类 编译时异常&#xff1a;受检异常运行时异常&#xff1a;非受检异常 2、异常体系&#xff1a;Throwable Error&#xff1a;严重问题&#xff0c;不需要处理Exception&#xff1a;异常类&#xff0c;程序本身可以处理…

MYSQL报错 [ERROR] InnoDB: Unable to create temporary file; errno: 0

起因 服务器的mysql不支持远程访问&#xff0c;在修改完相关配置后重启服务出错。 2023-12-03T10:12:23.895459Z 0 [Note] C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe (mysqld 5.7.22-log) starting as process 15684 ... 2023-12-03T10:12:23.908886Z 0 [Note…

Google Guava 事件总线工具使用详解

文章目录 事件总线特点使用 事件总线 Guava 事件总线&#xff08;EventBus&#xff09;是 Google Guava 库中的一个组件&#xff0c;用于实现发布-订阅模式的事件通信。它提供了一种简单而强大的方式&#xff0c;让不同的组件之间能够解耦、相互通信、完成事件处理。 特点 注…

C语言--每日选择题--Day33

第一题 1. 在以下给出的表达式中&#xff0c;与do-while(E)语句中的(E)不等价的表达式是&#xff08; &#xff09; A&#xff1a;(!E 0) B&#xff1a;(E > 0 || E < 0) C&#xff1a;(E 0) D&#xff1a;(E ! 0) 答案及解析 C 首先要知道(E)这个条件成立无非两种&…

nodejs基于vue的社区物业缴费报修管理系统7vwc6

运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架&#xff1a;Express/koa 前端:Vue.js 数据库&#xff1a;mysql 开发软件&#xff1a;VScode/webstorm/hbuiderx均可 数据库用MySQL,后台用vue框架 基本要求&#xff1a; 1. 对项目进行详细实际的需求分析。 2. 在网…

前端面试灵魂提问(1)

1.自我介绍 2.在实习中&#xff0c;你负责那一模块 3.any与unknow的异同 相同点&#xff1a;any和unkonwn 可以接受任何值 不同点&#xff1a;any会丢掉类型限制&#xff0c;可以用any 类型的变量随意做任何事情。unknown 变量会强制执行类型检查&#xff0c;所以在使用一个…