- UID
- 373967
- 帖子
- 8817
- 主題
- 2609
- 精華
- 0
- 積分
- 993
- 楓幣
- 4477
- 威望
- 970
- 存款
- 30000
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 50
- 在線時間
- 452 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-11
|
以下是使用STC8H1K08製作微型示波器的示例代碼:
#include <STC8.H>
#define LCD_SCL P1_0
#define LCD_SDA P1_1
#define LCD_RST P1_2
#define OSC_OUT P3_3
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 i,t;
init_LCD();
display("OSC:",0,0);
while(1)
{
for(i=0;i<128;i++)
{
t=OSC_OUT;
t=(t<<8)+OSC_OUT;
sprintf(buf,"%04d",t);
display(buf,i%16,i/16+1);
delay(50);
}
}
}
在這個示例代碼中,使用了P3.3作為示波器的輸入口。程序每50個時鐘週期讀取一次P3.3引腳的狀態,並將讀取到的數值顯示在液晶屏幕上,實現了一個簡單的微型示波器。 |
|