
1.Atmega16单片机介绍
今天的题目是单片机。说到单片机,大家可能首先会想到51单片机,然后通过外部的数字电路和模拟电路来控制PWM、ADC、I2C等外围硬件。那么我们今天谈论什么?其实你可以把Atmega16单片机当51单片机用,但是Atmega16单片机的外设接口更丰富,那么它有哪些外设资源呢?
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 AVR版为例介绍编译软件的使用。启动ICC AVR,界面如下图所示。如何用avr单片机控制最小系统上的led灯?代码如下:
AVR ATmega16流水灯c程序
/**************************************************************************/
#include //包含单芯片模型的头文件
#include //头文件包含bit 操作
Void delay(void) //自定义延迟功能
{
无符号字符I,j;
for(I=0;我《255;我)
for(j=0;j《10;j)
;
}
Void cpu_init(void) //MCU初始化函数
{
PORTA=0x00//PA端口的输出值全部定义为0
DDRA=0x 00;//PA端口输出允许关闭。
PORTB=0x00//PB端口//的输出值都定义为0。
DDRB=0x 00;//PB端口输出允许关闭。
PORTC=0x00//PC端口输出值全部定义为0。
DDRC=0x 00;//允许关闭PC端口输出。
PORTD=0x00//PD端口输出值定义为0。
DDRD=0x 00;//PD端口输出允许关闭。
}
无效总管(无效)
{
CPU _ init();//初始化MCU
while(1)
{
PORTA=0X00
DDRA=0x ff;
//因为其他端口没有连接到外围设备,所以不需要定义。
delay();
DDRA=0x 00;//关闭led灯
delay();
}
}









