自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (16)
  • 收藏
  • 关注

原创 数据结构C语言

时隔一年了,我又准备回来写点文章,单片机知识就告一段落。接下来更新数据结构程序。。。。。。

2022-11-07 14:17:35 445 1

原创 嵌入式单片机高级篇(三)Stm32F103+OV2640摄像头

Stm32F103+OV2640摄像头一、OV2640特点:(1)高灵敏度、低电压适合嵌入式应用(2)标准的 SCCB 接口,兼容 IIC 接口(3)支持 RawRGB、RGB(RGB565/RGB555)、GRB422、YUV(422/420)和 YCbCr(422)输出格式(4)支持 UXGA、SXGA、SVGA 以及按比例缩小到从 SXGA 到 40*30 的任何尺寸(5)支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹、自动黑电平校准等自动控制功能。同时支持色饱和度、色相、伽

2021-10-14 16:31:48 12233 4

原创 嵌入式单片机高级篇(二)Stm32F103电阻触摸屏

Stm32F103电阻触摸屏1、原理:lcd屏与触摸屏中间有支撑点将两层导电涂料隔开,当某点按下时,使得两层涂料接触,平常绝缘的两层导电层在触摸点位置就有了一个接触,控制器侦测到这个接通后,其中一面导电层接通У轴方向的5Ⅴ均匀电压场,另一导电层将接触点的电压引至控制卡进行A/D转换,得到电压值后与5Ⅴ相比即可得触摸点的у轴坐标,同理得出Χ轴的坐标2、驱动芯片XPT2046:(1)采用SPI三线制通信接口(2)原理框图:利用控制逻辑控制四个MOS管导通和截止,从而实现测量按下的x轴坐标以及按下的Y

2021-10-13 10:27:08 2883

原创 嵌入式单片机高级篇(一)Stm32F103电容触摸按键

电容触摸按键一、电容触摸按键原理:1、电容触摸按键电路是如何组成的?回答:电容触摸按键的电路由一个上拉电阻、一个开关以及杂散电容组成,开关断开时,杂散电容充电,开关闭合时,杂散电容放电2、电容触摸按键如何判别按键是否被触摸?回答:根据电容的充电时间,当按键没有触摸时,电源只给杂散电容充电,充电时间较短,记为tcs,当按键被触摸时,相当于与杂散电容并联了一个额外的电容,此时电容充电时间变长,记为ts+tx,由电路里的总电容的充电时间的长短来判别按键是否被触摸。当充电时间在tcs附近时,认为按键没有

2021-10-08 14:01:14 2171

原创 C语言(二十九)赋值运算符以及表达式嵌套

赋值运算符以及表达式嵌套1、说明:(1)简单赋值运算符符号:= 格式:变量标识符=表达式功能:将一个数据(常量或表达式)赋给一个变量(2)复合赋值运算符种类: += -= *= /= %= <<= >>= &= ^= |=(3)表达式规则(4)表达式嵌套2、程序:#include<stdio.h>void main(){ char a =

2021-09-30 16:27:42 375

原创 C语言(二十八)自增自减运算符

自增自减运算符1、说明:(1)自增、自减运算符的作用是将变量的值增加 1 或者减少 1。(2)只能对变量使用,不能用于常量和表达式(3)作前缀时是先运算、后引用(++i,–i)(4)作后缀时是先引用、后运算(i++,i–)(5)++ – 不能用于常量和表达式,如 5++,(a+b)++(6)++ --结合方向: 自右向左(7)优先级:- ++ – ------>* / % ----->+ -2、程序:#include<stdio.h>void main2(){

2021-09-30 15:15:55 887

原创 C语言(二十七)算数表达式

算数表达式1、算术运算符是用来进行基本的数学运算的,它的最终计算结果仍然是数值。算术运算符和数学中的算术运算有很多相似之处,如优先级、结合性等。也有同数学中的算术运算不同的地方,比如数学中计算 1.1/2,不区分参与运算的对象是整数还是实数,最终的计算结果就是数学上真实的值;而 C 中,是要区分参与运算的对象的数据类型的.算术运算符(1)+ 加法运算符,或表示正值,如 3+2,+1(2)- 减法运算符,或表示负值,如 3-2,-8(3)* 乘法运算符,如 4*5(4)/ 除法运算符,如 5/3

2021-09-30 14:48:55 2112

原创 C语言(二十六)运算符

运算符C 语言的内部运算符很丰富,范围也很宽。运算符告诉编译器去执行特定算术或逻辑操作。 C 语言有三大运算符:算术、关系与逻辑、位操作。另外,C 还有一些特殊的运算符,用于完成一些特殊的任务。C 的运算符分类见所示:...

2021-09-30 14:25:40 91

原创 C语言(二十五)运算符表达式操作数

运算符表达式操作数1、程序:#include<stdio.h>#include<math.h>void main(){ int a = 10; const int b = 20; int c = 0; c = sqrt(a + b); //a+b:a+b是表达式,'+'是运算符,操作数就是a和b //运算符是指定要执行某项操作的一个标志符号 //操作数可以是表达式 //表达式表示一个求值的规则,由常量、变量、运算符、函数和圆括号按一定的规则组合而成 /

2021-09-30 10:59:00 945

原创 C语言(二十四)long long 与 long double

long long 与 long double1、程序:#include<stdio.h>void main(){long long num0=123456;long double num1 = 1.123456;printf("num0=%lld\n", num0);//长整数 %lld输出printf("num0sizeof=%d\n", sizeof(num0));//8字节printf("num1=%lf\n", num1);printf("num1sizeof=%d

2021-09-26 15:53:31 2374

原创 C语言(二十三)auto自动变量

auto自动变量1、自动变量,只有定义他们的时候才创建,在定义他们的函数返回时,系统回收变量所占存储空间,对于自动变量的存储空间的分配与回收是由系统自动完成的。一般情况下,不作专门说明的局部变量均是自动变量。自动变量也可用关键字auto作出说明。2、块语句中的变量,函数的形式参数都是自动变量3、程序:#include<stdio.h>void go(int num){ printf("%p\n%d\n",&num,num);//num就是一个自动变量}/*auto用于

2021-09-26 15:31:18 4293

原创 C语言(二十二)float型数据内存原理

float型数据内存原理(1)一个float型实数在内存中占4个字节,也就是32个二进制位(2)从低位到高位依次为第0位到第31位(3)这32位可以分为3个部分:符号位(第31位:0表示正数,1表示负数)、阶码(第30位到第23位,共8位)、尾数(最低23位,最多可以表示23位二进制小数,超过了则产生误差)(4)阶码:...

2021-09-26 14:51:47 1163

原创 C语言(二十一)整数

整数1、程序:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<windows.h>#include<stdlib.h>void main(){ char str0[10] = "calc"; char str1[50]; char str2[100]; int num = 5; printf("%s\n", str0); system(str0); sprintf(str1,"f

2021-09-26 11:35:29 133

原创 C语言(二十)浮点型数据的输入与输出以及浮点型数据极限

浮点型数据的输入与输出以及浮点型数据极限1、程序:#define _CRT_SECURE_NO_DEPRECATE#include<stdio.h>#include<windows.h>#include<float.h>#include<limits.h>void main(){ float fl; double db; long double ldb; scanf("%f",&fl);//float对应的是%f scan

2021-09-24 14:52:13 1502

原创 C语言(十九)浮点型数据误差

浮点型数据误差1、程序:#include<stdio.h>void main(){ float f1 =1.123456789f; float f2 =1.123456787f; if (f1 == f2) { printf("f1与f2相等\n"); } else { printf("f1与f2不相等\n"); } /*float的精度是由尾数的位数决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终隐藏着一个“1”,由于它是不变的,故不能对精

2021-09-24 10:13:31 791

原创 C语言(十八)_Bool变量

_Bool变量1、程序:#include<stdio.h>#include<stdbool.h>void main(){ /*bool变量取值false和true,0为false,非0为true;也就是bool变量非真既假,占一个字节*/ _Bool a; _Bool b; a = false; b = true; printf("a=%d\n",a); printf("b=%d\n",b); printf("sizeofa=%d\n", sizeof(a)

2021-09-24 09:36:41 303

原创 C语言(十七)数据类型转换的特殊情形(本三条规律由本人总结编写,如有错误欢迎指出)

数据类型转换的特殊情形1、程序:#include<stdio.h>void main(){/*第一种情形,数据溢出*/unsigned short a = 256;char b = a;printf("%d",b);//输出结果为0,因为b只是取得了a值的低8位 /*第二种情形,当把占字节较小的数据赋值给占字节较大的数据时,当字节较小数的符号位为0时,转换时新扩充的位被填充成0*/char c =10;unsigned short d = c;printf("\n%p",

2021-09-23 14:37:02 128

原创 C语言(十六)数据溢出

数据溢出1、程序:#include<stdio.h>#include<limits.h>void main(){ unsigned char num = 255; printf("%d", num); printf("\n%d", UCHAR_MAX); printf("\n%d",sizeof(num)); int num1 = 257; num = num1; printf("\nnum=%d", num);//因数据溢出,所以输出结果为1,num占一字节

2021-09-23 11:30:47 746

原创 C语言(十五)数据类型的强制转换

数据类型的强制转换1、说明:(1)数据类型的强制转换一般形式为:(类型名)+表达式(2)强制转换得到所需类型的中间变量,原变量类型、变量值保持不变,高类型向低类型转化时可能发生精度损失2、程序:#include<stdio.h>void main(){ int a = 1.0f;//通过赋值号自动实现数据类型转换 printf("%d",a); printf("\n%d", 1.0);//会把double类型的二进制按照整数来解析,结果为0 printf("\n%d",

2021-09-23 11:06:23 5009

原创 C语言(十四)数据类型的自动转换之隐形转换

数据类型的自动转换之隐形转换1、程序://数据类型的自动转换之隐形转换#include<stdio.h>void main(){ char ch = 'A'; //ASCII码编号为65 short num = 100; int num1 = 1000; float num2 = 1000.000; double num3 = 10000.000; printf("char1=%d,short2=%d,int4=%d,float4=%d,double8=%d\n"

2021-09-23 10:15:20 170

原创 C语言(十三)字母的大小写转换以及整数与字符的关系

字母的大小写转换以及整数与字符的关系1、程序:#include<stdio.h>#include<stdlib.h>//大小写字母转换的关键在于用小写表示的字符的ASCII代码比用大写表示的字符的ASCII代码大32void main1(){ char c; c = getchar();//获取一个字符输入 printf("%c,%d\n",c,c); //c = c + 32;//大写转小写 c=c-32; //小写转大写 printf("%

2021-09-22 16:31:52 549

原创 C语言(十二)ASCII码

ASCII码1、程序:#include<stdio.h>void main1(){ for (int i = 32; i < 127; i++)//32到126号字符是可见的 { putchar(i);//i在这里表示字符的编号,也就是ASCII码 } char ch1 = '0'; char ch2 = 0; char ch3 = '\0'; printf("\n%d,%c",ch1,ch1); //字符‘0’按照整数就是求编号48,按照字符就是字符‘0’

2021-09-22 16:02:56 2335

原创 C语言(十一)字符常量与变量

字符常量与变量//字符常量:定义,用单引号括起来的单个普通字符或转义字符,普通字符是大小写字母还有整数。#include<stdio.h>#include<stdlib.h>void main(){ putchar('A'); putchar('B'); putchar('C'); putchar('\\');//输出单\; putchar('\n'); putchar('\'');//输出单' putchar('\"');//输出单" putchar('1

2021-09-08 10:09:42 391

原创 C语言(十)浮点型数据

浮点型数据//浮点常量#include<stdio.h>void main1(){ printf("我的银行账户有%f元",1.23); printf("我的银行账户有%f元", 102.23); printf("我的银行账户有%f元", .23); printf("我的银行账户有%f元", 0.23); printf("我的银行账户有%f元", 123.);//0可以省略 printf("我的银行账户有%f元", 1.23e4);//指数必须是整数,也可以是负数 p

2021-09-08 09:59:14 299

原创 C语言(九)整型数据

整型数据#include<stdio.h>void main(){printf("%d", 10);//10是十进制整数常量,由数字0-9和正负号表示printf("%d", -1);printf("%d", 010);//八进制,由0开头,后面由0-7和正负号表示printf("%d", -010);printf("%d", 0x10);//八进制,由0x或0X开头,后面由0-7和正负号表示printf("%d", -0x10);printf("%d", 10l);//

2021-09-08 09:57:47 404

原创 C语言(八)原码补码和反码

原码补码和反码//编码就是计算机底层的0与1,如何表示数据,计算机原码表示有符号整数中的正数以及无符号整数//对于有符号的数,0代表正数,1代表负数,对于没有符号的数就没有符号位//正数与原码相同,可以理解为正数在计算机中按照原码来解析,而负数都是补码#include<stdio.h>void main(){/*int x = 1;unsigned int y = 2;printf("%x,\n%x", &x, &y);*/int x = -1;prin

2021-09-07 10:10:53 647

原创 C语言(七)数据类型

数据类型//变量的数据类型#include<stdio.h>#include<stdlib.h>void main(){printf("\n%d", sizeof(char));//字符类型的大小printf("\n%d", sizeof(short));//短整数类型的大小printf("\n%d", sizeof(int));//int类型的大小 32位电脑都是4个字节printf("\n%d", sizeof(double));//double类型的大小

2021-09-07 10:05:44 189

原创 C语言(六)进制转换

进制转换

2021-09-07 10:00:25 148

原创 C语言(五)全居变量声明与定义的差别

全居变量声明与定义的差别#include<stdlib.h>#include<stdio.h>int a;int a;//如果int a=10;int a=11;就会报错,int a没有赋值就视作声明,赋值视作定义;int a;void run();void run();//对于局部变量而言没有声明和定义的差别//全局变量就有声明和定义的差别,全局变量与函数一样,声明可以多个,但是定义仅有一个//全局变量如果有声明没有定义会自动初始化一个0值;void run(

2021-09-07 09:57:02 110

原创 C语言(四)变量在内存的字节顺序

变量在内存的字节顺序#include<stdio.h>#define 四大皆空 mainvoid 四大皆空(){short num = 1;//0000 0000 0000 0001 内存二进制//0000 0000 0000 0001 高字节在前,低字节在后(高字节就是位数较高的字节,低字节位数较低的字节,,按照位数决定)//0000 0001 0000 0000 低字节在前,高字节在后 (windows)printf("%p",&num);getcha

2021-09-07 09:40:52 425

原创 C语言(三)常量的定义

常量的定义常量的定义#include<stdio.h>#define 四大皆空 main//void main1()//{// const int x = 10;//常量,const 固定恒定的意思,常量不可以修改// // x = 5;//左值是能放在等号左边被赋值的值//// //常量只可以读不可以写,变量可读可写////#define a 100//常量// printf("%d%d", x, a);// getchar();//}void 四大皆

2021-09-07 09:36:25 262

原创 C语言(二)变量名的命名规则

变量名的命名规则变量名的命名规则:只能由字母数字下划线组成,第一位必须是字母或下划线,大小写有区别#include<stdio.h>#include<windows.h>void main1(){ int num;//定义变量一定要分配内存num = 3;num = 5;}void main(){ //变量书写格式int x;int a, b, c;//先定义再赋值x = 1;a = 2;b = 3;c = 4;int y = 4;//直接定

2021-09-07 09:20:42 1765

原创 C语言(一)系统windows功能的调用、头文件、转义字符

系统windows功能的调用、头文件、转义字符//1.系统windows功能的调用:#include<stdio.h>#include<windows.h>void main(){printf(“hello world”);//打印MessageBox(0, "你好天朝", "东哥", 0);//第一个参数设置为0,依赖的窗口编号,相当于是谁将其弹出,0是系统,第二个参数是对话框内容,第三个参数是标题,第四个参数是对话框的类型,设置成0即可ShellExecute(

2021-09-06 09:16:48 1467 1

原创 嵌入式单片机基础篇(四十二)之单总线协议-DS18B20原理与stm32F1以及51单片机程序

单总线协议-DS18B20原理与stm32F1以及51单片机程序一、DS18B20技术性能特征①、 独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。② 、测温范围 -55℃~+125℃,精度为±0.5℃。③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。④、 工作电源: 3.0~5.5V/DC (可以数

2021-08-31 15:55:57 5600 3

原创 嵌入式单片机基础篇(四十一)之NEC通讯以及stm32F1单片机程序

NEC通讯以及stm32F1单片机程序1、NEC通讯知识点补充:2、程序思路:(正点原子的程序思路)(1)开启定时器对应通道输入捕获功能,默认上升沿捕获。定时器的计数频率为1MHz,自动装载值为10000,也就是溢出时间我10ms。(2)开启定时器输入捕获更新中断和捕获中断。当捕获到上升沿产生捕获中断,当定时器计数溢出,产生更新中断。(3)当捕获到上升沿的时候,设置捕获极性为下降沿捕获(为下次捕获下降沿做准备),然后设置定时器计数值为0(清空定时器),同时设置变量RmtSta的位4值为1,标记已

2021-08-30 16:50:45 466

原创 嵌入式单片机基础篇(四十)之NEC通讯以及51单片机程序

红外NEC一、实现38KHz载波:(1)频率为38KHz,则载波周期为1/38KHz,约为26.3us(2)发射红外光的占空比一般为1/3,也就是说高电平约8.77us,低电平约为17.53us(3)高电平约8.77us+低电平约为17.53us=发射一个 红外光载波信号(4)低电平26.3us=不发射红外光载波信号二、NEC协议:如上图,一帧的数据的组成分别是:引导码、地址码、地址码的反码、数据码和数据码的反码。(1)引导码:9ms的红外光载波信号+4.5ms的不发射红外光载波信号(2)

2021-08-30 09:25:57 1105

原创 嵌入式单片机基础篇(三十九)之CAN通讯以及STM32F1单片机程序

CAN通讯以及STM32F1单片机程序1、CAN通讯基本概念:(1)定义:CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准

2021-08-26 16:42:29 12022 2

原创 嵌入式单片机基础篇(三十八)之232通讯以及51单片机程序

232通讯以及51单片机程序1、RS-232串口的电气特性:(1)RS-232串口通信最远距离是50英尺(2)RS232可做到双向传输,全双工通讯,最高传输速率20kbps(3)RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3 ∼-15V 逻辑0:+3∼+15V2、RS-232串口与单片机连接时常常需要加入电平转换芯片:3、51单片机程序:(1)主机程序:#include<reg52.h> typedef unsigned char uchar; sb

2021-08-16 14:54:32 2426 1

原创 嵌入式单片机基础篇(三十七)之485通讯以及51单片机程序

485通讯以及51单片机程序1、485接口:485(一般称作RS485/EIA-485)是隶属于OSI模型物理层的电气特性规定为2线,半双工,多点通信的标准。它的电气特性和RS-232大不一样。用缆线两端的电压差值来表示传递信号。RS485仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。2、RS485的特点包括:(1)接口电平低,不易损坏芯片。RS485的电气特性:逻辑“1”以两线间的电压差为+(26)V表示;逻辑“0”以两线间的电压差为-(26)V表示。接口信号电平比RS232降

2021-08-16 14:14:02 5927 2

原创 嵌入式单片机基础篇(三十六)之STM32F1SPI标准接口程序以及模拟SPI标准接口程序讲解

STM32F1SPI标准接口程序以及模拟SPI标准接口程序讲解一、SPI标准接口初始化:1、SPI 内部结构简明图2、上一篇文章提到,spi标准协议包含4条信号线、时钟相位、时钟极性、数据单字节从高位到低位传输、片选信号可以由软件控制,也可以由硬件控制,依据以上内容初始化SPI标准接口程序如下:void SPI2_Init(void){GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure;RCC_APB2

2021-08-09 17:11:48 4059

STM32F1 RTC 时钟.xmind

STM32F1 RTC 时钟.xmind

2021-09-27

STM32F1 RTC 时钟.pdf

STM32F1 RTC 时钟.pdf

2021-09-27

I2C串行总线概述.doc

I2C串行总线概述

2021-07-29

来源于网络的输入捕获实验.zip

来源于网络的输入捕获实验

2021-06-06

51单片机定时器计数器的原理与程序.docx

51单片机定时器计数器的原理与程序

2021-06-01

51单片机看门狗程序.txt

51单片机看门狗程序

2021-05-31

51单片机看门狗的原理.docx

51单片机看门狗原理

2021-05-31

STM32F1外部中断实验程序.zip

STM32F1外部中断实验程序

2021-05-29

51单片机外部中断原理与程序.docx

外部中断原理与程序

2021-05-29

基于stm32F103单片机按键扫描程序.xls

基于stm32F103单片机的按键扫描程序

2021-05-26

c语言学习笔记数组与指针.docx

c语言学习笔记

2021-03-24

c语言学习笔记劫持函数劫持函数.docx

c语言学习笔记劫持函数

2021-03-24

函数指针学习笔记.docx

函数指针学习笔记.docx

2021-03-24

指向指针的指针.docx

指向指针的指针.docx

2021-03-24

基于正点原子stm32的串口配置.docx

基于正点原子stm32的串口配置.docx

2021-03-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除