自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 数码管显示乱码怎么解决?

LED点阵“截胡“了原本输送给数码管的段码数据,导致数码管显示不完全,我们只要通过把跳线帽从G-OE转移到OE-VCC就可以关闭LED点阵,数码管就可以正常显示了。今天在调试动态数码管时,出现了一个问题:明明输入“7”的段码,数码管上却显示“8.”,这代表a~h八段LED全部被点亮了。起初我检查了数码管原理图,确定数码管是共阴极,然后比对段码数据发现这部分也没毛病。数码管显示时轻按屏幕,亮度没有随之变化,说明内部电路无断口。然后我开始检查硬件,怀疑是数码管内部有机械损伤。轻摇听声,听数码管是否有内部脱落;

2026-02-10 15:54:05 136

原创 分析一段LCD12864代码

LCD12864为什么要叫12864呢?它的取名规则和LCD1602很像,但不完全像:1602:16代表一行16个字符显示区域;02代表两行字符显示区域。12864:128代表128列像素点;64代表64行像素点。一共是128*64个像素点。看出区别了吧,前者基于字符显示区域取名;后者直接基于像素也就是分辨率取名。但这不代表12864就没有字符显示区域了,只是它能更自由地定义字符显示区域,可以显示更大或更小的字符,又或者直接显示一个占据整个屏幕的巨大字符。

2026-02-10 08:00:00 750

原创 现代文明的脉搏——电机编年史

后来意大利人帕奇诺蒂首次发明了环状电枢(1864),极大改善了发电机输出不稳定的问题,这下发电机部分已经初具进入工业领域的能力了,但在当时这一发明并没有得到重视,直到1871年,这篇故事的主角格拉姆,改进了帕奇诺蒂的设计,首次制造出能输出高达100kW功率的发电机,后面他带着这台得意之作参加1873年的世博会了,结果又阴差阳错地发现,当永磁体转动后半圈时,由于N、S反向,磁场方向改变,感应电动势的方向也随之改变,因此产生相反的电流,这样,这个线圈两端就产生了单相的电流方向随时间变化的交流电。

2026-02-06 18:09:46 772

原创 分析一段红外遥控代码

以上是一段红外遥控的外部中断函数,它最终得到的gired_data[4]中第三个字节就对应于按键键值。要理解这段代码,我们需要先了解一下,什么是红外遥控。

2026-02-01 23:09:46 701

原创 分析一段DS18B20温度显示代码

DS18B20数字温度计,可提供9~12位分辨率的摄氏温度测量,可配置上下限报警功能(断电后不擦除),可通过DQ引脚与中央MCU连接。此外,每一块DS18B20都有一个独一无二的“身份证”——存储于ROM的8位家族码,理论上单片机可以同时控制2的8次方个DS18B20。接下来我们把目光转向那个传奇引脚——DQ,它都能传输哪些数据?这取决于DS18B20里面放了什么数据。

2026-01-30 22:05:21 995

原创 分析一段LCD1602显示字符代码

除了存储劣势外,LCD1602还极易出问题,比如LCD亮但只有一排白方块,或者干脆显示乱码。只有真正去了解这款上世纪80年代的产物,才能体会到当初人们不断追求更高更快设备的野心和追求。LCD1602我们尚可驾驭,那么更快更强的显示器我们一定会得心应手。

2026-01-28 22:22:15 741

原创 LED与LCD到底有何不同

LED与LCD作为电子领域常见的两个名词,很多人只是知道其名字,却并不明白其本质,所以容易将两者弄混。为了更清楚区分LED与LCD,本文依次从两者的渊源、原理、优缺点展开,让大家能够对LED和LCD有个更清晰的认识。

2026-01-14 23:51:59 516

原创 分析双极型三极管的外部特性

双极型三极管,它的名称一定远没有它的外形那么出名是不是直呼“这下看懂了”。双极型三极管其中的双极,是指这种三极管是电子和空穴这两种极性的载流子在工作;三极管是指具有 b——基极、c——集电极、e——发射极三个引脚。双极型三极管可用作开关,其外部特性并不复杂,但是有些教材讲着讲着会深入讲载流子、输入特性曲线等等,会把这个简单的问题一下子拔高成极难的问题,编者是讲爽了,读者就头疼了。

2026-01-13 00:56:24 542

原创 分析一段LED点阵显示图像代码

/移位寄存器时钟输入//存储寄存器时钟输入//串行数据输入上面三个引脚都属于74HC595,分别是移位寄存器时钟、存储寄存器时钟和串行数据输入,74HC595的功能是串行输入并行输出,简单来讲就是一个一个输入,一排一排输出,这里先按下不表。下面意思是,LED的列数据全权交给P0口控制,这样做可以省一个74HC595.

2026-01-02 17:45:15 988

原创 分析一段LED点阵函数

LED点阵,是由发光二极管排列组成的显示器。原理图如下正极连成一行,负极连成一列,若行置1,列置0,则此行此列相交处LED亮。LED点阵就是通过这种方式控制所有64个LED的亮灭。由于二极管的特性,要使LED亮,行和列收到的指令是不一样的。举个例子,要使第一行第一列LED亮,行列收到的信息(二进制数)分别是行——1000 0000列——0111 1111那么问题来了。

2025-12-30 22:30:42 784

原创 简化函数的两种方式

你赶到宏将军的军营时,发现他正在排兵布阵,阵型十分的奇怪// 中音区// 高音区(带点)) - 784Hz) - 880Hz) - 988Hz) - 1047Hz) - 1175Hz) - 1319Hz如果说封将军以军纪严明为特征,那么宏将军的特点就是——他手下都是特种兵!戚继光手下的戚家军藤牌、长枪、狼筅、短刀、弓箭运用得炉火纯青。宏将军手下的宏家军(#define语句)可以定义变量、字符、语句甚至函数。两位将军手下的特种兵名副其实。宏家军个个身怀绝技,其中最出名的招式就是下面这四招。

2025-12-29 21:52:20 723

原创 分析一段无源蜂鸣器代码

以上是一段质朴的蜂鸣器函数,其功能就是在开启电源时产生固定频率的蜂鸣器震荡。(没有定时器、没有中断,没有响不响和响多久的控制,只有单纯的震荡)我们将从这个基础的蜂鸣器出发,逐步给它添加新的功能,直到最终能播放简单的电子音乐。在分析这段代码之前,我们还有一个重要的问题。

2025-12-28 18:12:38 1124

原创 分析一段矩阵按键函数

前面我们讲的是行列式扫描方式,其实矩阵按键扫描还有另一种扫描方式——线翻转扫描。这种方法原理不容易理解,且实际用起来不如行列式法,所以简单提一下先将每行都置0,每列都置1,用于测试列//测试列switch(KEY_MATRIX_PORT)//保存行为0,按键按下后的列值break;break;break;break;然后把0x0f翻转,变成0xf0,这样就是每行都置1,每列都置0,用于测试行//测试行switch(KEY_MATRIX_PORT)//保存列为0,按键按下后的键值。

2025-12-27 19:13:14 993

原创 分析一段简单的按键扫描函数

当mode=1时,key被重置为1,然后判断是否有按键按下(有则消抖,然后返回按键值,并将key置0;没有则重置key为1,返回无按键)。当mode=0时,key保持上一次的值。如果上一次没有按键按下(key=1),那么当有按键按下时,消抖并返回按键值,key置0。如果按键一直保持按下,那么下一次调用时因为key=0,不会进入按键检测,直到按键松开(此时key被重置为1)才能再次检测。

2025-12-26 18:30:05 867

原创 typedef unsigned int的作用

上一点提到过,如果在代码编写过程中,突然要求修改某个类型的定义,比如我想把所有的指针定义改成字符,则只需要将typedef unsigned int* Intptr改成typedef unsigned int char,后面所有使用该类型的地方都会变成字符型。理论上无数个指针都可以用简单定义完成,但是如果中途需要修改某个类型的定义,这种一个一个的定义方式会带来灾难(这涉及到typedef的第三个优点)。以指针为例,现在让你定义一个指针ptr1和一个二级指针ptr2,你是不是会这样写。来表示年龄,可以定义。

2025-12-26 10:47:59 279

空空如也

空空如也

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

TA关注的人

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