Jerry @DOA&INPAC, SJTU

Working out everything from the first principles.

导航

2020年1月13日 #

AVR单片机教程——LCD1602

摘要: 本文隶属于AVR单片机教程系列。 显示屏 开发板套件里有两块屏幕,大的是LCD(液晶显示),小的是OLED(有机发光二极管)。正与你所想的相反,短小精悍的比较贵,而本讲的主题——LCD1602——功能较少,使用起来也简单很多。 这块屏幕的显示是以字符为单位的。每个字符都是8像素高,5像素宽。1602 阅读全文

posted @ 2020-01-13 23:42 Jerry_SJTU 阅读(1462) 评论(0) 推荐(0) 编辑

2020年1月10日 #

AVR单片机教程——ADC

摘要: 本文隶属于AVR单片机教程系列。 ADC 计算机的世界是0和1的。单片机可以通过读取0和1来确定按键状态,也可以输出0和1来控制LED。即使是看起来不太0和1的PWM,好像可以输出0到5V之间的电压一样,达到0和1之间的效果,但本质上还是高低电平。 但是,世界上终究还是有0和1无法表示的。如果引脚上 阅读全文

posted @ 2020-01-10 00:17 Jerry_SJTU 阅读(3253) 评论(0) 推荐(4) 编辑

2020年1月9日 #

AVR单片机教程——PWM调光

摘要: 本文隶属于AVR单片机教程系列。 PWM 两位数码管的驱动方式是动态扫描,每一位都只有50%的时间是亮的,我们称这个数值为其占空比。让引脚输出高电平点亮LED,占空比就是100%。 在驱动数码管时,我们迫不得已使占空比为50%,因为不能让两位真正同时地显示不同的数字。但是,我们也可以有意地让LED的 阅读全文

posted @ 2020-01-09 00:04 Jerry_SJTU 阅读(2875) 评论(0) 推荐(1) 编辑

2020年1月7日 #

AVR单片机教程——蜂鸣器

摘要: 本文隶属于AVR单片机教程系列。 引子 定时/计数器(简称定时器)是单片机编程中至关重要的一部分,再简单的单片机也会带有定时器。 也许你会觉得我们已经在 函数中接触过定时器了,然而并不是,它只是软件地通过“浪费时间”来实现延时。我们接触定时器在数码管中, 函数可以自动完成动态扫描,好像在 函数背后又 阅读全文

posted @ 2020-01-07 23:36 Jerry_SJTU 阅读(1540) 评论(0) 推荐(0) 编辑

2020年1月6日 #

AVR单片机教程——串口接收

摘要: 本文隶属于AVR单片机教程系列。 上一讲中,我们实现了单片机开发板向电脑传输数据。在这一讲中,我们将通过电脑向单片机发送指令,让单片机根据指令控制LED。这一次,两端的TX与RX需要交叉连接,单片机TX连接串口工具RX也是需要的,因为程序会根据指令反馈信息。 为了简单起见,我们的程序只需要控制4个板 阅读全文

posted @ 2020-01-06 23:54 Jerry_SJTU 阅读(1593) 评论(0) 推荐(0) 编辑

2019年12月25日 #

做个别出心裁的圣诞礼物

摘要: 用OLED屏显示一个微信动态表情,送给心爱的Ta。 阅读全文

posted @ 2019-12-25 00:02 Jerry_SJTU 阅读(1037) 评论(3) 推荐(8) 编辑

2019年12月24日 #

电源选择电路的原理

摘要: 世界上最常用的开发板,Arduino Uno,支持多种供电方式,大致分为两类:5V直接供电与更高电压经LDO(Low Dropout Regulator,低压差线性稳压器)后供电。神奇的是,当两种电源都连接时,开发板会自动选择后者,而不会让两者冲突。 完整的原理图可以在这里查看。由于整张图比较大,我 阅读全文

posted @ 2019-12-24 17:49 Jerry_SJTU 阅读(3077) 评论(0) 推荐(0) 编辑

2019年12月23日 #

AVR单片机教程——串口发送

摘要: 本文隶属于AVR单片机教程系列。 到目前为止,我们的开发板只能处理很小量的数据:读取几个引脚电平,输出几个LED,顶多用数码管显示一个两位数字。至于输入一个指令、输出一条调试信息,甚至用 和`printf`来输入输出,在已经接触过的这些器件上是难以想象的。而本讲“串口发送”与下一讲“串口接收”,将打 阅读全文

posted @ 2019-12-23 21:50 Jerry_SJTU 阅读(2060) 评论(0) 推荐(0) 编辑

2019年12月19日 #

C++类成员默认初始值

摘要: 有时候我们会不给C类成员变量赋初始值,或是因为忘记在构造函数中指定(C11可以写在类内),或是觉得没有必要写。然而,因为觉得编译器会把变量赋成0而不写是错误的。本文通过C++标准来解释这个问题。 本文基于N3337(C++11草案)标准。 关于没有初始化器的对象,在8.5-11中有提及: If no 阅读全文

posted @ 2019-12-19 23:14 Jerry_SJTU 阅读(20727) 评论(1) 推荐(5) 编辑

AVR单片机教程——旋转编码器

摘要: 本文隶属于AVR单片机教程系列。 好久没写这个系列了。今天讲讲旋转编码器。 旋转编码器好像不是单片机玩家很常用的器件,但是我们的开发板上有,原因如下: 1. 旋转编码器挺好用的。电位器能旋转的角度有限,旋转编码器可以无限圈旋转;旋转时不连续,有卡点,适合对应离散数据。 2. 开发板上选用的旋转编码器 阅读全文

posted @ 2019-12-19 12:53 Jerry_SJTU 阅读(2604) 评论(0) 推荐(0) 编辑