《《秒节拍显示器系统》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《秒节拍显示器系统》PPT课件.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 秒节拍显示 器系统的设计 马静芳 2011 5ATmega16单片机的一些性能指标,特点及外部引脚 vAtmega16单片机介绍单片机介绍 ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。片内ISP Flash 允许程序存储器通过ISP 串行接口,通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。ATmega16 具有一整套的编程与系统开发工具,包括:C 语言 编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。v ATmega16产品特
2、性产品特性 高性能、低功耗的8位AVR微处理器(1)先进的RISC 结构(2)131条指令(3)大多数指令执行时间为单个时钟周期(4)32个8位通用工作寄存器(5)全静态工作(6)工作于16MHz时性能高达16MIPS(7)只需两个时钟周期的硬件乘法器(8)非易失性程序和数据存储器(9)6K 字节的系统片内可编程Flash,擦写寿命:10,000 次(10)具有独立锁定位的可选Boot代码区,通过片上Boot程序实现系统内编程,真正的同时读写操作(11)512 字节的EEPROM数据存储器,擦写寿命:100,000次 (12)1K字节的片内SRAM数据存储器 (13)可以对锁定位进行编程以实现
3、用户程序的加密 (14)JTAG 接口(与IEEE 1149.1 标准兼容)(15)符合JTAG 标准的边界扫描功能 (16)支持扩展的片内调试功能 (17)通过JTAG 接口实现对Flash、EEPROM、熔丝位和锁定位的编程 v外设特点外设特点 两个具有独立预分频器和比较器功能的8位定时器/计数器 (1)一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器 (2)具有独立振荡器的实时计数器RTC (3)四通道PWM (4)8路10位ADC,8个单端通道,2个具有可编程增益的差分通道 (5)面向字节的两线接口 (6)两个可编程的串行USART (7)可工作于主机/从机模式的SPI 串行
4、接口 (8)具有独立片内振荡器的可编程看门狗定时器 (9)片内模拟比较器 v特殊的处理器特点特殊的处理器特点 (1)上电复位以及可编程的掉电检测 (2)片内经过标定的RC振荡器 (3)片内/片外中断源 (4)6种睡眠模式:空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby模式 v I/O和封装和封装 (1)32个可编程的I/O口 (2)40引脚PDIP封装,44引脚TQFP封装,与44引脚MLF封装工作电压工作电压:ATmega16:4.5-5.5V v速度等级速度等级 0-16MHz ATmega16 v ATmega16 引脚功能引脚功能 VC
5、C:电源正 GND:电源地 RESET 复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位。XTAL1:反向振荡放大器与片内时钟操作电路的输入端。XTAL2:反向振荡放大器的输出端。AVCC:端口A与A/D转换器的电源。不使用ADC时,该引 脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC 连接。AREF:A/D 的模拟基准输入引脚。vATmega16 I|O口介绍 ATmega16有4个8位的双向I|O端口PA、PB、PC、PD,它们对外对应32个I|O引脚,每一位都可以独立地用于逻辑信号的输入和输出。在5V工作电压下输出高电
6、平时,每个引脚可输出20mA的驱动电流;而输出低电平时,每个引脚可吸收最大为40mA的电流,可直接驱动发光二极管LED和小型继电器。AVR大部分的I|O端口都具备双重功能,可分别与片内的各种不同功能的外围接口电路组合成一些可以完成特殊功能的I|O口,如定时器、计数器、串行接口、模拟比较器,捕捉器等 ATmega16 内核介绍内核介绍 为了获得最高的性能以及并行性,AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令(在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程FLASH
7、秒节拍显示器硬件设计v 通过对智能仪器课程的学习我将设计一个简易的“秒节拍显示器”。这个秒节拍显示器就是用单片机控制一个LED发光二极管,让它亮1s,暗1s,不间断的闪烁。图1是它的电路原理图。v 秒节拍显示器的硬件电路使用一个AVR芯片和LED发光二极管作为信号的显示。当ATmegal6的I/O引脚PC0口输出为“0”时,LED导通发光;导通为“1”时LED截止熄灭。电阻R3起保护限流作用,控制LED的导通电流。适当调整R3的阻值,可以调节LED的亮度,并限制流过LED和PC0口的电流,保护其不被大电流烧毁。v从图中可以知道R1为引脚的上拉电阻,保证了该引脚可靠的高电平。系统采用外接4MHz
8、晶体和芯片内部的振荡电路组成时钟电路,产生4MHz的脉冲作为系统的始终信号 电容C1和C2应与石英晶体配合,改变C1,C2的值可以对4MHz的频率进行微调。R2与晶体并联,其作用是稳定晶体的阻抗,提高 振荡电路的稳定性。v图中的ISP编程下载口的2、3、4、5脚与芯片SPI接口的MOSI(PB5)、MISO(PB6)、SCK(PB7)和引脚连接。当需要改动AVR的熔丝位配置,或将编译好的运行代码烧入AVR单片机的Flash ROM中时,就不需要将芯片从PCB板上取下,只要将一根简单的编程线插在该编程下载口上,利用PC机就可以方便地实现上面的操作。v当PC机对AVR编程时需要先将SCK和引脚拉低
9、,使AVR芯片进入SPI编程状态,然后通过SPI口进行下载操作。因此,在设计AVR系统硬件时,如果考虑使用SPI口实ISP的功能,所以图中的电阻R1不可以省略。此时R1起到了上拉隔离作用,正是有了R1才能使用户在外部对引脚施加 低电平(0V)。当编程下载完成后,外部一旦释放掉,该引脚通过R1又被拉成高电平,AVR就直接进入了正常运行工作状态,R1的阻值 在之间,太大和太小都不合适。秒节拍显示器软件设计思路v下图为秒节拍显示器的系统软件流程图。从图中可以看出秒节拍显示器的软件设计重点是一个1s延时子程序。系统程序每隔1s(调用1s延时子程序)将PC0口的输出电平取反,同时也控制LED的亮与暗。系
10、统初始化系统初始化 执行秒延时程序执行秒延时程序 PC0口电平反向输出口电平反向输出秒节拍显示器的高级C语言源程序v在这里给出一个通用软件延时的子程序,每调用一次该子程序,其运行的时间为1s,每隔1s控制PC0口的输出逻辑取反。这样LED就会亮1s,灭1s,实现了秒节拍的显示。v下面是使用高级语言编写的秒节拍发生器的C语言源程序。在程序的初始化代码中仅仅对PORTC口进行了设置,而没有对AVR堆栈指针进行初始化设置,这是由于CVAVR系统在编译时会首先帮助用户自动地设置堆栈指针,方便了用户的使用,在C语言主程序中,由while(1)构成无限死循环,循环中调用了延时函数delay-ms(),延时
11、1s后将PC0口的值取反输出,控制点亮和熄灭LED。因此程序的运行效果是每隔1s后,控制PC口的第0位输出“1”或“0”,使LED亮1s,暗1s,形成秒节拍显示指示。Demo_5_2.c Chip type ATmega16 Program type Application Clock frequency 4.000000MHz Memory model Small External SRAM size 0 Data Stack size 256#include /包括器件配置定义的头文件,不能缺少#include /包括延时函数定义的头文件使用延时函数时不能缺少 void main(void)/定义PortC口的工作方式 PORTC=0 x01;/PC口的第0位输出“1”,LED不亮 DDRC=0 x01;/定义PC口的第0位为输出方式/主循环 While(1)delay_ms(1000);/调用CVAVR提供的毫秒延时函数,延时1s PORTC.0=PORTC.0;/PC口第0位输出取反 ;
限制150内