从软硬件两方面来分析Atmega16单片机

时间:2023-06-20
  1. Atmega16单片机简介
  今天我们的主题是单片机,说道单片机你可能想到的是51单片机,然后通过外接的数字电路和模拟电路来控制外围的硬件,比如PWM,ADC,I2C等等。那么今天我们所说的Atmega16单片机和51单片机的区别是什么那?其实你把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 AVR6.31版本为例介绍编译软件的使用。启动ICC AVR,界面如下图所示。如何使用avr单片机控制系统上的led灯那?代码如下:
 

  AVR ATmega16 流水灯C程序
  /**************************************************************************/
  #include //包含单片机型号头文件
  #include //包含"位"操作头文件
  void delay(void) //自定义延时函数
  {
  unsigned char i,j;
  for(i=0;i<255;i++)
  for(j=0;j<10;j++)
  ;
  }
  void cpu_init(void) //单片机初始化函数
  {
  PORTA = 0x00; //PA口输出值都定义为0
  DDRA = 0x00; //PA口输出允许关
  PORTB = 0x00; //PB口输出值都定义为0
  DDRB = 0x00; //PB口输出允许关
  PORTC = 0x00; //PC口输出值都定义为0
  DDRC = 0x00; //PC口输出允许关
  PORTD = 0x00; //PD口输出值都定义为0
  DDRD = 0x00; //PD口输出允许关
  }
  void main(void)
  {
  cpu_init(); //初始化单片机
  while(1)
  {
  PORTA=0X00; /*点亮led灯,由系统的外部电路决定单片机输出
  低电平时流水灯点亮*/
  DDRA=0XFF; /*允许输出,此时PORTA的赋值才有效,这事AVR比51的地方*/
  //由于其他端口没有接外围设备先不用定义
  delay();
  DDRA=0X00; //关闭led灯
  delay();
  }
  }


上一篇:详解 PLC 串口通讯原理
下一篇:工业电机驱动中的IGBT过流和短路保护注意事项

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料