int main(void)
{
WDT_A_hold(WDT_A_BASE);
SystemClock_Init();
UART_Init(USCI_A0_BASE, 115200);
OLED_Init();
OLED_Clear();
OLED_ShowNum1(1,1,1,1);////SCL接P6.3,//SDA接P6.4
OLED_ShowString(2,2,"ss",5);
OLED_ShowNum1(3,3,distance,10);
init_HC_SR04();
Timer_A2_Capture_Init();
//interrupts enabled
__bis_SR_register(GIE);
while(1)
{
// 触发超声波测距
GPIO_setOutputHighOnPin(GPIO_PORT_P2, TRIG_PIN);
delay_us(10); // 至少持续10us
GPIO_setOutputLowOnPin(GPIO_PORT_P2, TRIG_PIN);
delay_ms(1000);
// UART_printf(USCI_A0_BASE,"高电平持续时间:%f ms",1000.*Sign_Counts/UCS_getSMCLK());//UCS_getSMCLK是获取当前SMCLK时钟频率,当前SMCLK为1048576HZ
// 计算距离(假设声速为340m/s)0.34 m/ms 0.34x100 =34 cm/ms --> /2(往返路程)
distance = ((1000.*Sign_Counts/UCS_getSMCLK()) * 34) /2;
// // 通过串口助手发送距离值
OLED_ShowNum1(3,3,distance,10);
}
}主函数
原理图:无
仿真:无
程序:
chaoshenbo.zip
(686.2 KB, 下载次数: 22)
|