AVR 单片机 实例,ATMEGA128,atmega128 , LED灯实验

AVR 单片机 实例,ATMEGA128,atmega128 , LED灯实验
AVR 单片机 实例,ATMEGA128,atmega128 , LED灯实验

///////////////////////本人也是刚学学习ATMega128芯片,如果我发的代码有不懂的可以加QQ问,我们共同学习,QQ:710424648、///////////

///////////////////我使用的是 AVR studio 加 WinAVR环境////////

#include

#include

#define delay_us(x) _delay_us(x)

#define delay_ms(x) _delay_ms(x)

#define u8 unsigned char

#define u16 unsigned int

#define mode 2 /////// 这个地方写2 就执行下面的2,写1就执行1,

void main(void)

{

DDRA = 0x00;

PORTA = 0xff;

DDRB = 0xff;

PORTB = 0xff;

if(mode == 1) ///只是单纯的闪,8个LED灯一亮一灭

{

while(1)

{

delay_ms(1000);

PORTB ^= 0xff; // PORTB异或ff,PORTB与FF发生异或,得

// PORTB=0,再次异或得1,循环

}

}

if(mode == 2)

{

while(1)

{

u16 i,j=0x01;

for(i=0;i<7;i++)

{

PORTB = j;

delay_ms(1000);

j<<=1;

}

j=0x80;

for(i=0;i<7;i++)

{

PORTB = j;

delay_ms(1000);

j>>=1;

}

}

}

if(mode == 3)//单个LED灯左移

{

u8 led = 0xfe;

while(1)

{

PORTB = led;

delay_ms(1000);

led=(led <<=1) | 0x01;

if(led==0xff)

led = 0xfe;

}

}

if(mode == 4)//单个LED灯右移 {

u8 led = 0x7f;

u16 k = 64;

while(k!=0)

{

PORTB = led;

delay_ms(1000);

led = (led >>=1)|0x80;

k --;

if(led == 0xff)

led = 0x7f;

}

}

if(mode == 5)//两个个LED灯左移

{

u8 led = 0xfc;

u16 k = 64;

while(k!=0)

{

PORTB = led;

delay_ms(1000);

led <<=1;

led |=0x01;

k --;

if(led == 0x7f)

led = 0xfc;

}

}

if(mode == 6) //两个LED 一会左移,一会右移 {

u8 led=0b11111100;

while(1)

{

while(led !=0b00111111)

{

PORTB = led;

delay_ms(1000);

led <<= 2;

led |= 0b00000011;

}

while(led != 0b11111100)

{

PORTB = led;

delay_ms(1000);

led >>= 2;

led |= 0b11000000;

}

}

}

}

ATmega128在开发应用中应注意的问题

ATmega128在开发应用中应注意的问题 摘要: ATmega128是一种与51系列不同的单片机,本文应用ICCAVR和pony prog2000作为主要开发工具,通过分析其在开发过程中特殊的开发方法,从而达到更好地掌握和使用ATmega128的目的。 关键词: ATmega128 单片机 ATmega128是AVR系列中功能最强的单片机,具有如下主要特点: (1)先进的RISC精简指令集结构:ATmega128具有133条功能强大的指令,大部分指令在单时钟周期内执行;有32b×8个通用工作寄存器;片内带有执行时间为2个时钟周期的硬件乘法器。 (2)非易失性程序和数据存储器:ATmega128具有128KB在线可重复编程Flash、4KB的E2PROM以及4KB内部SRAM。在其BOOT区具有独立的加密位,可通过片内的引导程序实现在系统编程,写操作时真正可读。 (3)具有JTAG接口:通过JTAG接口对Flash、E2PROM熔丝位和加密位编程。 (4)增强的硬件功能:ATmega128具有2个带预分频器和一种比较模式的8位定时/计数器;2个扩充的带预分频器和比较模式、捕获模式的16位定时/计数器;独立振荡器的实时计数器;2通道8位PWM;6通道2~16位精度PWM;8通道10位A/D转换;输出比较调节器;8个单端通道;7个微分通道;2个增益为1x、10x或200x的微分通道;二线(I2C)串行接口;2路可编程串行UART接口;主/从SPI串行接口;带内部振荡器的可编程看门狗定时器等。 (5)独有的特点:上电复位和可编程的低电压检测;内部可校准的RC振荡器;5种睡眠模式,即空闲模式、ADC噪声抑制模式、省电模式、掉电模式、待命模式和扩展待命模式;可通过软件选择时钟频率;通过1个熔丝选定ATmega103兼容模式;全局上拉禁止。 笔者通过使用ATmega128单片机,总结出在使用ATmega128过程中应注意的问题,希望能给即将使用该单片机的读者提供有用的信息。 1 ATmega128的开发工具及其应注意问题 随着用户对编译器的要求越来越高,开发商也在不断地提高编译器对用户的方便程度。目前的大趋势是从用汇编语言开发单片机发展到用C语言开发。笔者在对开发ATmega128编译器的选择时,考虑到时间上的局限以及开发的方便性等问题,最终选择了ImageCraft的ICCAVR工具。 ICCAVR是一种使用符合ANSI标准的C语言开发微控制器程序的工具。它集合了编译器和工程管理器的集成工作环境(IDE),可以编译生成INTEL HEX格式文件。 ICCAVR和人们通常所用的编译器的使用的方法大同小异,故本文不再详述。本文主要对使用中应当注意的问题作一介绍。 (1)该编译器在设置中有一项“Return Stack Size”,默认值为16,但在程序量很大而且子函数较多的情况下,该默认值就不适合了,编译时会出错。碰到这种情况建议将该选项的值改大。 (2)在经过一段时间的使用后,发现该编译器对C语言的编译效率不是很理想。但设置当中有一编译优化选择项“Enable Code Compression”,使用它在一定情况下可以减少程序所占的空间。不过当程序在“default”编译优化选择的情况下所占的程序空间达到95%以上时,使用“Enable Code Compression”编译就会出错。所以笔者认为,虽然ATmega128具有128KB的程序空间,但在使用过程中也应当考虑到数据结构方面的问题。 应用ICCAVR生成hex文件以后,下一步就是将hex文件烧录到ATmega128中去。笔者选用的软件是PonyProg2000。这是一款操作简单但功能强大的烧录软件,它支持包括AVR、PIC

ATMEGA128--AVR教程

AVR教程(1):AVR单片机介绍 作者:微雪电子文章来源:https://www.360docs.net/doc/518579848.html, 点击数: 478 更新时间:2008-4-1 23:58:21 AVR,它来源于:1997年,由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术,共同研发出RISC精简指令集的高速8位单片机,简称AVR。 AVR单片机特点 每种MCU都有自身的优点与缺点,与其它8-bit MCU相比,AVR 8-bit MCU最大的特点是:●哈佛结构,具备1MIPS / MHz的高速运行处理能力; ●超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051 MCU采用单一ACC 进行处理造成的瓶颈现象; ●快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发; ●作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力; ●片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠; ●大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comp arator,WDT等; ●大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序。 ●性价比高。 开发AVR单片机,需要哪些编译器、调试器? 软件名称类型简介官方网址 AVR Studio IDE、汇编编 译器 ATMEL AVR Studio集成开发环境(IDE),可使用 汇编语言进行开发(使用其它语言需第三方软件协 助),集软硬件仿真、调试、下载编程于一体。ATMEL 官方及市面上通用的AVR开发工具都支持AVRStudio。 https://www.360docs.net/doc/518579848.html, GCCAVR (WinAVR) C编译器 GCC是Linux的唯一开发语言。GCC的编译器优化 程度可以说是目前世界上民用软件中做的最好的,另 外,它有一个非常大优点是,免费!在国外,使用它 的人几乎是最多的。但,相对而言,它的缺点是,使 https://www.360docs.net/doc/518579848.html,

Atmega128开发板使用说明书

Atmega128开发板使用说明书 概要介绍 Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。 按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。 Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。 提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。 编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。

1.产品清单 Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。 请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反

2.硬件布局说明 步 进 电 机 接 口 直 流 电 机 接 口 数 字 温 度 传 感 器 SD 卡 插 座 光 敏 电 阻 ADC 输 入 电 位 器 NTC 热 敏 电 阻 JTAG 接 口 继 电 器 接 口 9V电源输入接口 DAC输出接口 RS485接口 RS232接口 红 外 发 射 管 ISP 编 程 接 口 LCD 对 比 度 调 节 电 位 器 122 * 32 点 阵 LCD 接 口 16 * 2 字 符 LCD 接 口 红 外 接 收 管 433M 射 频 模 块 接 口 3 * 4 矩阵键盘

ATmega128几个常用程序例子

ATMEGA128相关例程 自己学avr单片机已经有相当一段时间了,一开始用的是atmega128,觉得不是很好用。于是自己去买了一块16L的芯片,觉得还行。一开始用的是ICC AVR,应为它用起来比较简单,不像winavr那样,要写个Makefie ,比较的麻烦,但icc avr的缺点是太过于简陋,调试程序时,感觉不是很好。后来经同学介绍,用起了winavr,其实也是比较的简单,只不过要加一个makefile而已,其实makefile可以用软件自带的组建自动生成,只需修改几个参数就可以用。后来又用起了code vision avr,虽然不太习惯,也谈不上不好用. 需要注意的是,三个不同的软件所带的同文件不一样。icc avr 是iom128v.h(姑且以128为例),winavr 是avr/io.h,不过makefile中要设置芯片为atmega128.而cvavr则是mega128.h。 记得一开始的时候,我对这些不同的同文件不是很理解,是从一个学长那里了解到,才弄明白的。其实前两个软件只需把头文件稍微改一下基本上可以通用。而最后一个软件的中断的写法似乎不太一样,因而和钱两个软件的兼容性是最差的。 总体说winavr给人的感觉是比较专业 自己学习时多总结吧! 1、流水灯 /* 硬件环境:atmega128开发板 软件环境:CodeVisionAVR-C */ #include #define uchar unsigned char #define uint unsigned int uchart; void timer1_init() { TCCR1B=0X00; //先停止定时器1 TCNT1H=0XF0; //设定定时器初值 TCNT1L=0XBE; TCCR1A=0X00; //启动定时器1 TCCR1B=0X05; //使用1024分频 } interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H=0XF0; //重载定时器初值 TCNT1L=0XBE;

ATmega128单片机仿真系统设计及实现

第24卷第7期Vo.l 24No .7荆楚理工学院学报Jo u rnal of Ji ngchu University of Technol ogy 2009年7月Ju.l 2009 [收稿日期]2009-06-17 [作者简介]汤剑锋(1964-),男,福建华安人,漳州职业技术学院讲师。研究方向:电子技术应用。 AT mega128单片机仿真系统设计及实现 汤剑锋 (漳州职业技术学院电子工程系,福建漳州 363000) [摘 要] 本仿真系统采用ATm ega128单片机作为控制核心,利用其强大的兼容性和处理能力,以及丰 富的接口等特点使整个系统的电路结构简单、可靠性高。ATm ega128单片机仿真系统的硬件部分由电源电 路、复位电路、晶振电路、模/数转换滤波电路、ISP 下载接口电路、J T AG 仿真接口电路、蜂鸣器驱动电路、MAX232串口模块、按键模块以及各种显示模块组成。 [关键词] AT m ega128;单片机;仿真系统 [中图分类号] TN702 [文献标识码] A [文章编号] 1008-4657(2009)07-0025-07 0 引言 ATmega128为基于AVR R IS C 结构的8位低功耗C MOS 微处理器。由于其先进的指令集以及单周期指令执行时间,AT mega128的数据吞吐率高达1M I PS/M H z ,从而可以缓减系统在功耗和处理速度之间的矛盾。 ATmega128具有如下特点:128K 字节的系统内可编程F lash(具有在写的过程中还可以读的能力,即R WW )、4K 字节的EEPRO M 、4K 字节的S RA M 、53个通用I/O 口线、32个通用工作寄存器、实时时钟RTC 、4个灵活的具有比较模式和P WM 功能的定时器/计数器(T /C)、两个US ART 、面向字节的两线接口T W I 、8通道10位ADC(具有可选的可编程增益)、具有片内振荡器的可编程看门狗定时器、S PI 串行端口、与I EEE 1149.1规范兼容的J T AG 测试接口(此接口同时还可以用于片上调试),以及六种可以通过软件选择的省电模式。 A t m ega128采用了A t m el 的高密度非易失性内存技术,片内Flash 可以通过SPI 接口+通用编程器,或通过JT AG 接口,或使用自引导 B OOT 程序进行编程和自编程。利用自引导BOO T 程序,可以使芯片在工作过程中通过任一硬件串行通信接口下载应用程序,并写入到F lash 的应用程序区中(I A P)。在更新F lash 的应用程序区数据时,处在Flash 的BO OT 区中的自引导程序将继续执行,实现了同时读/写(Read-W hile-W r ite)的功能(芯片自编程功能)。由于将增强R I S C 8位CPU 与在系统编程和在应用编程的F lash 存储器集成在一个芯片内,AT mega128成为功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。 ATmega128具有整套的开发工具,包括C 编译器,宏汇编,程序调试器/仿真器和评估板。 1 仿真系统基本硬件线路设计 1.1 电源电路的设计电源电路如图1所示。本仿真系统的电源电路采用两种方式: 1)电脑USB 取电,由电脑通过USB 接口给仿真系统提供+5V 电源,省掉了电源模块,使仿真系统使用更为简便,稳定性更高。该方式适合在调试软件时使用。25

ATmega128 单片机硬件电路设计

ATmega128 单片机硬件电路设计 在本系统中,本小节主要讲ATmega128 单片机的内部资源、工作原理和硬件电路设计等。2.5.1 ATmega128 芯片介绍ATmega128 为基于AVR RISC 结构的8 位低功耗CMOS 微处理器。片内ISP Flash 可以通过SPI 接口、通用编程器,或引导程序多次编程。引导程序可以使用任何接口来下载应用程序到应用Flash 存储器。通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega128 为许多嵌入式控制应用提供了灵活而低成本的方案。ATmega128 单片机的功能特点如下:(1)高性能、低功耗的AVR 8 位微处理器(2)先进的RISC 结构①133 条指令大多数可以在一个时钟周期内完成② 32x8 个通用工作寄存器+外设控制寄存器③全静态工作④工作于16 MHz 时性能高达16 MIPS ⑤只需两个时钟周期的硬件乘法器(3)非易失性的程序和数据存储器① 128K 字节的系统内可编程Flash ②寿命: 10,000 次写/ 擦除周期③具有独立锁定位、可选择的启动代码区(4)通过片内的启动程序实现系统内编程① 4K 字节的EEPROM ② 4K 字节的内部SRAM ③多达64K 字节的优化的外部存储器空间④可以对锁定位进行编程以实现软件加密⑤可以通 过SPI 实现系统内编程(5)JTAG 接口(与IEEE 1149.1 标准兼容)①遵循JTAG 标准的边界扫描功能②支持扩

展的片内调试③通过JTAG 接口实现对Flash,EEPROM,熔丝位和锁定位的编程(6)外设特点①两个具有独立的预分频器和比较器功能的8 位定时器/ 计数器②两个具 有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器③具有独立预分频器的实时时钟计数器④两路8 位PWM ⑤ 6 路分辨率可编程(2 到16 位)的PWM ⑥输出比较调制器⑦ 8 路10 位ADC ⑧面向字节的两线接口⑨两个可编程的串行USART ⑩可工作于主机/ 从机模式的SPI 串行接口(7)特殊的处理器特点①上电复位以及可编程的掉电检测②片内经过标定的RC 振荡器③片内/ 片外中断源④ 6 种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby 模式⑤可以通过软件进行选择的时钟频率⑥通过熔丝 位可以选择ATmega103 兼容模式⑦全局上拉禁止功能ATmega128 芯片有64 个引脚,其中60 个引脚具有I/O 口功能,资源比较丰富,下面对ATmega128 的各个引脚做简单介绍:VCC:数字电路的电源。GND:接地。端口(PA7..PA0)、(PB7..PB0)、(PC7..PC0)、(PD7..PD0)、(PE7..PE0)、(PF7..PF0)、(PG4..PA0):为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将

基于Atmega128单片机SD卡读写程序(免费分享)

基于Atmega128单片机SD卡读写程序实物图对照 接线图

以下是一个简单的测试SD卡读写的程序,程序是基于Atmega128单片机编写的,对于Atmega的其他单片机仅需要做管脚改动就可以使用,其他单片机更改要更大。 sd.h //********************************************************** ******** //SPI各线所占用的端口 #define SD_SS PB6 #define SD_SCK PB1 #define SD_MOSI PB2 #define SD_MISO PB3 //********************************************************** ******** #define SD_DDR DDRB #define SD_PORT PORTB #define SD_PIN PINB #define SD_SS_H SD_PORT |= (1<#define SDSS_L SD_PORT &= ~(1<#define SD_SCK_H SD_PORT |= (1<#define SD_SCK_L SD_PORT &= ~(1<#define SD_MOSI_H SD_PORT |= (1<#define SD_MOSI_L SD_PORT

&= ~(1< #define SD_MISO_IN (SD_PIN&(1

AVR 单片机 实例,ATMEGA128,atmega128 , LED灯实验

///////////////////////本人也是刚学学习ATMega128芯片,如果我发的代码有不懂的可以加QQ问,我们共同学习,QQ:710424648、/////////// ///////////////////我使用的是 AVR studio 加 WinAVR环境//////// #include #include #define delay_us(x) _delay_us(x) #define delay_ms(x) _delay_ms(x) #define u8 unsigned char #define u16 unsigned int #define mode 2 /////// 这个地方写2 就执行下面的2,写1就执行1, void main(void) { DDRA = 0x00; PORTA = 0xff; DDRB = 0xff; PORTB = 0xff; if(mode == 1) ///只是单纯的闪,8个LED灯一亮一灭 { while(1) { delay_ms(1000); PORTB ^= 0xff; // PORTB异或ff,PORTB与FF发生异或,得 // PORTB=0,再次异或得1,循环 } } if(mode == 2) { while(1) { u16 i,j=0x01; for(i=0;i<7;i++) { PORTB = j; delay_ms(1000); j<<=1; } j=0x80;

for(i=0;i<7;i++) { PORTB = j; delay_ms(1000); j>>=1; } } } if(mode == 3)//单个LED灯左移 { u8 led = 0xfe; while(1) { PORTB = led; delay_ms(1000); led=(led <<=1) | 0x01; if(led==0xff) led = 0xfe; } } if(mode == 4)//单个LED灯右移 { u8 led = 0x7f; u16 k = 64; while(k!=0) { PORTB = led; delay_ms(1000); led = (led >>=1)|0x80; k --; if(led == 0xff) led = 0x7f; } } if(mode == 5)//两个个LED灯左移 { u8 led = 0xfc; u16 k = 64; while(k!=0) { PORTB = led; delay_ms(1000);

AVR ATMEGA128 SPI经典C程序

#include #include void init_spi(void); void spi_write(unsigned char temp); unsigned char spi_read(void); #define SPIF 7 /*void init_spi(void) { PORTB=0X21; //PB7(OC2) PB6(OC1B) PB5(OC1A) PB4(OC0) PB3(MISO) PB2(MOSI) PB1(SCK) PB0(/SS) // 0 0 1 0 0 0 0 1 // 1 1 1 1 1 1 0 1 DDRB=0XFD; SPCR=0X50; //0101 0000 SPI允许高位在先主机模式模式0 四分频率 }*/ void init_spi(void) { PORTB=0X21; //PB7(OC2) PB6(OC1B) PB5(OC1A) PB4(OC0) PB3(MISO) PB2(MOSI) PB1(SCK) PB0(/SS) // 0 0 1 0 0 0 0 1 // 1 1 1 1 1 1 0 1 DDRB=0XFD; SPCR=0X50; //0101 0000 SPI允许高位在先主机模式模式0 四分频率 } void spi_write(unsigned char temp) { SPDR=temp;//启动数据传送 while(!(SPSR&(1<

AVR128 单片机软硬件环境

AVR128 单片机软硬件环境 AVR ATmega128系列单片机是Atmel公司生产的一款多功能单片机,可应用于多个用途,单片机主要有:CPU内核、存储器、定时器、各种串口、JTAG接口及片上调试系统等。编程软件有ICC和GCC两种,通过Atmel Studio系列进行调试和生成可执行文件,本次我们主要应用Atmel Studio 7.0 进行软件模拟。 首先介绍一下Atmel Studio 7.0并建立一个工程文件USART 和电脑进行数据传输核通信,我们从以下几个方面介绍: 1、实验环境 2、软件介绍并建立工程 3、USART通信协议简介 4、设计软件并运行调试 实验环境: 硬件:PC机一台、JTAG调试器、AVR ATmega128A单片机 软件:windows 10操作系统、Atmel Studio 7.0和sscom32(串口调试软件) 软件介绍并建立工程 Atmel Studio系列软件是Atmel公司为其生产的芯片设计的一款软件,其可支持软件编译、在线调试、串口烧写程序等。Atmel Studio 7.0是atmel公司最新发布得一款软件,其内集成了GCC编译器,使用户更为方便得编译程序文件和在线调试。以下是其软件简介: 这是开机动画: 打开后,你会看到Atmel Studio 7.0的完整界面,如下图所示:编译栏、开始栏、最近编译

文件、在线简介等 新建一个工程得步骤如下:New Project→ GCC C Excutable Project(Name 和Solution name一致,这里用USART0_0、保存路径可更改) 然后点OK →Device Selection→进入编译界面

相关主题
相关文档
最新文档