- 博客(36)
- 收藏
- 关注
原创 编程从零基础到进阶(更新中)
在C语言中,当我们书写小数时,默认的类型是 double 类型。这意味着如果你写了一个小数,如 0.001,它默认会被解释为 double 类型的值。特别是,它通过跳过能被2和3整除的数,以及通过从5开始每次增加6来检查6k ± 1形式的数,显著减少了需要检查的数的数量。分别定义bool,char类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。第一个代码片段虽然简单,但它进行了大量的不必要的计算,特别是当处理较大的数字时。一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。
2024-07-15 20:39:31
346
1
原创 普中51单片机学习(LCD1602)
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。功能 : 设定每次定入 1 位数据后光标的移位方向 , 并且设定每次写入的一个字符是否移动。功能:设定数据总线位数、显示的行数及字型。功能:设定数据总线位数、显示的行数及字型。
2024-02-25 16:40:06
1296
原创 普中51单片机学习(DA转换)
PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此研究基于 PWM 技术的正负脉宽数控调制信号发生器具有十分重要的现实意义。
2024-02-25 11:47:26
1048
原创 普中51单片机学习(AD转换)
SAR使用“对分搜索法”产生数字量,以8位数字量为例,SAR首先产生8位数字量的一半,即10000000B,试探模拟量Vi的大小,若Vn>Vi,清除最高位,若Vn<Vi,保留最高位。在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位) 试探模拟量Vi的大小。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。常用二进制的位数表示。ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。
2024-02-24 23:02:32
1907
原创 普中51单片机学习(红外通信)
用户码或数据码中的每一个位可以是位 ‘1’ ,也可以是位 ‘0’。区分 ‘0’和 ‘1’是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式,英文简写PPM。
2024-02-24 11:40:53
1261
1
原创 普中51单片机学习(DS1302)
DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。DS1302片内有31个RAM单元,对片内RAM的操作有两种方式:单字节方式和多字节方式。
2024-02-23 14:25:45
1262
原创 普中51单片机(DS18B20温度传感器)
64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。这是12位转化后得到的12位数据,存储在DS18B20的两个8位的RAM中,高字节的前5位是符号位,如果测得的温度大于0,这5位为‘0’,只要将测到的数值乘以0.0625即可得到实际温度;DS18B20的核心功能是它可以直接读出数字的温度数值。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。
2024-02-22 21:56:42
663
原创 普中51单片机学习(EEPROM)
主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器。从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。
2024-02-22 16:17:41
2038
原创 普中51单片机学习(串口通信)
计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。方式1的波特率 =(2SMOD/32)·(T1溢出率)方式3的波特率 =(2SMOD/32)·(T1溢出率)方式2的波特率 =(2SMOD/64)· fosc。
2024-02-21 14:12:55
1544
原创 普中51单片机学习(定时器和计数器)
定时/计数器实质上是一个加1计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
2024-02-20 21:52:48
949
原创 普中51单片机学习(十四)
CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务),待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。5个中断源,两个优先级,可以实现二级中断嵌套。以上三条同时满足时,CPU才有可能响应中断。
2024-02-20 12:07:09
687
原创 普中51单片机学习(十二)
行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。
2024-02-19 18:01:13
267
原创 普中51单片机学习(十)
动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。PS:要学会看芯片资料。
2024-02-18 21:22:18
316
原创 普中51单片机学习(九)
在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。
2024-02-18 15:34:46
659
原创 普中51单片机学习(八)
(a,b):循环左移函数,a是左移的值,b是左移的位数。包含在instrins.h库函数里面。(a,b):循环右移函数,a是右移的值,b是右移的位数。包含在instrins.h库函数里面。
2024-02-18 11:25:28
1078
原创 普中51单片机学习(六)
LED,即发光二极管,是一种半导体固体发光器件。工作原理为:LED的工作是有方向性的,只有当正级接到LED阳极,负极接到LED的阴极的时候才能工作,如果反接LED是不能正常工作的。
2024-02-17 20:21:34
1146
1
原创 普中51单片机学习(二)
基础数模电知识,简单的C语言。PS:如果有不懂的直接通义千问。。。在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。
2024-02-17 11:54:09
1218
1
原创 普中51单片机学习(一)
普中51-单核-A2开发板,采用单CPU设计,用的是STC公司生产的51内核芯片STC89C52,是一款拥有64KB FLASH超大存储器的51单片机。五线四相步进电机驱动模块。使用ULN2003芯片,可驱动直流电机、五线四相步进电机等;动态数码管模块。使用74HC245芯片和74HC138译码器驱动两个四位一体共阴极数码管;LCD1602/LCD12864液晶接口。连接LCD1602或连接LCD12864液晶屏;EEPROM模块。
2024-02-16 19:34:01
552
原创 跟廖雪峰老师学习Git(持续更新)
第一步,创建一个新目录第二步,通过git init变成Git可以管理的仓库把文件添加到文本库,不要使用Windows自带的记事本!我用的是VS code创建readme.txt放入库中commit可以一次提交很多文件,所以可以add不同文件。
2024-02-14 11:09:11
702
1
原创 程序设计进阶——C语言(翁凯版)第五周
全局变量定义在函数外面的变量是全局变量;全局变量具有全局的生存期和作用域;它们与任何函数都无关,在任何函数内部都可以使用它们。代码如下f();return 0;gAll+=2;输出全局变量初始化没有做初始化的全局变量会得到0值;指针会得到NULL;只能用编译时刻已知的值初始化全局变量;它们的初始化发生在main函数之前。代码如下int gAll;f();return 0;gAll+=2;输出被隐藏的全局变量。
2024-02-05 20:50:28
582
1
原创 程序设计进阶——C语言(翁凯版)第四周
可变数组增长时,可能会涉及到频繁的内存重分配,这可能导致性能开销,特别是在连续插入或删除元素时,每次调整大小都可能涉及复制现有数据到新分配的内存区域。在资源受限的环境中,如嵌入式系统,可用内存可能非常有限,可变数组可能由于无法获得足够的连续内存而导致内存溢出或系统不稳定。
2024-02-04 15:31:45
232
1
原创 程序设计进阶——C语言(翁凯版)第三周
自定义数据类型(typedef)C语言提供了一个叫做typedef的功能来声明一个已有的数据类型的新名字。比如://Length等价于int类型使得Length成为int类型的别名。这样Length就可以代替int出现在变量定义和参数声明的地方。//String是10个字符串的数组的类型int data;}aNode;//用aNode代替struct node。
2024-02-02 22:59:30
622
原创 程序设计进阶——C语言(翁凯版)第一周
如果想把l后面的东西复制到另外一条字符串上,代码如下。同程序设计入门——C语言(翁凯版)第八周8.1.3。判断哪个被const了的标志是const在。如果申请失败则返回0,或者叫做NULL。如果想从左往右第二个l开始,代码如下。如果想要l前面那一段,代码如下。
2024-01-31 16:33:36
734
原创 程序设计入门——C语言(翁凯版)第八周
strcpy和strcat都可能出现安全问题,如果目的地没有足够的空间?在string.h中有许多处理字符串的函数。
2024-01-26 16:15:12
1022
1
原创 程序设计入门——C语言(翁凯版)第七周
可以将1、5、10、25、50和penny、nickel、dime、quarter、half-dollar各做一个数组然后一一对应。二分搜索最大的好处是效率。对于一个总数为n的数组来说,搜索的最大次数为log2n。判断一个数是不是素数,main函数代码如下。输入50,程序输出half-dollar;但是这种结构是割裂的。输入25,程序输出quarter;输入5,程序输出nickel;输入1,程序输出penny;输入10,程序输出dime;isPrime函数代码如下。构造n以内(不含)的素数表。
2024-01-24 17:15:19
1050
1
原创 程序设计入门——C语言(翁凯版)第六周
类型> 变量名称[元素数量];元素数量必须是整数;C99之前元素数量必须是编译时刻确定的字面量。数组是一种容器(放东西的东西);其中所有的元素具有相同的数据类型;一旦创建不能改变大小;*(数组中的元素在内存中依次排列)。举例:int a[10]一个int数组;10个单元:a[0],a[1],a[2],…,a[9];每个单元都是一个int型变量;可以出现在赋值的左边或右边;*在赋值的左边叫左值。关于数组的单元数组的每个单元就是数组类型的一个变量;
2024-01-22 15:45:20
930
原创 程序设计入门——C语言(翁凯版)第五周
假设输入的x是6,当i=2时,6%2=0,已经可以判断6不是素数,但是循环还会继续进行下去,直到i=6结束循环,所以可以对程序做出改动,增添一个break。假设输入的x是6,当i=2时,6%2=0,已经可以判断6不是素数,但是循环还会继续进行下去,直到i=6结束循环,所以可以对程序做出改动,增添一个break。假设输入的x是6,当i=2时,6%2=0,已经可以判断6不是素数,但是循环还会继续进行下去,直到i=6结束循环,所以可以对程序做出改动,增添一个break。求和1+1/2+1/3+···1/n。
2024-01-17 23:19:50
983
原创 程序设计入门——C语言(翁凯版)第四周
问题:让用户输入一系列正整数,最后输入-1表示输入结束,计算这些数的平均值,输入这些数的个数和平均值。这里有一个小套路,就是在x参与计算之前定义一个t,t=x,将x原本的值储存到t中,最后输出t即可。如果if的条件满足或者不满足时要执行的语句也是if或者if-else语句,这就是嵌套的if语句。计算机想一个数,用户输入一个数,如果不一样输出大了还是小了,直至猜中,输出猜了多少次。如果要表示4<x<6,应该是4<x&&x<6而不是4<x<6(4<x<6的结果是1)因为printf里的x是已经计算过的x。
2024-01-16 20:58:42
1042
原创 程序设计入门——C语言(翁凯版)第三周
当im>0时,即没有出现借位,im等于分钟数直接相减,当im<0即出现借位时,运行if后面{}内的内容,将相减后的im加上60,ih减一。i++),循环次数为n,循环结束之后i=n,而对于for(i=1;/**/是多行注释,也可用于单行。对于上次提出的计算时间差的问题,如果采用分别减的方法,然后判断是否出现借位,则以这样的思路可以的出这样的代码。在验证程序时,常使用边界数据,如有效范围两端的数据、特殊的倍数等,以及个位数、10、0、负数等。如果输入的年龄小于35,就会先输出一句话“年轻是美好的,”。
2024-01-15 00:05:36
863
原创 程序设计入门——C语言(翁凯版)第二周
先看一段代码代码分别将23+43和100-23的结果输出,但是如果想在程序运行时输入23,则需要1.有地方放输入的数字;2.有办法输入数字;3.输入的数字可以参与运算。下面一段代码int main()printf("请输入金额(元):");printf("找您%d元。return 0;输出结果为请输入金额(元): 24 (键盘输入 24 后按回车)找您 76 元。分析上段代码这一行定义了一个变量,名字是price,类型是int,初始值是0。
2024-01-13 21:58:22
1096
1
原创 程序设计入门——C语言(翁凯版)第一周
include是预编译的范畴,stdio是standard input output的缩写,.h是头文件的后缀,C语言的头文件中包括了各个标准库函数的函数原型,这句代码就是将stdio.h头文件包含进来。main函数是C语言中的主函数,所有C程序有且只有一个main函数,并从main开始运行。返回一个0值,告诉程序的结束,除了void类之外的所有函数都需要返回值。""中间包含的字符串,printf会将其原封不动地输出。在学习函数之前,都在这个框架里面写代码。
2024-01-13 11:01:06
339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人