python打印七段数码管引脚图_模拟倒车雷达报警

1.题目要求

我们在第九章第3讲的例程基础上,实现用超声波模块模拟倒车雷达报警的功能,当障碍物距离超声波模块小于等于10cm左右我们就用蜂鸣器鸣叫产生报警,大于10cm就不报警。代码上添加的程序量比较少,我们只是把定时时间改为200微秒好使蜂鸣器鸣叫的比较尖锐。

2.main.c测试代码#include 

#include  //详见第六章第8讲

#include     //详见第八章第11讲

#include 

sbit TRIG = P2^0;

sbit ECHO = P2^1;

u8 FLAG=0,BEEP_FLAG=0;

void delay_20us()

{

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

}

void main()

{

u16 time_data,CM_data;

TRIG = 0;

ECHO = 0;

LED_Init();        //初始化LED硬件模块

EA = 1;            //闭合总中断开关

TIM1_Init(100,34); //定时100us,这是为了使蜂鸣器鸣叫的比较尖锐,34是微调使定时精度更高,每次微调都由中断函数里的内容而决定

TMOD &= 0xF0;

TMOD |= 0x01;

ET0  = 1;

while(1)

{

TH0  = 0;

TL0  = 0;

FLAG = 0;      //上次如果是超出测量范围,FLAG被置1,这次再测就要清0

//启动发射声波

TRIG = 1;

delay_20us();

TRIG = 0;

while(!ECHO);  //声波开始发射,ECHO引脚拉高退出这个循环

TR0 = 1;       //打开定时器进行计数

while(ECHO);   //收到声波返回来的信号引脚就拉低,退出这个循环,如果定时器溢出,就会进入中断函数执行“FLAG=1;”也就是距离太远,一直没有收到反射回来的信号

TR0 = 0;       //关闭定时器结束计数

time_data =TH0;

time_data=(time_data<<8)|TL0;                //把两个八位的寄存器里的值组成一个16位变量的值,也就是定时器计数值

CM_data = time_data/54;                      //得到厘米的表达式

if(FLAG==1){ShowNumber(999); delay_ms(20);}  //超出测量范围显示999,延时为的是不让数码管频繁在两个数的偏差之间变化太频繁

else {ShowNumber(CM_data); delay_ms(20);}

if(CM_data<=10)BEEP_FLAG=1;                  //测距小于等于10CM蜂鸣器鸣叫

else BEEP_FLAG=0;

}

}

void TIM1_IRQHandler() interrupt 3

{

static u8 i=0;

TH1 = T1RH;                //重新加载重载值

TL1 = T1RL;

i++;

if(i>=5){i=0; SEG_Scan();} //间隔1ms刷新数码管

if(BEEP_FLAG==1)BEEP=!BEEP;

}

void TIM0_IRQHandler()  interrupt 1

{

FLAG=1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值