轻松玩转avr单片机c语言pdf_AVR单片机应用经验

AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。

但使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以前传统的硬件和软件设计思想和方法的话,是不能用好AVR的,甚至也不能真正的了解AVR的特点和长处。

功能越好的器件,需要具备更高技术和能力的人来使用和驾驭它。就象一部好的F1赛车,只有具备高超技术的驾驶员才能充分体会到车的特点,并能最大限度的发挥出车的性能。

708b658616df8e3682670aabf595695e.png

AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。

“外行看热闹,内行看门道”,对于有一定基础的嵌入式和单片机系统设计开发的工程师,不妨先简单尝试一下AVR。

开发环境与工具:PC+下载线+实际的系统板

PC上的开发软件:

AVR Studio(Free)汇编+汇编调试+高级语言调试+软件仿真

ICC、CVAVR、BASCOM-AVR 高级语言程序开发+程序下载。其中一个购买正版全功能,作为主要的开发环境,其它使用DEMO版,作为辅助及参考。

AVR ISP下载线:

STK200 and STK200+ and STK300 ISP programmer。通过PC的打印机口,采用ISP技术将系统运行代码(HEX、BIN)和数据写入AVR芯片的Flash和EEProm中,编程AVR的配置熔丝位和加密位。支持决大多数的AVR芯片、以及ATMEL的51兼容芯片89S8252、89S52等。在ICC、CVAVR、BASCOM-AVR、BASCOM-8051中都内含对该下载线的支持程序。免费专用的下载程序:SLISP、PonyProg2000等。

bc4b25fccb506198f288aa0ace5e48d7.png

尽量不使用仿真器的建议:

在开发和调试系统程序时,有许多人完全依赖于仿真器,一旦离开了仿真器时就感觉无从下手。其实,由于AVR的Flash存贮器可方便的使用ISP技术在线的多次擦写,因此建议尽量不使用(依赖)仿真器来开发和调试程序。

在实际开发过程中,程序的调试可以从下几方面入手:

现在的高级语言编译器(如C编译器)可以产生效率很高的机器代码,因此建议大家尽量使用高级语言编写系统程序。

使用Atmel公司提供AVR Studio软件模拟仿真环境,以及其他的软件模拟仿真环境(BASCOM-AVR)。

尽可能使用高级语言编写系统程序。

利用目标板上的LED、LCD或异步串口。见附件“没有仿真器的情况下如何开发AVR”的介绍。

adf9191441fb8978005de6fd3f80fdee.png

提高硬件设计的合理性:

尽量合理和充分使用AVR片内的资源,如EEPROM、A/D、内部的RC振荡源。

尽量采用串口通信连接的外围器件,大容量的存储器、LCD控制器、打印机、不用8279(LED数码管+键盘)而使用7279等。除了必须外扩RAM(如语音和图象),一般不提倡使用并行扩展(573+译码电路),减小硬件和连线以及PCB板上错误的出现概率,同时也提高了系统的可靠性。并行扩展向串行扩展是发展趋势。现在有大量的新的外围器件采用高速的串行接口,如A/D、D/A、RTC、存储器等。

尽量使用以及在目标板上预留ISP程序下载接口,或使用IAP技术。

优点:ISP接口与I/O的兼容性比JETAG好。

缺点:不能在线调试

注意和掌握AVR配置熔丝位的使用:

.系统晶振的选择

.BOD的使用

.启动延时

.Mega8的PC6引脚,RESET与通用I/O的转换

.JETAG接口和通用I/O的转换

.启动向量的转换,BOOT-LOAT区大小的设置

750d58df6b6bb90eaabecc45e9fdd2d8.png

提高硬件可靠性的考虑:

.尽量采用片内晶体、采用低频率的系统时钟、振荡电路的输出小幅度。

.选择合适的启动延时参数

.使用BOD、片内的看门狗

.合理休眠方式的使用

.不用I/O口设定输出低电平

.利用内部的EEProm和寄存器MCUCSR判断复位标志,进行不同的处理

提高软件设计的能力和水平:

尽量合理采用高级语言设计编写系统程序。有许多人认为使用汇编写程序比较精简,而用高级语言开发会浪费很多程序空间,其实这是一种误解。对一个有经验的,而且非常熟悉某种单片机的汇编高手而言,他是能写出比高级语言更精简的代码。而对汇编不是很熟的开发者、或突然更换了一种新的单片机,您能保证一定可以写出比高级语言更简练的代码吗?

高级语言的优越性是汇编语言不能比的:

.程序移植方便

.程序的坚固性

.数学运算的支持

.条理清晰的结构化编程,程序的可维护性。

.可协同开发软件,开发周期短。

现在的高级语言编译器(如C编译器)已可以产生代码效率很高的机器代码,因此建议大家能用高级语言实现的程序尽可能使用高级语言写,在对速度和时序要求特严的场合可以采用混合编程的方法来解决。

更深入和全面的掌握各种串行通信协议的规程:

嵌入式系统目前以大量的使用串行接口外围芯片和各种通信接口,如RS232、两线(I2C)、三线(SPI)、单总线、USB、CAN、TCP/IP等。开发人员和程序员应了解低层协议,熟悉硬件怎样和如何实现低层协议,如何定义可靠的上层应用协议,以及低层协议驱动同上层应用协议之间的接口设计(中间层软件的实现)等。

ed300d162a0372f02bcde78854a60a99.png

硬件工程师的软件编写能力要提高,采用标准程序编写方式、完善的软件整体框架的设计、良好的数据结构和程序结构系统。(计算机软件专业的程序设计员对硬件不熟悉、大部分是在操作系统支持下编写软件,对低层接口和协议的驱动层以及接口也不了解,往往也编写不出好的单片机系统程序。)

通信接口的编写应尽量

.采用中断+缓冲区,

.分层+结构化设计,

.尽量不使用轮循方式(降低AVR的效率)。参见URAT(RS232)驱动+中间层软件示例。

采用好的系统设计模式:

尽量不使用传统的前后台(中断)系统设计模式,任务之间相互影响和干扰,无法定时操作。如设计一个采用动态扫描方式驱动的8位LED数码管显示+动态扫描的4*4矩阵键盘。

采用TimeTip+状态机设计+CASE结构,实现多任务并行运行系统设计方法。或时间触发式的系统设计。(见:《时间触发嵌入式系统设计模式》中国电力出版社 2004.6)

移植小型嵌入式操作系统,如UCOS-II。在网上有些免费的基于AVR的简洁的操作系统。

1995c9e007c1eb407181aee282b9a953.png

提高C语言的编程能力和软件应用水平:

熟悉和用好C中的数据结构体、指针应用、内存管理等较高级的应用。

熟悉和了解你所使用的高级语言开发平台的特点。这些平台是针对某一类处理器的,包含许多特殊的不兼容的语句和扩展的结构、语句、函数等。尽管使用方便,但由于其不透明性和时间的不确定性,因此要合理使用。如C中的getchar()、putchar()等。

AVR有多个开发平台,每个都有其特点和不足。能够综合使用这些平台,相互互补,能够提高开发效率。如通过ICC、CVAVR的程序生成器CodeWizard学习和了解AVR的硬件设置,简化计算,快速的生成程序基本模块,如“一个URAT(RS232)低层驱动+中间层软件示例”。

AVR入门的好教材,适合初学者 这是第一部分 第1章概述 1.1采用C语言提高编制单片机应用程序的效率 1.2C语言具有突出的优点 1.3AvR单片机简介 1.4AvR单片机的C编译器简介 第2章学习AVR单片机C程序设计所用的软件及实验器材介绍 2.1IAR Enlbedded Workbench IDE C语言编译器 2.2AVR Studio集成开发环境 2.3PonyProg2000下载软件及SL—ISP下载软件 2.4AVR DEM0单片机综合实验板 2.5AvR单片机JTAG仿真器 2.6并口下载器 2.7通用型多功能USB编程器 第3章AvR单片机开发软件的安装及第一个入门程序 3.1安装IAR for AVR 4.30集成开发环境第1章概述 1.1采用C语言提高编制单片机应用程序的效率 1.2C语言具有突出的优点 1.3AvR单片机简介 1.4AvR单片机的C编译器简介 第2章学习AVR单片机C程序设计所用的软件及实验器材介绍 2.1IAR Enlbedded Workbench IDE C语言编译器 2.2AVR Studio集成开发环境 2.3PonyProg2000下载软件及SL—ISP下载软件 2.4AVR DEM0单片机综合实验板 2.5AvR单片机JTAG仿真器 2.6并口下载器 2.7通用型多功能USB编程器 第3章AvR单片机开发软件的安装及第一个入门程序 3.1安装IAR for AVR 4.30集成开发环境 3.2安装AVR Studio集成开发环境 3.3安装PonyProg2000下载软件 3.4安装SLISP下载软件 3.5AvR单片机开发过程 3.6第一个AVR入门程序 第4章AVR单片机的主要特性及基本结构 4.1ATMEGA16(L)单片机的产品特性 4.2ATMEGAl6(L)单片机的基本组成及引脚配置 4.3AvR单片机的CPU内核 4.4AvR的存储器 4.5系统时钟及时钟选项 4.6电源管理及睡眠模式 4.7系统控制和复位 4.8中断 第5章c语言基础知识 5.1c语言的标识符与关键字 5.2数据类型 5.3AVR单片机的数据存储空间 5.4常量、变量及存储方式 5.5数组 5.6C语言的运算 5.7流程控制 5.8函数 5.9指针 5.10结构体 5.11共用体 5.12中断函数 第6章ATMEGA16(L)的I/o端口使用 6.1ATMEGAl6(L)的I/0端口 6.2ATMEGAl6(L)中4组通用数字I/0端口的应用设置 6.3ATMEGA16(L)的I/o端口使用注意事项 6.4ATMEGAl6(L)PB口输出实验 6.58位数码管测试 6.6独立式按键开关的使用 6.7发光二极管的移动控制(跑马灯实验) 6.80~99数字的加减控制 6.94×4行列式按键开关的使用 第7章ATMEGAl6(L)的中断系统使用 7.1ATMEGA16(L)的中断系统 7.2相关的中断控制寄存器 7.3INT1外部中断实验 7.4INTO/INTl中断计数实验 7.5INTO/INTl中断嵌套实验 7.62路防盗报警器实验 7.7低功耗睡眠模式下的按键中断 7.84×4行列式按键的睡眠模式中断唤醒设计 第8章ATMEGAl6(L)驱动16×2点阵字符液晶模块 8.116×2点阵字符液晶显示器概述 8.2液晶显示器的突出优点 8.316×2字符型液晶显示模块(LCM)特性 8.416×2字符型液晶显示模块(LCM)引脚及功能 8.516×2字符型液晶显示模块(LCM)的内部结构 8.6液晶显示控制驱动集成电路HD44780特点 8.7HD44780工作原理 8.8LCD控制器指令 8.9LCM工作时序 .. 第9章ATMEGA16(L)的定时/计数器 第10章ATMEGA16(L)的USART与PC机串行通信 第11章ATMEGA16(L)的两线串行接口TWI 第12章ATMEGA16(L)的模拟比较器 第13章ATMEGA16(L)的模/数转换器 第14章ATMEGA16(L)的同步串行接口SPI 第15章ATMEGA16(L)驱动128×64点阵图形液晶模块 第16章ATMEGA16(L)的系统控制、复位和看门狗定时器 第17章多功能测温汉字时钟实验 第18章C++语言开以AVR单片机初步
第1章 概述 1.1 采用C语言提高编制单片机应用程序的效率 1.2 C语言具有突出的优点 1.3 AvR单片机简介 1.4 AvR单片机的C编译器简介 第2章 学习AVR单片机C程序设计所用的软件及实验器材介绍 2.1 IAR Enlbedded Workbench IDE C语言编译器 2.2 AVR Studio集成开发环境 2.3 PonyProg2000下载软件及SL—ISP下载软件 2.4 AVR DEM0单片机综合实验板 2.5 AvR单片机JTAG仿真器 2.6 并口下载器 2.7 通用型多功能USB编程器 第3章 AvR单片机开发软件的安装及第一个入门程序 3.1 安装IAR for AVR 4.30集成开发环境 3.2 安装AVR Studio集成开发环境 3.3 安装PonyProg2000下载软件 3.4 安装SLISP下载软件 3.5 AvR单片机开发过程 3.6 第一个AVR入门程序 第4章 AVR单片机的主要特性及基本结构 4.1 ATMEGA16(L)单片机的产品特性 4.2 ATMEGAl6(L)单片机的基本组成及引脚配置 4.3 AvR单片机的CPU内核 4.4 AvR的存储器 4.5 系统时钟及时钟选项 4.6 电源管理及睡眠模式 4.7 系统控制和复位 4.8 中断 第5章 c语言基础知识 5.1 c语言的标识符与关键字 5.2 数据类型 5.3 AVR单片机的数据存储空间 5.4 常量、变量及存储方式 5.5 数组 5.6 C语言的运算 5.7 流程控制 5.8 函数 5.9 指针 5.10 结构体 5.11 共用体 5.12 中断函数 第6章 ATMEGA16(L)的I/o端口使用 6.1 ATMEGAl6(L)的I/0端口 6.2 ATMEGAl6(L)中4组通用数字I/0端口的应用设置 6.3 ATMEGA16(L)的I/o端口使用注意事项 6.4 ATMEGAl6(L)PB口输出实验 6.5 8位数码管测试 6.6 独立式按键开关的使用 6.7 发光二极管的移动控制(跑马灯实验) 6.8 0~99数字的加减控制 6.9 4×4行列式按键开关的使用 第7章 ATMEGAl6(L)的中断系统使用 7.1 ATMEGA16(L)的中断系统 7.2 相关的中断控制寄存器 7.3 INT1外部中断实验 7.4 INTO/INTl中断计数实验 7.5 INTO/INTl中断嵌套实验 7.6 2路防盗报警器实验 7.7 低功耗睡眠模式下的按键中断 7.8 4×4行列式按键的睡眠模式中断唤醒设计 第8章 ATMEGAl6(L)驱动16×2点阵字符液晶模块 8.1 16×2点阵字符液晶显示器概述 8.2 液晶显示器的突出优点 8.3 16×2字符型液晶显示模块(LCM)特性 8.4 16×2字符型液晶显示模块(LCM)引脚及功能 8.5 16×2字符型液晶显示模块(LCM)的内部结构 8.6 液晶显示控制驱动集成电路HD44780特点 8.7 HD44780工作原理 8.8 LCD控制器指令 8.9 LCM工作时序 8.10 8位数据传送的ATMEGAl6(L)驱动16×2点阵字符液晶模块的子函数 8.11 8位数据传送的16×2LCM演示程序1 8.12 8位数据传送的16×2LCM演示程序2 8.13 4位数据传送的ATMEGAl6(L)驱动16×2点阵字符液晶模块的子函数 8.14 4位数据传送的16×2LCM演示程序 第9章 ATMEGAl6(L)的定时/计数器 9.1 预分频器和多路选择器 9.2 8位定时/计时器T/C0 9.3 8位定时/计数器0的寄存器 9.4 16位定时/计数器T/C1 9.5 16位定时/计数器1的寄存器 9.6 8位定时/计数器T/c2 9.7 8位T/C2的寄存器 9.8 ICC6.3 1AC语言编译器安装 9.9 定时/计数器1的计时实验 9.10 定时/计数器O的中断实验 9.11 4位显示秒表实验 9.12 比较匹配中断及定时溢出中断的测试实验 9.13 PWM测试实验 9.14 0~5V数字电压调整器 9.15 定时器(计数器)0的计数实验 9.16 定时/计数器1的输入捕获实验 第10章 ATMEGAl6(L)的USART与PC机串行通信 10.1 ATMEGAl6(L)的异步串行收发器 10.2 USART的主要特点 10.3 时钟产生 10.4 帧格式 10.5 USART的寄存器及设置 10.6 USART的初始化 10.7 数据发送——USART发送器 10.8 数据接收——USART接收器 10.9 ATMEGAl6(L)与PC机的通信实验1 10.10 ATMEGAl6(L)与PC机的通信实验2 10.11 ATMEGAl6(L)与P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值