AVR最小系统使用说明书 一、ATMEGA16L单片机主要性能 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg l 131 条指令 – 大多数指令执行时间为单个时钟周期
l 32 个 8 位通用工作寄存器
l 全静态工作
l 工作于 16 MHz 时性能高达 16 MIPS
l 只需两个时钟周期的硬件乘法器
l 16K 字节的系统内可编程 Flash 擦写寿命 : 10,000 次
l 具有独立锁定位的可选 Boot 代码区 通过片上 Boot 程序实现系统内编程 l 正的同时读写操作
l 512 字节的 EEPROM 擦写寿命 : 100,000 次
l 1K 字节的片内 SRAM
l 可以对锁定位进行编程以实现用户程序的加密 JTAG 接口 ( 与 IEEE1149.1 标准兼容 )
l 符合 JTAG 标准的边界扫描功能
l 支持扩展的片内调试功能
l 通过 JTAG 接口实现对 Flash、EEPROM、熔丝位和锁定位的编程 ATmega16/ ATmega16L 外设特点
l 两个具有独立预分频器和比较器功能的 8 位定时器 / 计数器
l 一个具有预分频器、比较功能和捕捉功能的 16 位定时器 / 计数器
l 具有独立振荡器的实时计数器 RTC
l 四通道 PWM
l 8 路 10 位 ADC
l 8 个单端通道
l TQFP 封装的 7 个差分通道
l 2 个具有可编程增益 (1x, 10x, 或 200x)的差分通道
l 面向字节的两线接口
l 两个可编程的串行 USART
l 可工作于主机 / 从机模式的 SPI 串行接口
l 具有独立片内振荡器的可编程看门狗定时器
l 片内模拟比较器
ATmega16/ ATmega16L 特殊的处理器特点
l 上电复位以及可编程的掉电检测
l 片内经过标定的 RC 振荡器
l 片内 / 片外中断源
l 6 种睡眠模式 : 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及 扩展的 Standby 模式
ATmega16/ ATmega16L I/O 和封装
l 32 个可编程的 I/O 口
l 40 引脚 PDIP 封装 ,44 引脚 TQFP 封装 , 与 44 引脚 MLF 封装
工作电压 :
l ATmega16L:2.7 - 5.5V
l ATmega16:4.5 - 5.5V 掉电模式 : < 1 ?A 二、功能特性描述 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg 三、板子的功能特点 简要说明: 一、 尺寸:89mmX55mm 二、 主要芯片:AVR单片机、MAX232 三、 工作电压:直流4.4~5.5伏 四、 单片机标准十针下载接口。(可使用并口下载线和USB下载线下载) 五、 特点:1、具有电源指示。 2、所以I/O口以引出。 3、可以实现与电脑串口通信。 4、标准的8M晶振。 5、具有上电复位和手动复位。 6、支持ATMEGAXX系列单片机 六、有详细使用说明书 七、提供相关软件 八、提供例程及其学习资料 四、板子的结构介绍 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg 1、AVR ATMEGA16L最小系统板整体图 | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg 2、同样款式和功能的黑色版 | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg 1、电源接口直流+5V | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg 2、电源开关 | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg 3、 电源指示灯 | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg 4、10针下载口定义 | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg 6、PC 串口通信 | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg 7、手动复位按键 | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg 8、8M晶振,可配置单片机熔丝更改。 | | | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg 9、串口通信芯片MAX232 | file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg 10、32个I/O口全部引出 | |
【测试程序】 /******************************************************************** 实现功能:ATMGEA16单片机IO口及其串口检测 使用芯片:ATMEGA16 晶振:8.00MHZ 编译环境:ICCAVR 作者:zhangxinchunleo 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *********************************************************************/ #include<iom16v.h> #include<macros.h> #defineuchar unsigned char //宏定义字符型 #defineuint unsigned int //宏定义字整行 ucharKEY=0; /******************************************************************** 串口初始化子程序 *********************************************************************/ voidUart_Init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; //Bit1为1则倍速发送 UCSRC = 0x86; UBRRL = 0x33; //波特率:9600 Bps UBRRH = 0x00; //误差率:0.156% UCSRB = 0x18; } /******************************************************************** 串口接收字节子程序 *********************************************************************/ ucharGetchar(void) { while(!(UCSRA& (1<<RXC))); return UDR; } /******************************************************************** 串口发送字节子程序 *********************************************************************/ voidPutchar(uchar c) { while (!(UCSRA&(1<<UDRE))); UDR=c; } /******************************************************************** N ms延时函数 *********************************************************************/ voiddelay_nms(uint n) { uint j,k; for (j=0;j<n;j++) { for (k=0;k<1140;k++);//1ms延时 } } /******************************************************************** 初始化I/O *********************************************************************/ voidInit_IO(void) { //设置A口为输出 DDRA=0xFF; PORTA=0xFF; //设置B口为输出 DDRB=0xFF; PORTB=0xFF; //设置C口为输出 DDRC=0xFF; PORTC=0xFF; //设置D口为输出 DDRD=0XFF; PORTD=0xFF; } /******************************************************************** 主函数 *********************************************************************/ voidmain(void) { uchar i=0;//定义串口接收变量 Uart_Init();//初始化串口 Init_IO();//初始化IO口 /**********所有IO口闪烁两次***********/ PORTA=0x00; PORTB=0x00; PORTC=0x00; PORTD=0x00; delay_nms(1000);//延时1秒 PORTA=0xFF; PORTB=0xFF; PORTC=0xFF; PORTD=0xFF; delay_nms(1000);//延时1秒 PORTA=0x00; PORTB=0x00; PORTC=0x00; PORTD=0x00; delay_nms(1000);//延时1秒 PORTA=0xFF; PORTB=0xFF; PORTC=0xFF; PORTD=0xFF; /**********闪烁结束***********/ while(1) { i=Getchar(); //等待接收数据 if (i!=0) //如果接收到数据返回下列两个值 { i=0;//接收数据标志清零 Putchar(0x0a);//返回0X0A Putchar(0x0d);//返回0X0D } } } /******************************************************************** 程序结束 *********************************************************************/ 【实物展示】 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image028.jpgfile:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpgfile:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image032.jpg
|