单片机学习笔记(Arduino Uno r3)
Aduino是什么?
分为硬件和软件两个部分,硬件和软件共同组成了Arduino,使用时须将Arduino硬件和软件配合使用
- 硬件:Arduino系列各种型号的开发板
- 软件:Arduino IDE
Arduino与单片机的关系?
Arduino开发板上有控制芯片,这些芯片为单片机。例:在Arduino Uno r3上一共有两个芯片,开发板主控芯片Atmega328,和另一个管理串口通信的芯片Atmega 16u2,这两个芯片各自均为单片机。
单片机的作用?
单片机通过引脚从外部接收信号,经过对接收信号的分析,然后通过引脚向外做出不同反应。
单片机的意义?
假如以传感器为输入设备,将传感器和单片机连接,单片机就可以通过传感器感知周围环境,从而根据环境变化,改变单片机上连接的输出设备的状态。这样就实现了自动控制的效果。
单片机的相关概念
电平
电压的状态,分高电平(高电压)和低电平(低电压)两种。
I/O端口
I/O是简写,全称是Intput/Output,即输入输出,将设备连上单片机I/O端口,可以让设备从I/O端口传送信号给单片机,也可以让单片机从I/O端口输出信号给设备。I/O端口既可以用作输入,也可以用作输出。
数字信号
在单片机中,数字信号只有两种,0和1,可以用高电平和低电平表示。
模拟信号
一个可以在某个范围内取值的数,相对于数字信号只有0和1,模拟信号可以是例如0~1023之间的数、0~255之间的数等等,范围视情况不同可以任意规定。相比数字信号仅有两种状态,模拟信号更多的状态更适合传达温度变化、亮度变化等连续变化的情况。
A/D转换
A/D是简写,全称是
Analog/Digital,即模拟/数字。A/D转换是将模拟信号转换成数字信号,规则可以视情况任意设定。例如模拟信号是从0~1023之间的一个数,假如设定规则是当模拟信号>511时转换为数字信号1,否则转换为数字信号0,那么此时就是一个模数信号的转换。作用是将模拟信号的许多种状态分为两种状态,方便单片机选择以高电平还是低电平作出反应,也方便单片机中以二进制进行运算代表是和非两种状态。
PWM
PWM全称Pulse Width Modulation,即脉冲宽度调制,目的是输出模拟信号。例:相对于低电平,高电平为脉冲。通过调节高电平所占的时间的比例(即调节脉冲宽度),从而使输出的平均电流大小发生变化,达到输出模拟信号的目的。
占空比
在一个周期内,高电平持续的总时间所占的比例。
串口通信
一种通信方式,与并口通信相对应,例:假如有4个信号要传输,串口通信是把四个信号通过一条通道一个一个传输,而并口通信则是把四个信号通过四条通道同时传输。
中断
假设单片机在执行程序A,当单片机接收到某一信号时,暂停执行程序A转而执行程序B,当执行完B后再回到之前暂停的地方继续执行程序A。在这个例子中,B为中断程序,接收到的信号为中断请求,执行程序B为中断响应。
晶振
一片以特定角度切下的石英晶体,加直流电压时晶体以固定频率振动,使输出的电流也以晶振的振动频率变化。
计时器
单片机上连接有晶振时,通过晶振的振动频率计时,方式是累加振动和振动之间相隔的时间。
如何使用Arduino?
如何下载程序 如何编写程序 如何连接Arduino和I/O设备
如何下载程序
以Arduino Uno r3 开发板为例,步骤如下
1、从Arduino官网ArduinoHome – Download – Windows Installer页面下载Windows版本的Arduino IDE安装包并安装
2、将开发板的USB接口用数据线和电脑的USB接口连接
3、在电脑上的 设备管理器 – 端口里找到Arduino设备,然后从Arduino IDE安装目录下的Driver文件夹安装驱动,安装成功后可以看到Arduino的COM口序号
4、打开电脑上的Arduino IDE,在工具 – 端口里选择正确的COM口序号,就可以在这个软件页面下编译程序下载程序了
如何编写程序
Arduino程序分为三部分,预处理命令,setup函数和loop函数。执行流程是先执行预处理命令,然后执行一次setup,然后循环执行loop。
Arduino将单片机许多基本功能都写成了函数,这些函数的函数定义由Aduino IDE在编译程序时自动从库中读取,当需要某项功能时,只需要在setup或loop直接调用对应的函数即可。基本函数大概可分为读取I/O端口输入的数据,对数据进行运算,判断数据类型,从I/O端口输出数据,计时,串口通信,对位进行操作八个类型。
Arduino还有很多第三方库,包含了写好的函数,每个函数有各自的功能,可供调用。常用的库有标准链接库,通信库,传感器库,音效和声波库,电机和脉宽调制库,计时器库,实用工具库等
如何连接Arduino和外部设备
以Arduino Uno r3为例,开发板上常用的端口有数字I/O端口,模拟输入端口,模拟输出端口,电源端口。
通常情况下,判断一个设备怎么接上开发板,需要了解的信息有:哪根是接电源正极的线,哪根是接电源负极线,哪根线输入还是输出,假如输入,是输入数字量还是模拟量;假如输出,是输出数字量还是模拟量。
Tips:
- 数字I/O口前加~符号的,表示该I/O作为模拟输出端口
- 当单片机数字I/O口输出高电平时,可以作为正极
- Arduino电压供应端口有不同大小的电压供应,注意外接设备的工作电压大小
其它:
- Arduino Uno r3开发板上排列着LED,分别标有TX和 RX,T为transmit缩写,R为receive缩写,分别表示串口通信状态。当有数据通过串口通信输入单片机时,RX亮;当单片机通过串口通信输出数据时,TX亮。
- Arduino Uno r3开发板上有两个芯片,Atmega 328是主控芯片,Atmega 16 u2的作用是把USB通信转换成串口通信。Arduino上和电脑上连接的都是USB接口,USB全称Universal Serial Bus,是通用串行总线,和串行口(串口)不同,所以当使用串口通信时,需要一个转换模块,此处的Atmega 16 u2就代替了这个转换模块。
- 因为电脑实际和单片机是用USB接口连接的,所以把单片机连上电脑安装驱动后看到的COM口序列号不是真实串口连接,只是虚拟串口。