96SEO 2026-02-20 05:46 0
获取数字变量需要用到用到光敏电阻的AO口AO端口接在PA0引脚即可

AD_Init(void){//初始化ADRCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,
ENABLE);//开启ADC1的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE);//开启GPIOA的时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);//配置ADC模块工作时钟
12MHZ/*配置GPIO口*/GPIO_InitStruct.GPIO_Mode
GPIO_Mode_AIN;//模拟输入GPIO_InitStruct.GPIO_Pin
GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed
GPIO_Speed_50MHz;GPIO_Init(GPIOA,
GPIO_InitStruct);/*在规则组列表第一个位置写入通道0这个通道*/ADC_RegularChannelConfig(ADC1,
ADC_SampleTime_55Cycles5);/*结构体初始化ADC*/ADC_InitStruct.ADC_ContinuousConvMode
DISABLE;//单次转换ADC_InitStruct.ADC_DataAlign
ADC_DataAlign_Right;//数据右对齐ADC_InitStruct.ADC_ExternalTrigConv
ADC_ExternalTrigConv_None;//触发方式不使用外部触发即软件触发ADC_InitStruct.ADC_Mode
ADC_Mode_Independent;//ADC工作模式为独立模式ADC_InitStruct.ADC_NbrOfChannel
1;//通道数目ADC_InitStruct.ADC_ScanConvMode
ADC_InitStruct);//开启ADC电源ADC_Cmd(ADC1,
ENABLE);/*给ADC校准*/ADC_ResetCalibration(ADC1);//复位校准while(ADC_GetResetCalibrationStatus(ADC1)
SET);//返回ADC1复位校准状态ADC_StartCalibration(ADC1);//开始校准while(ADC_GetCalibrationStatus(ADC1)
AD_Getvailue(void){//获取信息ADC_SoftwareStartConvCmd(ADC1,
ENABLE);//软件触发转换while(ADC_GetFlagStatus(ADC1,
ADC_GetConversionValue(ADC1);//读取数据
main(void){OLED_Init();//初始化OLEDAD_Init();while(1){uint16_t
此代码的不足之处在于每次写入数字都会提前占据固定位置这个固定位置在整个过程是不能更改的十分影响观感
AD_Init(void){//初始化ADRCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,
ENABLE);//开启ADC1的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE);//开启GPIOA的时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);//配置ADC模块工作时钟
12MHZ/*配置GPIO口*/GPIO_InitStruct.GPIO_Mode
GPIO_Mode_AIN;//模拟输入GPIO_InitStruct.GPIO_Pin
GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed
GPIO_Speed_50MHz;GPIO_Init(GPIOA,
GPIO_InitStruct);/*在规则组列表第一个位置写入通道0这个通道*/ADC_RegularChannelConfig(ADC1,
ADC_SampleTime_55Cycles5);/*结构体初始化ADC*/ADC_InitStruct.ADC_ContinuousConvMode
DISABLE;//单次转换ADC_InitStruct.ADC_DataAlign
ADC_DataAlign_Right;//数据右对齐ADC_InitStruct.ADC_ExternalTrigConv
ADC_ExternalTrigConv_None;//触发方式不使用外部触发即软件触发ADC_InitStruct.ADC_Mode
ADC_Mode_Independent;//ADC工作模式为独立模式ADC_InitStruct.ADC_NbrOfChannel
1;//通道数目ADC_InitStruct.ADC_ScanConvMode
ADC_InitStruct);//开启ADC电源ADC_Cmd(ADC1,
ENABLE);/*给ADC校准*/ADC_ResetCalibration(ADC1);//复位校准while(ADC_GetResetCalibrationStatus(ADC1)
SET);//返回ADC1复位校准状态ADC_StartCalibration(ADC1);//开始校准while(ADC_GetCalibrationStatus(ADC1)
AD_Getvailue(void){//获取信息ADC_SoftwareStartConvCmd(ADC1,
ENABLE);//软件触发转换while(ADC_GetFlagStatus(ADC1,
ADC_GetConversionValue(ADC1);//读取数据
main(void){OLED_Init();//初始化OLEDAD_Init();while(1){uint16_t
length(num));OLED_ShowString(2,
length(num1));Delay_ms(300);OLED_Clear();}
写入数据是采用覆盖制例如上次写入的数据是1234本次写入的数据是999那么此时展现的效果为9994,由于ADO取值范围为[0
100]所以为了不影响数据的合理性所以必须要在每次写入新数据时必须要清理一下OLED
但是由于提供的清屏函数每次都是将全部数据清理掉所以画面刷新也要从新再全部刷新一次所以整体画面会不连贯
直接用清屏函数整体刷新会导致OLED画面不连贯清除行函数保留本行字符串清除本行剩余部分row清除的具体行len不希望被清除的字符串长度
需要将其copy到OLED.c文件下并在OLED.h文件内声明一下
其中row指你想要进行清屏操作的具体行OLED上一共能显示4行
其中len代表row行从左到右len长度区间的字符串将会被保留row行剩余其他数据将全被清除
AD_Init(void){//初始化ADRCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,
ENABLE);//开启ADC1的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE);//开启GPIOA的时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);//配置ADC模块工作时钟
12MHZ/*配置GPIO口*/GPIO_InitStruct.GPIO_Mode
GPIO_Mode_AIN;//模拟输入GPIO_InitStruct.GPIO_Pin
GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed
GPIO_Speed_50MHz;GPIO_Init(GPIOA,
GPIO_InitStruct);/*在规则组列表第一个位置写入通道0这个通道*/ADC_RegularChannelConfig(ADC1,
ADC_SampleTime_55Cycles5);/*结构体初始化ADC*/ADC_InitStruct.ADC_ContinuousConvMode
DISABLE;//单次转换ADC_InitStruct.ADC_DataAlign
ADC_DataAlign_Right;//数据右对齐ADC_InitStruct.ADC_ExternalTrigConv
ADC_ExternalTrigConv_None;//触发方式不使用外部触发即软件触发ADC_InitStruct.ADC_Mode
ADC_Mode_Independent;//ADC工作模式为独立模式ADC_InitStruct.ADC_NbrOfChannel
1;//通道数目ADC_InitStruct.ADC_ScanConvMode
ADC_InitStruct);//开启ADC电源ADC_Cmd(ADC1,
ENABLE);/*给ADC校准*/ADC_ResetCalibration(ADC1);//复位校准while(ADC_GetResetCalibrationStatus(ADC1)
SET);//返回ADC1复位校准状态ADC_StartCalibration(ADC1);//开始校准while(ADC_GetCalibrationStatus(ADC1)
AD_Getvailue(void){//获取信息ADC_SoftwareStartConvCmd(ADC1,
ENABLE);//软件触发转换while(ADC_GetFlagStatus(ADC1,
ADC_GetConversionValue(ADC1);//读取数据
main(void){OLED_Init();//初始化OLEDAD_Init();while(1){uint16_t
3);//ADO:长度为3所以要加3OLED_ShowNum(1,
length(num));OLED_ShowString(2,
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback