红外线概述 AVR单片机论述 红外测距

2026/1/27 7:02:43

河北理工大学轻工学院毕业设计说明书 第 39 页 共 51页

Y延时消抖主程序有键按下Y按键中断N判断键值N主程序按键是否按下NY延时消抖返回 图16 按键流图

4.2 各程序设计函数说明

4.2.1 主程序模块

/*****************************************************************/

// projection : // Author Name :

// Last modify time: 2007-6-20 15:18:53 // Target IC : M16 // Crystal : 8.0000Mhz

/****************************************************************

河北理工大学轻工学院毕业设计说明书 第 40 页 共 51页

**/

/********************

********************************/

#include #include

/************* 定义引申变量类型************************* *********/

#define uchar unsigned char #define uint unsigned int

/******************** 系统常量定义 ******************************/

……………………………………………………………………………………. /********************** 定义结构体 ******************************/ ……………………………………………………………………………………. /******************* 定义全局变量 *******************************/ …………………………………………………………………………………… /******************* 定义函数************************************/ ……………………………………………………………………………………. void main() {

port_init s( ); uart0_init( ); LEDSCAN( ); ad_handler( );

ADMUX=0x00; //选择第0通道

ADCSR=0x86; //采用单次转换模式,64分频

ADCSR |=BIT(ADSC); //启动一次哑转换 SREG=0x80; //开中断 ADCSR |=BIT(ADSC); //启动一次转换

河北理工大学轻工学院毕业设计说明书 第 41 页 共 51页

keyint();

DDRB&=~BIT(PB0); //设置键盘输入,无上拉 DDRB&=~BIT(PB1); DDRB&=~BIT(PB2);

GIMSK=0x40; //开外部中断0 MCUCR=0x30; //设置上升中断触发 SREG=0x80; //开中断 while(1) //等待中断 {

KEYPRESSED ( ); WDR( ); }

}

4.2.2 设定输入/ 输出引脚

ATmega16单片机C口的8个端口作为数据输出使用,同时将A口的PA0引脚设定为模拟电压输入。系统初始指令如下所示:

/************************** 端口初始化 **************************/ Void port_init(void) {

//端口A

DDRA = 0x07; PORTA = 0xFF; //端口B DDRB= 0xF7; PORTB = 0xFF; //端口C DDRC= 0x00; PORTC = 0xFF;

河北理工大学轻工学院毕业设计说明书 第 42 页 共 51页

}

//端口D DDRD= 0x07;

PORTD= 0xFF;

4.2.3 A/ D 转换模块

ATmega16 单片机采用中断方式,ADC按自由模式工作,自第一次置位ADSC开始,ADC就连续不断进行采样转换,数据更新。A/ D 转换的程序如下:

/************************** 定时器/计数器初始化 *****************/ void timer2_init(void) { }

/************************** 启动A/D转换*********************/ #pragma interrupt_handler timer2_ovf_isr:5 void timer2_ovf_isr(void) { }

/*********************模拟转换完成中断************************/ #pragma interrupt_handler ad_handler:15 void ad_handler(void) {

addata=ADC>>2;

TCCR2 = 0x00; ASSR = 0x00; OCR2 = 0x7D; TCCR2 = 0x04;

//停止 //设置异步模式

//开始

TCNT2 = 0x83; //加载计数值 delay_counter ++;

//用于毫秒级延时

pwm_ctrler( &l_trap, &r_trap );


红外线概述 AVR单片机论述 红外测距.doc 将本文的Word文档下载到电脑
搜索更多关于: 红外线概述 AVR单片机论述 红外测距 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219