摘要:本文隶属于AVR单片机教程系列。 背景(一) 寒假里做了一个灯带控制器: 理想情况下我应该在一个星期内完成这个项目,但实际上它耗费了我几乎一整个寒假,因为涉及到很多未曾尝试的方案。在这种不是很赶时间的、可以自定目标、自由发挥的项目中,我喜欢这么做。 简要介绍一下这个项目。硬件部分: 12V直流电源供
阅读全文
摘要:新款AVR单片机ATtiny3217,能用CCL实现SPI的MOSI、SCK和定时器输出的组合逻辑,直接点亮单线协议的RGB灯WS2812B——没有外部器件!
阅读全文
摘要:综述 本文是蓝牙音箱的手册。 蓝牙音箱作为礼物,面向的是用户,但是这位用户同时又是开发者,因此音箱的设计原则是实现一定的功能,并提供足够的扩展接口、开放设计文档。 资料下载:提取码0910。 硬件 音箱由外壳、3块PCB、扬声器、面包板、若干连接线和电源适配器组成。 外壳包括亚克力材质的底板、面板和
阅读全文
摘要:一列LED,新手拿来做跑马灯,高手拿来做摇摇棒!相貌平平的棒,摇动起来竟显示出渐变色的图案!本文将从硬件、驱动、应用等角度,带你领略摇摇棒的技术核心与设计思想。
阅读全文
摘要:拉阅读量第二弹,希望你能有所收获。 "我不想听你放那么多屁,我只想知道怎么加速 !" digitalWrite有多慢 这个程序测试调用10次某语句需要的时间。在山寨版Uno Rev3上运行,程序输出: 第一组空函数是对照组, 的结果表明 函数没有什么overhead。第二组 的成绩为36μs,无所谓
阅读全文
摘要:写这篇文章,纯粹是想为博客拉点点击量。在博客园,游客访问好像是不计入阅读量的,而作为一个十八线博主,注册用户的访问应该以搜索引擎为主,博客园首页为次,个位数的粉丝就别谈了。 所以,希望各位从搜索引擎点进来的朋友,多多评论,有问题咱们一起讨论。 我写过AVR单片机教程,设计过自己的Arduino板,希
阅读全文
摘要:本文隶属于AVR单片机教程系列。 在系列教程的最后一篇中,我将向你推荐3个可以深造的方向:C++、事件驱动、RTOS。掌握这些技术可以帮助你更快、更好地开发更大的项目。 本文涉及到许多概念性的内容,如果你有不同意见,欢迎讨论。 关于高层 这一篇教程叫作“走向高层”。什么是高层? 我认为,如果寥寥几行
阅读全文
摘要:本文隶属于AVR单片机教程系列。 在用DAC做了一个稍大的项目之后,我们来拿ADC开开刀。在本讲中,我们将了解0.96寸OLED屏,移植著名的U8g2库到我们的开发板上,学习在屏幕上画直线的算法,编写一个示波器程序,使用EEPROM加入人性化功能,最后利用示波器观察555定时器、放大电路、波形变换电
阅读全文
摘要:本文隶属于AVR单片机教程系列。 单片机的应用场景时常涉及到模拟信号。我们已经会使用ADC把模拟信号转换成数字信号,本讲中我们要学习使用DAC把数字信号转换成模拟信号。我们还将搭建一个简单的功率放大器电路,用DAC通过扬声器播放音乐。 SPI总线 集成DAC的单片机不多,ATmega系列就不在此列。
阅读全文
摘要:本文隶属于AVR单片机教程系列。 开发板上有4个按键,我们可以把每一个按键连接到一个单片机引脚上,来实现按键状态的检测。但是常见的键盘有104键,是每一个键分别连接到一个引脚上的吗?我没有考证过,但我们确实有节省引脚的方法。 矩阵键盘 这是一个4 4的矩阵键盘,共有16个按键只需要8个引脚就可以驱动
阅读全文
摘要:本文隶属于AVR单片机教程系列。 "adc.h" "bit.h" "button.h" "buzzer.h" "dac.h" "delay.h" "ee.h" "exin.h" "exout.h" "lcd.h" "ldr.h" "led.h" "pin.h" "pot.h" "print.h" "
阅读全文
摘要:本文隶属于AVR单片机教程系列。 在第一期中,我们已经开始使用UART来实现单片机开发板与计算机之间的通信,但只是简单地讲了讲一些概念和库函数的使用。在这一篇教程中,我们将从硬件与软件等各方面更深入地了解UART。 USART组件 一直在讲的UART其实是USART组件的一部分,USART比UART
阅读全文
摘要:本文隶属于AVR单片机教程系列。 中断,是单片机的精华。 中断基础 当一个事件发生时,CPU会停止当前执行的代码,转而处理这个事件,这就是一个中断。 触发 中断的事件成为 中断源 ,处理事件的函数称为 中断服务程序 (ISR)。 中断在单片机开发中有着举足轻重的地位——没有中断,很多功能就无法实现。
阅读全文
摘要:《玩玩24点》系列: "上篇" "中篇" 下篇 序 在上篇中,我用上位机程序遍历了4个1~13的数的1820种组合,通过递归穷举计算出其中1362组的24点接法,并转换为二进制形式,放到单片机程序中,减少了单片机24点游戏程序的计算量,获得了不错的游戏体验。 上篇的最后留了一个疯狂暗示,但时至如今我
阅读全文
摘要:本文隶属于AVR单片机教程系列。 第一期挺让我失望的,是我太菜,没有把想讲的都讲出来。经常写了很多,然后一点一点删掉,最后就没多少了。 而且感觉难度不合适,处于很尴尬的位置。讲得简单,难的丢给库,库源码也不公开。作业题倒是难得一批,我自己都差点不会做。 以前看不起那些死讲知识点的书,现在明白,把知识
阅读全文
摘要:本文隶属于AVR单片机教程系列。 显示屏 开发板套件里有两块屏幕,大的是LCD(液晶显示),小的是OLED(有机发光二极管)。正与你所想的相反,短小精悍的比较贵,而本讲的主题——LCD1602——功能较少,使用起来也简单很多。 这块屏幕的显示是以字符为单位的。每个字符都是8像素高,5像素宽。1602
阅读全文
摘要:本文隶属于AVR单片机教程系列。 ADC 计算机的世界是0和1的。单片机可以通过读取0和1来确定按键状态,也可以输出0和1来控制LED。即使是看起来不太0和1的PWM,好像可以输出0到5V之间的电压一样,达到0和1之间的效果,但本质上还是高低电平。 但是,世界上终究还是有0和1无法表示的。如果引脚上
阅读全文
摘要:本文隶属于AVR单片机教程系列。 PWM 两位数码管的驱动方式是动态扫描,每一位都只有50%的时间是亮的,我们称这个数值为其占空比。让引脚输出高电平点亮LED,占空比就是100%。 在驱动数码管时,我们迫不得已使占空比为50%,因为不能让两位真正同时地显示不同的数字。但是,我们也可以有意地让LED的
阅读全文
摘要:本文隶属于AVR单片机教程系列。 引子 定时/计数器(简称定时器)是单片机编程中至关重要的一部分,再简单的单片机也会带有定时器。 也许你会觉得我们已经在 函数中接触过定时器了,然而并不是,它只是软件地通过“浪费时间”来实现延时。我们接触定时器在数码管中, 函数可以自动完成动态扫描,好像在 函数背后又
阅读全文