- UID
- 373967
- 帖子
- 8779
- 主題
- 2609
- 精華
- 0
- 積分
- 993
- 楓幣
- 2637
- 威望
- 970
- 存款
- 31556
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 50
- 在線時間
- 451 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-5
|
以下是使用STC8H1K08製作方波頻率測量示例:
#include <STC8.H>
#define LCD_SCL P1_0
#define LCD_SDA P1_1
#define LCD_RST P1_2
#define TRIG P3_3
#define ECHO P3_2
typedef unsigned char u8;
typedef unsigned int u16;
void delay(u16 i)
{
while(i--);
}
void init_LCD()
{
LCD_SCL=0;
LCD_SDA=1;
LCD_RST=1;
delay(50000);
LCD_RST=0;
delay(50000);
LCD_RST=1;
delay(50000);
IIC_start();
IIC_write_byte(0x78);
IIC_write_byte(0x8a);
IIC_write_byte(0x00);
IIC_stop();
IIC_start();
IIC_write_byte(0x78);
IIC_write_byte(0xae);
IIC_write_byte(0x00);
IIC_stop();
}
void display(u8 *s,u8 x,u8 y)
{
u8 i;
IIC_start();
IIC_write_byte(0x78);
IIC_write_byte(0x40|x);
IIC_write_byte(0xb0|y);
for(i=0;i<8;i++)
{
IIC_write_byte(table[s[i]]);
}
IIC_stop();
}
void main()
{
u8 buf[16];
u16 t;
init_LCD();
display("Freq:",0,0);
while(1)
{
TRIG=1;
delay(5);
TRIG=0;
while(!ECHO);
t=0;
while(ECHO)
{
t++;
delay(10);
}
t=t*10/58;
sprintf(buf,"%d",t);
display(buf,32,0);
delay(500000);
}
}
在這個示例代碼中,使用了P3.3作為方波信號輸出口,使用P3.2作為接收超聲波回波信號的輸入口。程序通過測量接收回波信號的時間,計算出方波信號的頻率,並將結果顯示在液晶屏幕上。 |
|