#include
#include "intrins.h"
#include "Lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
sbit BEEP = P1^6;//报警提示口
sbit vout = P1^7;//脉冲发送口
sbit P3_2 = P3^2;//中断接收口
//sbit INT = P1^6;
bit flag;
//unsigned char discol[4]={0xef,0xdf,0xbf,0x7f};
unsigned char code Anum_code[]={"0123456789"};
//unsigned char disbuf[4]={0,1,2,3};
float high,low;
unsigned char qian,bai,shi,ge;
//unsigned char j=600;
/*void delay_1ms(void)//12mhz delay 1.01ms
{
unsigned char x,y;
x=3;
while(x--)
{
y=40;
while(y--);
}
}
void delay_1us(unsigned char i) //i=1, 5us; i=2,7us; i=3,9us
{
while(--i);
}*/
void delay_50us(unsigned int t) // t=100, 5ms; t=1000, 50ms
{
unsigned char j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
/*void delay_50ms(unsigned int t) // t=10, 500ms; t=100, 5s;
{
unsigned int j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}*/
void display(void)
{
Write_Comm(0x01); //清显示屏
Write_Comm(0x80);
Write_Data(Anum_code[qian]);
//Write_Comm(0x80);
Write_Data(Anum_code[bai]);
//Write_Comm(0x80);
Write_Data(Anum_code[shi]);
//Write_Comm(0x83);
Write_Data(Anum_code[ge]);
}
void work(void)
{
//unsigned char qian,bai,shi,ge;
float value;
value=(high*256+low)*17/100;
qian=value/1000;
bai=(value-qian*1000)/100;
shi=(value-qian*1000-bai*100)/10;
ge=value-qian*1000-bai*100-shi*10;
if(value<=1000)
{
BEEP=0;
}
else
{
BEEP=1;
}
/*disbuf[0] = qian;
disbuf[1] = bai;
disbuf[2] = shi;
disbuf[3] = ge;*/
}
main()
{
//unsigned char i;
//unsigned int t;
Lcd_Init();
TMOD = 0x11;
TH0 =0;
TL0 = 0;
TH1 = 0;
TL1 = 0;
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
//EX0 = 1; //允许外部中断0
ET1 = 1; //允许定时器1中断
EA = 1;
TR1 = 1;
while(1)
{
//display();
if(flag)
{
EA = 0;
work();
//EA = 0;
display();
//delay_50ms(100);
//for(i=5;i>0;i--)
//for(t=6245;t>0;t--);
flag = 0;
ET0 = 0; //禁止定时器0中断
TH0 = 0;
TL0 = 0;
ET1 = 1;
TR1 = 1;
EA = 1;
}
}
}
void INTT1() interrupt 3
{
unsigned char i;
EA = 0;
TR1 = 0;
EX0 = 0; //禁止外部中断
TH0 = 0;
TL0 = 0;
TH1 = 0;
TL1 = 0;
EA = 1;
TR0 = 1;
for(i=0;i<4;i++)
{
vout = ~vout;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
delay_50us(40);
EX0 = 1; //开启外部中断
//ET0 = 1; //允许定时器0中断
/*if(j==600)
{
j=j+200;
TR0 = 1;
EX0 = 1; //开启外部中断
delay_50us(j);
INT=0;
}
else
{
j=j-200;
TR0 = 1;
EX0 = 1; //开启外部中断
delay_50us(j);
INT=0;
}*/
}
void PINT0() interrupt 0
{
//_nop_();
TR0 = 0; //关闭定时器0
EX0 = 0;
EA = 0;
low = TL0;
high = TH0;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
如果觉得《倒车雷达matlab仿真 51单片机倒车雷达测距系统仿真+源代码》对你有帮助,请点赞、收藏,并留下你的观点哦!