赤峰网站建设建站公司深圳网站建设定制
2026/1/22 6:48:25 网站建设 项目流程
赤峰网站建设建站公司,深圳网站建设定制,wordpress下载管理,网站建设者html目录 1、介绍1位数码管模拟值实验2、实验现象3实验材料3.1步骤3.2优化代码 4、函数介绍以segPins numCodes numCodes#xff08;#xff09;这三个为例segPinsnumCodesdisplayNumber()简化的 loop 函数 4.1二维数组的简单上机代码运行结果概念解释 总结查找数组中的最大值及其…目录·1、介绍1位数码管模拟值实验2、实验现象3实验材料3.1步骤3.2优化代码4、函数介绍以segPins numCodes numCodes这三个为例segPinsnumCodesdisplayNumber()简化的 loop 函数4.1二维数组的简单上机代码运行结果概念解释总结查找数组中的最大值及其位置程序逻辑1、介绍1位数码管模拟值实验一位数码管是一种简单的显示器件由多个发光二极管以特定形状组合而成主要用于显示单个数字或简单符号。以下是详细介绍内部结构一位数码管通常由 8 个发光二极管组成其中 7 个用于构成数字 0-9 的字形分别标记为 A、B、C、D、E、F、G另一个为小数点 DP。分类及工作原理按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM) 的数码管共阳数码管在应用时应将公共极 COM 接到 5V当某一字段发光二极管的阴极为低电平时相应字段就点亮当某一字段的阴极为高电平时相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM) 的数码管共阴数码管在应用时应将公共极 COM 接到地线 GND 上当某一字段发光二极管的阳极为高电平时相应字段就点亮当某一字段的阳极为低电平时相应字段就不亮。本次实验我们基于共阴极数码管来实现。2、实验现象数码管模拟值实验3实验材料Arduino 板1个USB下载数据线1根面包板1个杜邦线若干、1k 电阻 8 个共阴极数码管1个3.1步骤首先我们要弄清楚共阴极数码管的10个引脚各自的功能将数码管的正面朝向我们自上而下从左往右的引脚分别定义成1~10其中 3 号引脚和 8 号引脚都是公共端用于接入电路中的阴极也叫GND数码管中共有8个发光二极管分别表示成 a ~ hh 为小数点各个引脚所控制的发光二极管图中也标出来了1 - g2 - f4 - a5 - b6 - e7 - d9 - c10 - h本文这里采用 8 号引脚作为 GND连接端3号引脚功能也是一样的每个发光二极管的引脚均接入一个1k的电阻防止电流过大烧毁二极管。按照发光二极管从 a ~ h 的顺序分别接上arduino主板上的数字口 2 ~ 8和10。最终的接线图如下建议先在Fritzing模拟一下在前面博客上有如何使用fritzing连接好后代码导入int a 2; // 定义数字接口2 连接a int b 3; // 定义数字接口3 连接b int c 4; // 定义数字接口4 连接c int d 5; // 定义数字接口5 连接d int e 6; // 定义数字接口6 连接e int f 7; // 定义数字接口7 连接f int g 8; // 定义数字接口8 连接g int h 9; // 定义数字接口9 连接h也就是数码管中的dp void setup() { int i; for(i2;i9;i){ pinMode(i,OUTPUT); // 设置2~9号引脚为输出模式 } } void loop() { digital_0(); // 显示数字0 delay(1000); digital_1(); // 显示数字1 delay(1000); digital_2(); // 显示数字2 delay(1000); digital_3(); // 显示数字3 delay(1000); digital_4(); // 显示数字4 delay(1000); digital_5(); // 显示数字5 delay(1000); digital_6(); // 显示数字6 delay(1000); digital_7(); // 显示数字7 delay(1000); digital_8(); // 显示数字8 delay(1000); digital_9(); // 显示数字9 delay(1000); } // 显示数字0共阳极低电平点亮高电平熄灭 void digital_0(void){ digitalWrite(a,LOW); // a段亮 digitalWrite(b,LOW); // b段亮 digitalWrite(c,LOW); // c段亮 digitalWrite(d,LOW); // d段亮 digitalWrite(e,LOW); // e段亮 digitalWrite(f,LOW); // f段亮 digitalWrite(g,HIGH); // g段灭0的g段不亮 digitalWrite(h,LOW); // dp段亮如需熄灭可改为HIGH } // 显示数字1 void digital_1(void){ digitalWrite(a,HIGH); // a段灭 digitalWrite(b,LOW); // b段亮 digitalWrite(c,LOW); // c段亮 digitalWrite(d,HIGH); // d段灭 digitalWrite(e,HIGH); // e段灭 digitalWrite(f,HIGH); // f段灭 digitalWrite(g,HIGH); // g段灭 digitalWrite(h,LOW); // dp段亮 } // 显示数字2 void digital_2(void){ digitalWrite(a,LOW); // a段亮 digitalWrite(b,LOW); // b段亮 digitalWrite(c,HIGH); // c段灭 digitalWrite(d,LOW); // d段亮 digitalWrite(e,LOW); // e段亮 digitalWrite(f,HIGH); // f段灭 digitalWrite(g,LOW); // g段亮 digitalWrite(h,LOW); // dp段亮 } // 显示数字3 void digital_3(void){ digitalWrite(a,LOW); // a段亮 digitalWrite(b,LOW); // b段亮 digitalWrite(c,LOW); // c段亮 digitalWrite(d,LOW); // d段亮 digitalWrite(e,HIGH); // e段灭 digitalWrite(f,HIGH); // f段灭 digitalWrite(g,LOW); // g段亮 digitalWrite(h,LOW); // dp段亮 } // 显示数字4 void digital_4(void){ digitalWrite(a,HIGH); // a段灭 digitalWrite(b,LOW); // b段亮 digitalWrite(c,LOW); // c段亮 digitalWrite(d,HIGH); // d段灭 digitalWrite(e,HIGH); // e段灭 digitalWrite(f,LOW); // f段亮 digitalWrite(g,LOW); // g段亮 digitalWrite(h,LOW); // dp段亮 } // 显示数字5 void digital_5(void){ digitalWrite(a,LOW); // a段亮 digitalWrite(b,HIGH); // b段灭 digitalWrite(c,LOW); // c段亮 digitalWrite(d,LOW); // d段亮 digitalWrite(e,HIGH); // e段灭 digitalWrite(f,LOW); // f段亮 digitalWrite(g,LOW); // g段亮 digitalWrite(h,LOW); // dp段亮 } // 显示数字6 void digital_6(void){ digitalWrite(a,LOW); // a段亮 digitalWrite(b,HIGH); // b段灭 digitalWrite(c,LOW); // c段亮 digitalWrite(d,LOW); // d段亮 digitalWrite(e,LOW); // e段亮 digitalWrite(f,LOW); // f段亮 digitalWrite(g,LOW); // g段亮 digitalWrite(h,LOW); // dp段亮 } // 显示数字7 void digital_7(void){ digitalWrite(a,LOW); // a段亮 digitalWrite(b,LOW); // b段亮 digitalWrite(c,LOW); // c段亮 digitalWrite(d,HIGH); // d段灭 digitalWrite(e,HIGH); // e段灭 digitalWrite(f,HIGH); // f段灭 digitalWrite(g,HIGH); // g段灭 digitalWrite(h,LOW); // dp段亮 } // 显示数字8 void digital_8(void){ digitalWrite(a,LOW); // a段亮 digitalWrite(b,LOW); // b段亮 digitalWrite(c,LOW); // c段亮 digitalWrite(d,LOW); // d段亮 digitalWrite(e,LOW); // e段亮 digitalWrite(f,LOW); // f段亮 digitalWrite(g,LOW); // g段亮 digitalWrite(h,LOW); // dp段亮 } // 显示数字9 void digital_9(void){ digitalWrite(a,LOW); // a段亮 digitalWrite(b,LOW); // b段亮 digitalWrite(c,LOW); // c段亮 digitalWrite(d,LOW); // d段亮 digitalWrite(e,HIGH); // e段灭 digitalWrite(f,LOW); // f段亮 digitalWrite(g,LOW); // g段亮 digitalWrite(h,LOW); // dp段亮 }这是共阳极数码管的代码3.2优化代码原代码通过多个独立函数实现数字显示代码冗余较高。可优化为 “段码表 通用显示函数”减少重复代码示例如下// 共阳极数码管段码表0-9对应a,b,c,d,e,f,g,dp的电平0LOW(亮)1HIGH(灭) byte numTable[10][8] { {0,0,0,0,0,0,1,0}, // 0 {1,0,0,1,1,1,1,0}, // 1 {0,0,1,0,0,1,0,0}, // 2 {0,0,0,0,1,1,0,0}, // 3 {1,0,0,1,1,0,0,0}, // 4 {0,1,0,0,1,0,0,0}, // 5 {0,1,0,0,0,0,0,0}, // 6 {0,0,0,1,1,1,1,0}, // 7 {0,0,0,0,0,0,0,0}, // 8 {0,0,0,0,1,0,0,0} // 9 }; int pins[8] {2,3,4,5,6,7,8,9}; // a,b,c,d,e,f,g,dp对应的引脚 void setup() { for(int i0;i8;i) pinMode(pins[i],OUTPUT); } void loop() { for(int num0;num10;num){ // 循环显示0-9 showNum(num); delay(1000); } } // 通用显示函数 void showNum(int num){ for(int i0;i8;i){ digitalWrite(pins[i], numTable[num][i]); // 直接查表输出电平 } }4、函数介绍以segPins numCodes numCodes这三个为例segPins把原来分散定义的 a-h 引脚整合到一个数组中方便循环操作减少重复代码numCodes1、二维数组第一维表示数字0-9第二维表示对应段的电平2、把原来 10 个函数里的电平值集中存储一目了然修改时只需改数组值displayNumber()接收数字参数先做范围检查避免数组越界通过循环遍历段引脚和段码自动设置每个引脚的电平简化的 loop 函数用一个 for 循环遍历 0-9调用通用显示函数替代原来重复调用 10 个函数的写法4.1二维数组的简单上机演示效果1.二维数组的定义和初始化模拟一个 3 行 4 列的数字表格2. 用嵌套循环遍历并打印整个二维数组3. 单独访问二维数组中的某个元素代码#include stdio.h int main() { // 1. 定义并初始化一个3行4列的二维数组行0-2列0-3 // 可以理解为3个行数组每个行数组包含4个元素 int nums[3][4] { {10, 20, 30, 40}, // 第0行 {50, 60, 70, 80}, // 第1行 {90, 100, 110, 120}// 第2行 } // 2. 遍历并打印整个二维数组嵌套循环外层控制行内 层控制列 printf( 遍历整个二维数组 \n); // 外层循环遍历每一行i表示行号 for (int i 0; i 3; i) { // 内层循环遍历当前行的每一列j表示列号 for (int j 0; j 4; j) { printf(%d\t, nums[i][j]); // 输出当 前元素\t是制表符排版更整齐 } printf(\n); // 每一行打印完后换行 } // 3. 单独访问某个具体元素行号和列号从0开始计数 printf(\n 单独访问指定元素 \n); printf(第1行第2列的元素nums[1][2] %d\n, nums[1][2]); // 输出70 printf(第2行第0列的元素nums[2][0] %d\n, nums[2][0]); // 输出90 // 4. 修改二维数组中的元素 nums[0][1] 200; // 将第0行第1列的元素从20改为200 printf(\n修改后第0行第1列的元素nums[0][1] %d\n, nums[0][1]); // 输出200 } return 0;运行结果概念解释1.二维数组的本质可以理解为 “数组的数组”比如nums[3[4]就是 3 个长度为 4 的一维数组。下标规则行和列的下标都从0开始nums[i][j]中i是行号j是列号。嵌套循环遍历外层循环控制行内层循环控制列是操作二维数组最常用的方式。初始化注意如果初始化时元素数量不足未赋值的元素会默认初始化为0总结二维数组定义格式数据类型 数组名[行数][列数]比如int nums[3][4]。访问元素格式 数组名[行下标][列下标]下标从 0 开始计数。遍历二维数组通常用嵌套 for 循环外层控行、内层控列。查找数组中的最大值及其位置题目描述编写一个程序从用户输入中获取8个整数找出数组中的最大值并输出该最大值及其在数组中的位置下标。如果最大值有多个输出第一个出现的位置。int main() { int arr[8]; int i; int max_value; // 存储最大值 int max_index; // 存储最大值的位置下标 // 输入8个整数 printf(请输入8个整数\n); for(i 0; i 8; i) { scanf(%d, arr[i]); } // 初始化最大值和位置 max_value arr[0]; max_index 0; // 查找最大值及其位置 for(i 1; i 8; i) { if(arr[i] max_value) { max_value arr[i]; max_index i; } } // 输出结果 printf(数组中的最大值为%d\n, max_value); printf(最大值首次出现的位置下标为%d\n, max_index); return 0; }结果程序逻辑定义一个长度为8的整型数组读取用户输入的8个整数遍历数组比较每个元素找出最大值记录最大值及其首次出现的位置输出结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询