单片机(Microcontroller)是一种集成了中央处理单元(CPU)、存储器(RAM、ROM、闪存等)、输入/输出(I/O)端口以及定时器等功能于一体的微型计算机系统。单片机通常用于控制电子设备、执行特定任务、实现嵌入式系统功能。它们常用于各种应用,例如家用电器、汽车电子系统、医疗设备、工业自动化等领域。由于其小型化、低功耗和成本效益等优势,单片机被广泛应用于各种嵌入式系统中。
如果你是一个初学者,希望了解单片机知识,你会发现这个教程系列非常适合你。本教程探讨了流行的AVR Atmega32单片机的各种用途和特性。教程展示了编写实际程序并通过电路开发进行解释的过程。在学习过程中还提供了基础和中级编程概念和用法。通过许多示例,你可以迅速成为嵌入式系统方面的专家。
这是一系列旨在为初学者提供指南和基于Atmel AVR Atmega32微控制器的教程的首篇。我将通过示例和项目向你展示如何为这款微控制器编程并提供功能,以及其用途和应用。
对于微控制器小芯片随处可见,且非常有用。你可以在微波炉、新型家电、汽车、电视等设备中找到这些微控制器,他们能够控制和感知周围的电子设备和环境。例如,微控制器可以向显示器、电机、LED等提供输出,感知环境,比如使用加速计来检测倾斜、使用MEMS(微电子机械系统)陀螺仪来检测光、角速度,声音,编码器用于运动,温度,以及按钮或键盘输入。
为了让你对微控制器有基本的了解,AVR Atmega32微控制器被认为是一种小型计算机。微控制器能够执行一组指令,形成一个程序。我将在这些项目中使用的程序语言是C++。
微控制器的优势是你可以控制所有的引脚。对于初学者来说,这可能是一个难以理解的概念,特别是对电子没有经验的人来说,不知引脚为何物。但不要担心,我会逐步为你解释每一个细节。每个引脚都有特殊的用途,可以用作输入或输出功能,但有几个例外,即电源引脚。
在芯片的左侧,从顶部看,小三角形位于左上角,有20个引脚(这是一个40引脚的微控制器)。从左上角开始,第一个是PB0-7引脚。这是8个引脚的总数,因为这些引脚和程序中的大多数内容都是从索引0开始的。这组引脚被称为“Port B”,还有另外3个从A到D标记的端口。这些端口可以设置为接收信息,称为输入,它们也可以被设置为以某种形式发送电压输出,称为输出。通用的电源引脚用于为芯片接收电源,称为VCC和GND。除了Port D的一个引脚(PD0-6),它们也位于左侧(下部)。PD7(Port D的引脚7)是孤独的,从微控制器的右侧开始。
在右侧继续,并且Port D的结束后,Port C从右下角延伸到上方。从那里开始,我的最爱引脚继续,模拟至数字转换引脚。这些引脚具有通过组件帮助其接收模拟电压的能力,从而能够感知环境。不用担心目前不理解模拟或数字,稍后会详细解释。这些模拟至数字转换引脚组成了Port A。
引脚描述:
Port A(PA7-PA0):Port A作为A/D转换器的模拟输入。如果内部未使用A/D转换器,则它也作为一个8位双向I/O端口。
Port B(PB7-PB0)和Port D(PD7-PD0):这些端口是8位双向I/O端口。它们的输出缓冲具有对称的驱动特性,具有较高的源和沉降能力。如果使用上拉电阻,作为输入时,这些端口会被拉低。它还提供了ATmega32的各种特殊功能特性。
Port C(PC7-PC0):Port C是一个8位双向I/O端口。如果启用了联合测试动作组(JTAG)接口,则PC2(TCK)、PC3(TMS)和PC5(TDI)引脚上的上拉电阻将被激活。
ATMEGA32 Pin Configuration
引脚号 | 引脚名字 |
描述 | 功能 |
|
1 | PB0(XCK/T0) | Pin 0 of PORTB | T0( Timer0 External Counter Input)
XCK ( USART External Clock I/O) |
|
2 | PB1(T1) | Pin 1 of PORTB | T1(Timer1 External Counter Input) | |
3 | PB2(INT2/AIN0) | Pin 2 of PORTB | AIN0(Analog Comparator Positive I/P)
INT2( External Interrupt 2 Input) |
|
4 | PB3(OC0/AIN1) | Pin 3 of PORTB | AIN1(Analog Comparator Negative I/P)
OC0 (Timer0 Output Compare Match Output) |
|
5 | PB4(SS) | Pin 4 of PORTB | SS (SPI Slave Select Input). This pin is low when controller acts as slave.
[Serial Peripheral Interface (SPI) for programming] |
|
6 | PB5(MOSI) | Pin 5 of PORTB | MOSI (Master Output Slave Input). When controller acts as slave, the data is received by this pin.
[Serial Peripheral Interface (SPI) for programming] |
|
7 | PB6(MISO) | Pin 6 of PORTB | MISO (Master Input Slave Output). When controller acts as slave, the data is sent to master by this controller through this pin.
[Serial Peripheral Interface (SPI) for programming] |
|
8 | PB7(SCK) | Pin 7 of PORTB | SCK (SPI Bus Serial Clock). This is the clock shared between this controller and other system for accurate data transfer.
[Serial Peripheral Interface (SPI) for programming] |
|
9 | RESET | Reset Pin, Active Low Reset | Pulled HIGH to RESET controller. | |
10 | Vcc | Vcc = +5V | ||
11 | GND | GROUND | ||
12 | XTAL2 | Connected to Crystal Oscillator | ||
13 | XTAL1 | Connected to Crystal Oscillator | ||
14 | PD0(RXD) | Pin 0 of PORTD | RXD (USART Input Pin)
USART Serial Communication Interface [Can be used for programming] |
|
15 | PD1(TXD) | Pin 1 of PORTD | TXD (USART Output Pin)
USART Serial Communication Interface [Can be used for programming] |
|
16 | PD2(INT0) | Pin 2 of PORTD | External Interrupt INT0 | |
17 | PD3(INT1) | Pin 3 of PORTD | External Interrupt INT1 | |
18 | PD4(OC1B) | Pin 4 of PORTD | PWM Channel Outputs | |
19 | PD5(OC1A) | Pin 5 of PORTD | ||
20 | PD6(ICP) | Pin 6 of PORTD | Timer/Counter1 Input Capture Pin | |
21 | PD7 (OC2) | Pin 7 of PORTD | Timer/Counter2 Output Compare Match Output | |
22 | PC0 (SCL) | Pin 0 of PORTC | TWI Interface | |
23 | PC1 (SDA) | Pin 1 of PORTC | ||
24 | PC2 (TCK) | Pin 2 of PORTC | JTAG Interface | |
25 | PC3 (TMS) | Pin 3 of PORTC | ||
26 | PC4 (TDO) | Pin 4 of PORTC | ||
27 | PC5 (TDI) | Pin 5 of PORTC | ||
28 | PC6 (TOSC1) | Pin 6 of PORTC | Timer Oscillator Pin 1 | |
29 | PC7 (TOSC2) | Pin 7 of PORTC | Timer Oscillator Pin 2 | |
30 | AVcc | Vcc for Internal ADC Converter | ||
31 | GND | GROUND | ||
32 | AREF | Analog Reference Pin for ADC | ||
33 | PA7 (ADC7) | Pin 7 of PORTA | ADC (Analog to Digital Converter) Channel 7 | |
34 | PA6 (ADC6) | Pin 6 of PORTA | ADC (Analog to Digital Converter) Channel 6 | |
35 | PA5 (ADC5) | Pin 5 of PORTA | ADC (Analog to Digital Converter) Channel 5 | |
36 | PA4 (ADC4) | Pin 4 of PORTA | ADC (Analog to Digital Converter) Channel 4 | |
37 | PA3 (ADC3) | Pin 3 of PORTA | ADC (Analog to Digital Converter) Channel 3 | |
38 | PA2 (ADC2) | Pin 2 of PORTA | ADC (Analog to Digital Converter) Channel 2 | |
39 | PA1 (ADC1) | Pin 1 of PORTA | ADC (Analog to Digital Converter) Channel 1 | |
40 | PA0 (ADC0) | Pin 0 of PORTA | ADC (Analog to Digital Converter) Channel 0 | |
模拟至数字转换的一个应用是感知温度。你可以连接一个将温度转换为电压水平的组件(称为热敏电阻)到Port A的一个引脚上,微控制器将把这个电压转换为一个0到255之间的数字(一个8位的数字 – 也可以以10位的分辨率进行更高分辨率的转换)。写入并存储到微控制器中的程序可以使用这个温度并以特定方式响应。例如,如果你将热敏电阻放在沸腾的锅上,微控制器可以做出响应,并向另一个引脚提供输出,例如响铃或闪烁灯光。
除了实际编程之外,这款微控制器和其他微控制器的其他特性还包括编程空间(程序存储在芯片中的空间以及你拥有多少空间)、内存或用于程序使用的数据和变量的空间,最后是芯片内置的时钟。时钟计数可以以许多不同的速度进行,取决于芯片的速度和选择的速度除数。这开始变得复杂了,所以我会退一步。计数可以是以秒、毫秒、微秒,或者你为所选的程序和应用确定的任何时间单位。
由于本教程系列是基于示例的,我会提供大量的细节。当然,介绍部分的细节是不可能的,如果你非常有冒险精神,可以查看这款微处理器的数据手册和手册,但不要让这个庞大的文档阻止你学习这项最令人难以置信的技术。一旦你学会了,应用就没有限制,从微型机器人到极其庞大的能移动并产生壮观光效的建筑奇迹,有时还会与环境进行互动。
AVR微控制器 (Atmel AVR Atmega32)
AVR微控制器是一类由Atmel公司(后被Microchip Technology收购)开发的8位和32位微控制器。AVR代表“高级虚拟射频”,是Atmel公司的商标。AVR微控制器以其高性能、低功耗、易于编程和广泛的应用领域而闻名。它们被广泛应用于各种领域,如家用电器、汽车电子、医疗设备、工业控制和嵌入式系统等。AVR微控制器通常使用C语言进行编程,具有丰富的外设和功能,如模拟至数字转换器(ADC)、定时器、串行通信接口(USART、SPI、I2C)、GPIO引脚等。常见的AVR微控制器系列包括ATmega、ATtiny和ATxmega等。
Linux, PHP, C,C++,JavaScript,verilog 老师