今天我们的主题是微控制器。 说到单片机,大家可能首先想到的是51单片机,然后利用外部的数字电路和模拟电路来控制外围硬件,比如PWM、ADC、I2C等。那么Atmega16单片机和51单片机有什么区别我们今天谈论的是? 事实上,您可以将Atmega16 MCU用作51 MCU。 只是Atmega16 MCU的外围接口更加丰富,那么它有哪些外围资源呢? ?
ATmega16是一款基于增强型AVR RISC结构的低功耗8位CMOS微控制器。 由于其先进的指令集和单时钟周期指令执行时间,ATmega16 的数据吞吐率高达 1 MIPS/MHz。 ATmega16常用的片上资源包括定时器、PWM、外部中断、SPI总线、两线串行接口TWI、EEPROM、USART、模拟比较器、ADC转换、IEEE(JTAG)边界扫描等。如何学习Atmega16单片机? 我们从硬件和软件两个方面来分析。
2、Atmega16单片机硬件原理图(最小系统)
从上面提到的最小系统板我们可以看到它分为以下几个部分:
电源电路:5V供电
复位电路:上电复位(电容)、手动按钮复位。
晶振电路:Atmega16单片机自带RC振荡电路,但内置的振荡电路不够精确,所以这里接了一个8MHZ的晶振。
下载程序接口ISP:ISP串口下载程序接口
Atmega16微控制器:8位avr微控制器。
1.Atmega16单片机编程
AVR单片机的编译软件包括GCC AVR和ICC AVR。 ICC AVR通常使用得比较频繁,也比较容易使用。 本书以ICC AVR6.31版本为例介绍编译软件的使用。 启动ICC AVR,界面如下图。 如何在最小的系统上使用avr单片机控制LED灯? 代码如下:
AVR ATmega16流水灯C程序
/******************************************************** ***** *************************/
#include //包含单片机型号头文件
#include //包含“位”操作头文件
void delay(void) //自定义延迟函数
无符号字符 i,j;
对于(i=0;i
对于(j=0;j
void cpu_init(void) //MCU初始化函数
门 = 0x00; //PA口输出值全部定义为0
DDRA=0x00; //PA口输出允许关闭
端口B=0x00; //PB口输出值全部定义为0
DDRB=0x00; //PB口输出允许关闭
端口C = 0x00; //PC口输出值全部定义为0
DDRC = 0x00; //PC口输出允许关闭
端口=0x00; //PD口输出值全部定义为0
DDRD=0x00; //PD口输出允许关闭
无效主(无效)
cpu_init(); //初始化单片机
同时(1)
门=0X00; /*点亮LED灯,单片机的输出由最小系统外部电路决定
水位低时流水灯亮*/
DDRA=0XFF; /*允许输出,此时PORTA的赋值有效。 这就是AVR比51先进的地方*/
//由于其他端口没有连接外围设备,所以暂时不需要定义。
延迟();
DDRA=0X00; //关闭LED灯
延迟();