该内容仅针对我自己学习的开发板做的笔记,在实际开发中需要针对目标电路板的原理图进行针对性研究。
P0_0
:蜂鸣器,按频率发音,1
:高,0
:低P0_1
:电动马达,0
:停,1
:动P5_3
:小蓝灯,0
:灭,1
:亮P2_7
:1 号 LED 灯,0
:亮,1
:灭P2_6
:2 号 LED 灯,0
:亮,1
:灭P1_5
:3 号 LED 灯,0
:亮,1
:灭P1_4
:4 号 LED 灯,0
:亮,1
:灭P2_3
:5 号 LED 灯,0
:亮,1
:灭P2_2
:6 号 LED 灯,0
:亮,1
:灭P2_1
:7 号 LED 灯,0
:亮,1
:灭P2_0
:8 号 LED 灯,0
:亮,1
:灭P5_1
:1 号按键,0
:按下,1
:弹起P5_2
:2 号按键,0
:按下,1
:弹起P5_3
:3 号按键,0
:按下,1
:弹起P5_4
:4 号按键,0
:按下,1
:弹起P3_4
:矩阵键盘第 1 行引脚P3_5
:矩阵键盘第 2 行引脚P4_0
:矩阵键盘第 3 行引脚P4_1
:矩阵键盘第 4 行引脚P0_3
:矩阵键盘第 1 列引脚P0_6
:矩阵键盘第 2 列引脚P0_7
:矩阵键盘第 3 列引脚P1_7
:矩阵键盘第 4 列引脚ADC初始化,有三个参数:
① ADC引脚
② 时钟分频数, 可选值是 2 - 32 之间的偶数
③ 输出值的位数:可选值:8位、9位、10位、11位、12位
读取 ADC_P05 引脚
#include <STC8HX.h>
uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
#include "lib/twen_board.h"
#include "lib/UART.h"
#include "lib/ADC.h"
#include <stdio.h>
#include "lib/delay.h"
void putchar(char c) {
if (c == '\n') {
uart_putchar(UART_1, 0x0d);
uart_putchar(UART_1, 0x0a);
} else {
uart_putchar(UART_1, (uint8)c);
}
}
void setup() {
twen_board_init();//天问51初始化
uart_init(UART_1, UART1_RX_P30, UART1_TX_P31, 115200, TIM_1);//初始化串口
adc_init(ADC_P05, ADC_SYSclk_DIV_2, ADC_12BIT);
}
void loop() {
printf_small("采样值:%d", adc_read(ADC_P05));
delay(1000);
}
void main(void) {
setup();
while(1){
loop();
}
}
读取 ADC_P10 引脚,最大读取 2.5
#include <STC8HX.h>
uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
#include "lib/twen_board.h"
#include "lib/ADC.h"
#include "lib/UART.h"
#include <stdio.h>
#include "lib/delay.h"
float adc_value = 0;
void putchar(char c) {
if (c == '\n') {
uart_putchar(UART_1, 0x0d);
uart_putchar(UART_1, 0x0a);
} else {
uart_putchar(UART_1, (uint8)c);
}
}
void setup() {
twen_board_init();//天问51初始化
uart_init(UART_1, UART1_RX_P30, UART1_TX_P31, 115200, TIM_1);//初始化串口
adc_init(ADC_P10, ADC_SYSclk_DIV_2, ADC_12BIT); // 初始化 ADC
}
void loop() {
adc_value = adc_read(ADC_P10);
adc_value = (adc_value * 2.5) / 4095;
printf_small("电压放大 1000被 is : %d\n", ((uint16)(adc_value * 10000)));
delay(1000);
}
void main(void) {
setup();
while(1){
loop();
}
}
ADC_REF,最大读取 1.19 v
#include <STC8HX.h>
uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
#include "lib/twen_board.h"
#include "lib/ADC.h"
#include "lib/UART.h"
#include <stdio.h>
#include "lib/delay.h"
float adc_value = 0;
void putchar(char c) {
if (c == '\n') {
uart_putchar(UART_1, 0x0d);
uart_putchar(UART_1, 0x0a);
} else {
uart_putchar(UART_1, (uint8)c);
}
}
void setup() {
twen_board_init();//天问51初始化
adc_init(ADC_REF, ADC_SYSclk_DIV_10, ADC_12BIT);//ADC初始化
uart_init(UART_1, UART1_RX_P30, UART1_TX_P31, 115200, TIM_1);//初始化串口
}
void loop() {
adc_value = adc_read(ADC_REF);
adc_value = (4095 * 1.19) / adc_value;
printf_small("voltage(x1000) is : %d\n", ((uint16)(adc_value * 1000)));
delay(1000);
}
void main(void) {
setup();
while(1){
loop();
}
}
更多【fpga开发-STC8H8K64U 学习笔记 - ADC 采样】相关视频教程:www.yxfzedu.com