#include "reg52.h"
#include "absacc.h"
#include "intrins.h"
sbit TX = P1^0;
sbit RX = P1^1;
unsigned int distance = 0;
unsigned char code SMG_duanma[18]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};
void DelaySMG(unsigned int t)
{
while(t--);
}
void SelectHC573(unsigned char channel)
{
switch(channel)
{
case 4:
P2 = (P2 & 0x1f) | 0x80;
break;
case 5:
P2 = (P2 & 0x1f) | 0xa0;
break;
case 6:
P2 = (P2 & 0x1f) | 0xc0;
break;
case 7:
P2 = (P2 & 0x1f) | 0xe0;
break;
}
}
void DisplaySMG_Bit(unsigned char pos, unsigned char value)
{
P0 = 0xff;
SelectHC573(6);
P0 = 0x01 << pos;
SelectHC573(7);
P0 = value;
}
void Display_Distance()
{
if(distance == 999)
{
DisplaySMG_Bit(0, SMG_duanma[15]); //超出F
DelaySMG(500);
}
else
{
DisplaySMG_Bit(5, SMG_duanma[distance / 100]);
DelaySMG(500);
DisplaySMG_Bit(6, SMG_duanma[(distance % 100) / 10]);
DelaySMG(500);
DisplaySMG_Bit(7, SMG_duanma[distance % 10]);
DelaySMG(500);
}
}
void Delay14us() //@12.000MHz
{
unsigned char i;
_nop_();
_nop_();
i = 39;
while (--i);
}
蓝桥杯超声波
于 2024-04-11 23:03:32 首次发布