- 博客(12)
- 收藏
- 关注
原创 STM32单片机控制LED闪烁+蜂鸣器(电路分析+代码分析)
(1)低电平驱动电路:PA0低电平驱动电路图中的电阻R1作用:a.防止LED因为电流过大而烧毁;b.调节LED灯亮度(2)高电平驱动电路:PA0高电平驱动注:因为高电平弱驱动,低电平强驱动的规则。在很多单片机接法中大多采用第一种方法。
2025-02-01 13:12:21
1692
原创 定时器介绍
定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号每隔“一秒”,计数单元的数值就增加一,当计数单元数值增加到"设定的闹钟提醒时间”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使程序跳转到中断服务函数中执行。
2024-11-21 10:26:01
720
原创 矩阵按键简述+简单密码锁
我第一次弄这个代码的时候觉得while(1)没什么用所以去掉了,然后LCD第二行一闪一闪的(我还以为是LCD坏了)LCD_ShowNum(2,1,password,4);//LCD更新显示0。一共四行四列,加入想控制S5,那么只需要把P16赋值为0,其余行数赋值为1.password*=10;//依次左移,输入设定的密码。password=0;P13赋值为0,其余列赋值为1.3.LCD复位更新显示0。
2024-11-17 21:06:12
598
原创 LCD1602
/ 将二进制数1010(十进制的10)显示在第二行第四列,长度为8位。// 将十六进制数0xAA显示在第二行第四列,长度为8位。的原因在于C语言中的整数默认是以十进制形式存储和处理的,而不是二进制。正确的做法是将二进制数转换为十进制数或十六进制数,然后传递给显示函数。这样的值时,它实际上是被当作十进制数来处理的,而不是二进制数。,你应该先将它转换为十进制或十六进制数,然后调用显示函数。第一行第9列显示数字123,数字指定长度为3位。如果你想在LCD1602上显示二进制数。,这显然不是想显示的二进制数。
2024-11-16 13:39:02
457
原创 模块化编程
模块化编程:把各个模块放在不同的.c文件中,在.h文件里面提供外部可调用函数的声明。其他.c文件想使用其中的代码时,只需要#include"XXX.h"文件即可。传统化编程:所有函数都放在main.c里面,使用的模块多,不利于代码的组织和管理。.h:可被外部调用的函数,变量的声明。.c:函数,变量的声明。Delay函数模块化。
2024-11-16 12:45:27
134
原创 数码管显示(静态+动态)
如果我们想挑一位显示数字(假设是第一个),那么由于这个是共阴极电路,我们只需要把12,9,8,6 分别接0,1,1,1就可以。假设现在是共阳极,那么A段LED的阳极就会连接到3,8号引脚(其实3,8号是一个引脚,只不过是由两个),阴极连接到7号引脚。首先,第三个数码管LED6(对应Y5,二进制为101)显示6,那么我们需要让acdefg亮。eg:CBA=001,那么对应的就是Y1口,因为取反,所以LED2为低电平,点亮。注:这里的Location指的是第几个数码管,Number指的是显示什么数字。
2024-11-15 23:20:50
627
原创 习题4(判断数字位数)
2.原来的代码中的循环是先/10,再加1,也就是说第一个循环得到n=1。然而现在n初始已经给为1,所以在循环之前需要先把x/10。1.因为数字0的位数为1,所以可以直接把n的初值设为1。问题:没有考虑到数字0的问题。
2024-11-09 12:53:55
237
原创 习题3(进制转化)
现在小明把BCD的0x12看作是二进制的0001 0010,所以就换算成了十进制的2^4+2=18.现在想要输入十进制的18,得到十六进制的12。所以说可以直接把输入的数字化为16进制,得到正确数字。//输出一个十六进制数。法2:scanf("%d",&x);//读入一个十进制数。法1:(18/16)*10+(18%16)
2024-11-09 09:46:29
684
原创 习题1(厘米换算英尺英寸)
2.一开始想用取余,也就是%求inch,但是注意%运算的前后两个数字要求为整型数字(如 int、long 等),不能用于浮点数(如 float、double)。1.inch满12就进位1foot,inch和foot不是单独的两个随机大小的数字。所以cm/30.48之后得到的整数为foot值。
2024-11-08 09:41:24
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅