2023.11.10
(一)C++语言
数组array
(1)声明数组
类型 数组名称[ 数组长度 ]
int SleepyCat[10] //声明创建一个名为 SleepyCat的数组,其中数据类型为int型,数组长度为10,即包含序列号0~9共10个元素
(2)初始化数组
①可以和(1)一起,声明并初始化
类型 数组名称[数组长度] = {初始数据}
②而对某个索引具体赋值
数组名称[索引] = 数据
(3)访问数组元素
数组名称[索引]
(4)数组长度 sizeof()
sizeof(sleepycat)/sizeof(sleepycat[0])
(5) 使用数组作为函数的参量
比如有一个函数 set1(),一个数组num1={1,2}
将该数组作为函数参量应该这么写
set1( num1[ ] ),带上 [ ]
此外,函数内部是不能进行数组长度计算的,所以如果函数内部需要使用到数组长度,应该在参量时就给出
set1 ( num1[ ] , length )
#include <stdio.h>
void main()
{
//int sleepycat[5];//创建数组,这个[]中的5是数组长度
int sleepycat[5] = { 1 , 2 , 3 , 4 , 5 };//创建并初始化数组
sleepycat[0] = 0;//修改赋值,这里[]中的0是索引,第一个元素
printf("%d\n", sleepycat[0]);//访问数组元素
printf("%d", sizeof(sleepycat)/sizeof(sleepycat[0]));//数组长度
}
(二)LED数码管
选用共阴极数码管电路图
还是太极创客,2:19
https://www.bilibili.com/video/BV164411J7GE?p=21&vd_source=20347e81d5f586ee7a33d3a6c73ea587
(1)一位7段LED数码管实现1个数字
仿真在此
https://wokwi.com/projects/381007959203969025
/*
* 让四个7段LED显示数字 =》让一个7段LED显示数字(本代码),四个分别显示数字即可
* 一个7段LED显示一个数字,这包含8个二极管的控制,每个二极管状态只需要“两”
*和“不亮”两个状态,是数字信号输入高低电平即可
* 所以逻辑就是如下:
* 一个二极管0/1状态 =》 循环8次,实现八个二极管的0/1状态,即一个数字
* = 》循环4次,实现四个数字(纠正:不需要,可以四个并行,不用循环结构)
*/
void setup()//一个数字的实现
{
pinMode(2, OUTPUT);//设置为输出模式
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop()
{
//数字3 abcdg亮
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, LOW);//e,5 , 0
digitalWrite(8, LOW);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(1000);
//其实这里就可以用011110010这串数组来表示数字“3”
//数字3灭
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(1000);
}
(三)一位7段LED数码管实现顺序1~9数字
首先,要确定0·9各个数字所对应的二极管0/1状态.
仿真在此
https://wokwi.com/projects/381015844316145665
然后是我赘余不堪的代码,本来试着用循环来写的,但是不太熟全是bug,得,头疼,今天先不写了,就这样吧xD(忽视掉下面的注释)
void setup()//1~9数字顺序的实现
{
pinMode(2, OUTPUT);//设置为输出模式
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
int delayTime = 1000;
void loop()
{
//数字1亮00110000
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, LOW);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, LOW);//d,4 , 1
digitalWrite(7, LOW);//e,5 , 0
digitalWrite(8, LOW);//f,6 , 0
digitalWrite(9, LOW);//g,7 , 1
delay(delayTime);
//数字1灭
set0(delayTime);//全归0
//数字2亮01101101
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, LOW);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, HIGH);//e,5 , 0
digitalWrite(8, LOW);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(delayTime);
//数字2灭
set0(delayTime);
//数字3 abcdg亮
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, LOW);//e,5 , 0
digitalWrite(8, LOW);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(delayTime);
//其实这里就可以用011110010这串数组来表示数字“3”
//数字3灭
set0(delayTime);
//数字4亮00110011
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, LOW);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, LOW);//d,4 , 1
digitalWrite(7, LOW);//e,5 , 0
digitalWrite(8, HIGH);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(delayTime);
//数字4灭
set0(delayTime);
//数字5亮01011011
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, LOW);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, LOW);//e,5 , 0
digitalWrite(8, HIGH);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(delayTime);
//数字5灭
set0(delayTime);
//数字6亮01011111
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, LOW);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, HIGH);//e,5 , 0
digitalWrite(8, HIGH);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(delayTime);
//数字6灭
set0(delayTime);
//数字7亮01110000
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, LOW);//d,4 , 1
digitalWrite(7, LOW);//e,5 , 0
digitalWrite(8, LOW);//f,6 , 0
digitalWrite(9, LOW);//g,7 , 1
delay(delayTime);
//数字7灭
set0(delayTime);
//数字8亮01111111
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, HIGH);//e,5 , 0
digitalWrite(8, HIGH);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(delayTime);
//数字8灭
set0(delayTime);
//数字9亮01111011
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, LOW);//e,5 , 0
digitalWrite(8, HIGH);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(delayTime);
//数字9灭
set0(delayTime);
//数字0亮
digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, HIGH);//e,5 , 0
digitalWrite(8, HIGH);//f,6 , 0
digitalWrite(9, LOW);//g,7 , 1
delay(delayTime);
//数字0灭
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(delayTime);
}
void set0(int Time)//全部电平归0
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(Time);
}
===============================日期分割线=================================
11.11
用循环和判断精简了一下10日的代码
仿真链接在此
https://wokwi.com/projects/381067050542314497
void setup()
{
pinMode(2, OUTPUT);//设置为输出模式
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
int num1[8] = {0,0,1,1,0,0,0,0};
int num2[8] = {0,1,1,0,1,1,0,1};
int num3[8] = {0,1,1,1,1,0,0,1};
int num4[8] = {0,0,1,1,0,0,1,1};
int num5[8] = {0,1,0,1,1,0,1,1};
int num6[8] = {0,1,0,1,1,1,1,1};
int num7[8] = {0,1,1,1,0,0,0,0};
int num8[8] = {0,1,1,1,1,1,1,1};
int num9[8] = {0,1,1,1,1,0,1,1};
int num0[8] = {0,1,1,1,1,1,1,0};//dp,a,b,c,d,e,f,g
//各个数字的编码
int delayTime = 1000;
void loop()
{
//数字1亮00110000
int length = sizeof(num1)/sizeof(num1[0]);
set1(num1,length,delayTime);
//数字1灭
set0(delayTime);//全归0
//数字2亮01101101
length = sizeof(num2)/sizeof(num2[0]);
set1(num2,length,delayTime);
//数字2灭
set0(delayTime);
//数字3 abcdg亮
length = sizeof(num3)/sizeof(num3[0]);
set1(num3,length,delayTime);
/*digitalWrite(2, LOW);//dp,a接在0引脚,状态是0
digitalWrite(3, HIGH);//a,1 ,1
digitalWrite(4, HIGH);//b,2 , 1
digitalWrite(5, HIGH);//c,3 , 1
digitalWrite(6, HIGH);//d,4 , 1
digitalWrite(7, LOW);//e,5 , 0
digitalWrite(8, LOW);//f,6 , 0
digitalWrite(9, HIGH);//g,7 , 1
delay(delayTime);
//其实这里就可以用011110010这串数组来表示数字“3”
//数字3灭
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(delayTime);
*/
set0(delayTime);
//数字4亮00110011
length = sizeof(num4)/sizeof(num4[0]);
set1(num4,length,delayTime);
//数字4灭
set0(delayTime);
//数字5亮01011011
length = sizeof(num5)/sizeof(num5[0]);
set1(num5,length,delayTime);
//数字5灭
set0(delayTime);
//数字6亮01011111
length = sizeof(num6)/sizeof(num6[0]);
set1(num6,length,delayTime);
//数字6灭
set0(delayTime);
//数字7亮01110000
length = sizeof(num7)/sizeof(num7[0]);
set1(num7,length,delayTime);
//数字7灭
set0(delayTime);
//数字8亮01111111
length = sizeof(num8)/sizeof(num8[0]);
set1(num8,length,delayTime);
//数字8灭
set0(delayTime);
//数字9亮01111011
length = sizeof(num9)/sizeof(num9[0]);
set1(num9,length,delayTime);
//数字9灭
set0(delayTime);
//数字0亮
length = sizeof(num0)/sizeof(num0[0]);
set1(num0,length,delayTime);
//数字0灭
set0(delayTime);
}
void set0(int Time)//全部电平归0
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(Time);
}
void set1(int num[] , int length , int Time)//设置相应的电平以显示数字
{
int i = 0; //i是数组索引
while( i <= 7)//该数组一共包含8个元素
{
int pincode = i + 2 ;//pincode是引脚号,这里索引是0,对应二极管是dp,引脚号是2
int Vcode = num[i]; //获取电平信息Vcode
if( Vcode == 1)//判断电平信息是0还是1
{
digitalWrite(pincode , HIGH);
}
else
{
digitalWrite(pincode , LOW);
}
i++;//进行下一个索引的判定
}
delay(Time);//保持时间
}