(VR虚拟现实)AVR单片机.

上传人:精****库 文档编号:136622109 上传时间:2020-06-30 格式:DOC 页数:36 大小:441.15KB
返回 下载 相关 举报
(VR虚拟现实)AVR单片机._第1页
第1页 / 共36页
(VR虚拟现实)AVR单片机._第2页
第2页 / 共36页
(VR虚拟现实)AVR单片机._第3页
第3页 / 共36页
(VR虚拟现实)AVR单片机._第4页
第4页 / 共36页
(VR虚拟现实)AVR单片机._第5页
第5页 / 共36页
点击查看更多>>
资源描述

《(VR虚拟现实)AVR单片机.》由会员分享,可在线阅读,更多相关《(VR虚拟现实)AVR单片机.(36页珍藏版)》请在金锄头文库上搜索。

1、(VR虚拟现实)AVR单片机AVR单片机(ATmega16)培训宗旨:引导为主培养编程思维时间分配(一学期):三分之一时间讲解;三分之二时间动手实验。具体时间:星期六晚上6:009:00内容形式:1、软、硬件知识(一)讲解2、实验经验3、常用程序(思维)分析1、专业讲座(请资深讲师)(二)讲座2、课外讲座(如书记等)3、电影(专业性强的短片)(李世维讲座)1、硬件测试与软件使用(三)实验内容2、汇编语言编程3、AVR单片机内部资源的使用建议方法:先由指导老师讲解实验内容的原理、特点、应用、实践应用中的经验以及编程思维的分析,再由会员自己理解、自己验证、运用原理设计应用、调试程序。在会员动手的过

2、程中,由摇篮的部长(三名)从旁指导。实验一软件和硬件的认识一、 实验目的:1、掌握硬件原理。2、初步掌握实验板的使用方法。3、熟悉软件工作界面。二、 实验仪器:ATmage16实验板一块PC机一台三、 实验内容及步骤:1、插上电源,按下开关。观察批示灯是否点亮。电源(可输入712V)ATmega16管脚图2、由原理可知I/O口的批示灯为低电平亮,在实验板上取地与I/O口相接,观察是否点亮。I/O口LED显示与接口3、打开编程界面,点击各栏,认识各栏的用途。AVRICCIDE软件的工作界面4、输入以下程序:#includeintmain(void)DDRA=0xff;/*alloutputs*/

3、DDRB=0xff;/*alloutputs*/DDRC=0xff;/*alloutputs*/DDRD=0xff;/*alloutputs*/PORTA=0x00;/*输出低电平*/PORTB=0x00;/*输出低电平*/PORTC=0x00;/*输出低电平*/PORTD=0x00;/*输出低电平*/while(1);观察I/O口的灯是否被点亮。实验二I/O口的输入与输出一、 实验目的:1、了解IO口的结构;2、熟悉IO口的特性;3、掌握IO口的控制。二、实验仪器:ATmage16实验板一块PC机一台三、 实验原理:作为通用数字I/O使用时,AVR所有的I/O端口都具有真正的读-修改-写功能

4、。这意味着用SBI或CBI指令改变某些管脚的方向(或者是端口电平、禁止/使能上拉电阻)时不会改变其他管脚的方向(或者是端口电平、禁止/使能上拉电阻)。输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC和地相连,如Figure23所示。在控制I/O时,分别由方向寄存器DDRX与数据寄存器PORTX控制I/O的状态,如下表。Figure23.I/O引脚等效原理图I/O口LED显示与接口四、 实验内容及步骤:输入以下程序:这个程序为流水灯#include/*延时usvoiddelay_us(intt)dot-;whil

5、e(t1);/*延时msvoiddelay_ms(unsignedintt)while(t!=0)delay_us(1142);t-;intmain(void)DDRA=0xff;/*alloutputs*/DDRB=0xff;/*alloutputs*/DDRC=0xff;/*alloutputs*/DDRD=0xff;/*alloutputs*/PORTA=0XFF;PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;while(1)/*IO口输出低电平有效,如:0X01为十六进制数,二进制表示为00000001B,再取反PORTA=0X01;delay_ms(1000);/

6、*延时1秒PORTA=0X02;delay_ms(1000);PORTA=0X04;delay_ms(1000);PORTA=0X08;delay_ms(1000);PORTA=0X10;delay_ms(1000);PORTA=0X20;delay_ms(1000);PORTA=0X40;delay_ms(1000);PORTA=0X80;delay_ms(1000);PORTA=0XFF;PORTB=0X01;delay_ms(1000);/*延时1秒PORTB=0X02;delay_ms(1000);PORTB=0X04;delay_ms(1000);PORTB=0X08;delay_m

7、s(1000);PORTB=0X10;delay_ms(1000);PORTB=0X20;delay_ms(1000);PORTB=0X40;delay_ms(1000);PORTB=0X80;delay_ms(1000);PORTB=0XFF;PORTC=0X01;delay_ms(1000);PORTC=0X02;delay_ms(1000);PORTC=0X04;delay_ms(1000);PORTC=0X08;delay_ms(1000);PORTC=0X10;delay_ms(1000);PORTC=0X20;delay_ms(1000);PORTC=0X40;delay_ms(1

8、000);PORTC=0X80;delay_ms(1000);PORTC=0XFF;PORTD=0X01;delay_ms(1000);PORTD=0X02;delay_ms(1000);PORTD=0X04;delay_ms(1000);PORTD=0X08;delay_ms(1000);PORTD=0X10;delay_ms(1000);PORTD=0X20;delay_ms(1000);PORTD=0X40;delay_ms(1000);PORTD=0X80;delay_ms(1000);PORTD=0XFF;观看现象是不是流水灯。实验三外部中断一、 实验目的:1、了解外部中断的库函数;

9、2、熟悉外部中断的特性;3、掌握外部中断的使用。二、实验仪器:ATmage16实验板一块PC机一台三、 实验原理:外部中断通过引脚INT0与INT1或PCINT23.0触发。只要使能了中断,即使引脚INT0与INT1或PCINT23.0配置为输出,只要电平发生了合适的变化,中断也会触发。这个特点可以用来产生软件中断。只要使能,PCINT23.16引脚上的电平变化将触发外部中断PCI2,PCINT14.8引脚上的电平变化将触发外部中断PCI1,PCINT7.0将触发外部中断PCI0。PCMSK2、PCMSK1与PCMSK0寄存器则用来检测是哪个引脚上的电平发生了变化。PCINT23.0外部中断的

10、检测是异步的。也就是说,和其他中断方式一样,这些中断也可以用来将器件从休眠模式唤醒。INT0与INT1中断可以由下降沿、上升沿,或者是低电平触发。具体由外部中断控制寄存器AEICRA的设置来确定。当INT0或INT1中断使能且设定为电平触发时,只要引脚电平被拉低,中断就会产生。若要求INT0或INT1在信号下降沿或上升沿触发中断,则I/O时钟必须工作(请参见P23”时钟系统及其分布”了解更多信息)。INT0与INT1的低电平中断检测是异步的。也就是说它可以用来将器件从休眠模式唤醒。在休眠过程(除了空闲模式)中I/O时钟是停止的。通过电平中断将MCU从掉电模式唤醒时,要保证低电平保持一定的时间以

11、使MCU完成唤醒过程并触发中断。如果触发电平在启动时间结束前就消失,MCU将被唤醒,但中断不会被触发。启动时间由熔丝位SUT与CKSEL决定。详见P23”系统时钟及其选项”。外部中断控制寄存器MCUCR外部中断控制寄存器A包括决定中断触发方式的控制位。位1,0ISC01,ISC00:中断触发方式控制0之位1与位0外部中断0由引脚INT0激发,如果SREG寄存器的I标志位和相应的中断屏蔽位置位的话。触发方式如Table35所示。在检测边沿前MCU首先采样INT0引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果

12、选择低电平触发方式,那么低电平必须保持到当前指令执行完成。中断完成后回到被中断的位置。外部中断控制寄存器MCUCR外部中断控制寄存器A包括决定中断触发方式的控制位。通用中断控制寄存器GICR,控制外部中断使能位,具体如下:四ICC软件中断程序书写格式及16中断向量表16中断向量表五实验步骤及内容:输入程序:本程序一开始是IO口中的A口以流水灯工作,一旦有外部中断请求,就是B口以流水灯工作,循环一次后回到被中断处继续运行。程序如下:#include#include/*延时usvoiddelay_us(intt)dot-;while(t1);/*延时msvoiddelay_ms(unsignedi

13、ntt)while(t!=0)delay_us(1142);t-;#pragmainterrupt_handlerINT_0:2/外部中断0执行函数voidINT_0(void)PORTC=0XFF;PORTB=0X01;delay_ms(1000);PORTB=0X02;delay_ms(1000);PORTB=0X04;delay_ms(1000);PORTB=0X08;delay_ms(1000);PORTB=0X10;delay_ms(1000);PORTB=0X20;delay_ms(1000);PORTB=0X40;delay_ms(1000);PORTB=0X80;delay_m

14、s(1000);PORTB=0XFF;voidmain(void)DDRA=0xff;/*输出*/DDRB=0xff;/*输出*/DDRC=0xff;/*输出*/DDRD=0xff;/*输出*/PORTA=0XFF;PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;MCUCR=0X02;/定义外部中断INT0为下降沿产生中断请求GICR=0X40;/中断屏蔽寄存器开INT0SEI();/*开全局中断for(;)PORTA=0X01;delay_ms(1000);PORTA=0X02;delay_ms(1000);PORTA=0X04;delay_ms(1000);PORTA=0X08;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号