比較簡單的AVR單片機超聲波測距的實例
短路插針JD1-2/-3腳功能接地;JD1-1接PC5;短路塊插于2,3間,使用LED數(shù)碼管顯示;短路塊插于1,2間,使用LED發(fā)光二極管顯示,或超聲波傳感器輸出分段控制信號。超聲波傳感器輸出分段控制信號對應(yīng)J1引腳:
1、J1-1—PD0避障距離范圍5~9cm
2:J1-2—PD1避障距離范圍10~19cm
3:J1-3—PD2避障距離范圍20~29cm
4:J1-4—PD3避障距離范圍30~39cm
5:J1-5—PD4避障距離范圍40~49cm
6:J1-6—PD5避障距離范圍50~99cm
7:J1-7—PD6避障距離范圍100~179cm
8:J1-8—PD7避障距離范圍180~250cm
1、J1-1—PD0避障距離范圍5~9cm
2:J1-2—PD1避障距離范圍10~19cm
3:J1-3—PD2避障距離范圍20~29cm
4:J1-4—PD3避障距離范圍30~39cm
5:J1-5—PD4避障距離范圍40~49cm
6:J1-6—PD5避障距離范圍50~99cm
7:J1-7—PD6避障距離范圍100~179cm
8:J1-8—PD7避障距離范圍180~250cm
SLSRF-25電原理圖
SL-SRF-25超聲波測距源程序:
/*********************************************************************
Project:超聲波測距
Chiptype:ATMEGA8
Clockfrequency:8.000000MHz
*********************************************************************/
#include
#include
#pragmainterrupt_handlerintt0:10//T0溢出中斷
#pragmainterrupt_handlericp_timer1:6//T1捕捉中斷
#pragmadata:code//設(shè)定數(shù)據(jù)區(qū)為程序存儲器
constunsignedchartab1[]={0X28,0XEE,0X32,0XA2,0XE4,
0XA1,0X21,0XEA,0X20,0XA0};//七段譯碼字型表(lm,cm)
constunsignedchartab2[]={0X08,0XCE,0X12,0X82,0XC4,
0X81,0X01,0XCA,0X00,0X80};//七段譯碼字型表(m)
#pragmadata:data//設(shè)定數(shù)據(jù)區(qū)回到數(shù)據(jù)存儲器
unsignedcharledbuff[]={0X08,0X28,0X28};//顯示緩沖區(qū)
unsignedcharcount;
unsignedcharnewcount;
unsignedcharoldcount;
voidintt0(void)//T0中斷定時程序,定時58US,即測距1CM.
{
TCNT0=0XC6;
count++;
}
voidicp_timer1(void)//ICP1捕捉中斷,捕捉頻率38.5~41.6
{
if(96<=ICR1<=104)
{
SREG&=0X7f;
newcount=count-13;
ICR1=0;
TCNT1=0;
TCCR1B=0X81;
}
}
voiddelay_1us(void)//1us
{
asm("nop");
}
voiddelay_us(unsignedintt)//tus
{
unsignedinti=0;
for(i=0;i delay_1us();
}
voiddelay_1ms(void)//1ms
{
unsignedinti;
for(i=1;i<1142;i++);
}
voiddelay_ms(unsignedchart)
{
unsignedchari=0;
for(i=0;i {
delay_1ms();
}
}
/*********************************************************************
Project:超聲波測距
Chiptype:ATMEGA8
Clockfrequency:8.000000MHz
*********************************************************************/
#include
#include
#pragmainterrupt_handlerintt0:10//T0溢出中斷
#pragmainterrupt_handlericp_timer1:6//T1捕捉中斷
#pragmadata:code//設(shè)定數(shù)據(jù)區(qū)為程序存儲器
constunsignedchartab1[]={0X28,0XEE,0X32,0XA2,0XE4,
0XA1,0X21,0XEA,0X20,0XA0};//七段譯碼字型表(lm,cm)
constunsignedchartab2[]={0X08,0XCE,0X12,0X82,0XC4,
0X81,0X01,0XCA,0X00,0X80};//七段譯碼字型表(m)
#pragmadata:data//設(shè)定數(shù)據(jù)區(qū)回到數(shù)據(jù)存儲器
unsignedcharledbuff[]={0X08,0X28,0X28};//顯示緩沖區(qū)
unsignedcharcount;
unsignedcharnewcount;
unsignedcharoldcount;
voidintt0(void)//T0中斷定時程序,定時58US,即測距1CM.
{
TCNT0=0XC6;
count++;
}
voidicp_timer1(void)//ICP1捕捉中斷,捕捉頻率38.5~41.6
{
if(96<=ICR1<=104)
{
SREG&=0X7f;
newcount=count-13;
ICR1=0;
TCNT1=0;
TCCR1B=0X81;
}
}
voiddelay_1us(void)//1us
{
asm("nop");
}
voiddelay_us(unsignedintt)//tus
{
unsignedinti=0;
for(i=0;i
}
voiddelay_1ms(void)//1ms
{
unsignedinti;
for(i=1;i<1142;i++);
}
voiddelay_ms(unsignedchart)
{
unsignedchari=0;
for(i=0;i
delay_1ms();
}
}
關(guān)鍵詞:
AVR單片機超聲波測
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論