- 打卡等级:以坛为家II
- 打卡总天数:499
- 最近打卡:2025-05-07 08:08:50
荣誉版主
- 积分
- 3500
|
基于STC32G12K128实验箱V9.62_实验之ADC_16键输入
本实验在《基于STC32G12K128实验箱V9.62_实验之数码管显示字符串》实验基础上,参照官方Demo实验16,增加ADC_16键输入实验。
几点说明和体会。
1,实验箱采用一个ADC模拟输入端口,实现16键输入,有新意,也有实用意义,是必须学习的。
2,学习了STC32G的ADC转换编程, 加上了自己的简单按键判别的算法,返回不同的键值。
3,实验程序开始运行,
显示 “P-STC32G”
按任意键……
显示 “Ad000-00”
当按下实验箱16键其中之一键时:
数码管左边显示ADC转换结果数值(16进制显示),以便观察和体验ADC转换的稳定性;
数码管右边显示键值数据(16进制显示),以便观察和体验不同的键值。
主程序
//********************************************************************************
// 名称: 实验8位数码管动态扫描显示 + ADC_16KEY 按键测试
// 基于: STC32G12K128 V9.62 实验箱 (P10--ADC通道0)
// 实验: .../STC-USB-Link1D仿真器调试/GPIO基本输出控制/定时器x中断/ADC12位转换...
// 编程: 浦晓明(浦江一水) 2023-12-10
//********************************************************************************
#include "STC32G_SYS.H"
#include "LED8D.H"
#include "ADCK.H"
/************* 全局变量说明 **************/
char S[16]; //显示字符串缓存
u8 Kv;
extern u16 Kad;
//========================================================================
// 函数: void delay_ms(unsigned int ms)
// 描述: 毫秒级延时函数。
// 参数: ms,要延时的ms数,自动适应主时钟.
//=====================================================================
void delay_ms(unsigned int ms)
{ unsigned int i;
do
{ i = MAIN_Fosc / 6000;
while(--i);
} while(--ms);
}
/**** 主函数入口 ************************/
void main(void)
{
SYS_Init(); //系统初始化
LED8D_Init(); //8数码管初始化
ADCK_Init(); //ADC键初始化
LED8D_Str(0,"P-StC32G"); //显示名称字串
GETCH(); //按任意键继续...
//主循环...
while(1)
{ Kv=0; //键值复0
Kv=RDKEY(); //读ADC键
sprintf(S,"AD%03X-%02X",Kad,Kv); //显示ADC值和键值(16进制)
LED8D_Str(0,S); //送显示段码缓存
delay_ms(50);
}
}
其余源代码见工程文件包
基于STC32G12K128实验箱V9.62_实验之ADC_16键输入.rar
(48.14 KB, 下载次数: 40)
|
|