当前位置: 首页 > news >正文

蓝桥杯单片机答题技巧

1.进入每个界面后为固定显示的子界面

每次从周期界面进入电压界面后,均为通道 1 电压显示界面

 2.按键长按的处理方法

 

3.DAC输出一定函数关系的电压值

用数学方程计算出来之后再去用代码编写

4.参数调整时无效,退出才有效

写两个临时变量 

sprintf(pucSeg_Buf,"P  %3.1f %3.1f",ADC_Parm_Max_temp,ADC_Parm_Min_temp);case 4:Disp_Mode=(Disp_Mode+1)%3;if(Disp_Mode==2){ADC_Parm_Max_temp=ADC_Parm_Max;ADC_Parm_Min_temp=ADC_Parm_Min;}if(Disp_Mode==0){ADC_Parm_Max=ADC_Parm_Max_temp;ADC_Parm_Min=ADC_Parm_Min_temp;}break;case 6:if(Disp_Mode==2){if(Parm_Mode==0){if(ADC_Parm_Max_temp==5.0){ADC_Parm_Max_temp=0.5;}else{ADC_Parm_Max_temp+=0.5;}}else{if(ADC_Parm_Min_temp==5.0){ADC_Parm_Min_temp=0.5;}else{ADC_Parm_Min_temp+=0.5;}	}}break;case 7:if(Disp_Mode==2){if(Parm_Mode==0){if(ADC_Parm_Max_temp==0.5){ADC_Parm_Max_temp=5.0;}else{ADC_Parm_Max_temp-=0.5;}}else{if(ADC_Parm_Min_temp==0.5){ADC_Parm_Min_temp=5.0;}else{ADC_Parm_Min_temp-=0.5;}	}}break;

 5.双路读取ADC的写法

//模块代码编写unsigned char PCF8591_ADC(unsigned char dat)
{unsigned char temp;I2CStart();I2CSendByte(0x90);I2CWaitAck();I2CSendByte(dat);I2CWaitAck();I2CStart();I2CSendByte(0x91);I2CWaitAck();temp=I2CReceiveByte();I2CSendAck(0);temp=I2CReceiveByte();I2CSendAck(1);I2CStop();return temp;
}

6.无效按键的处理

定义变量

unsigned int uiError = 0;

处理方法

switch(Key_Val){case 0:break;case 12:uiError = 0;Disp_Mode = (Disp_Mode + 1) % 3;if(Disp_Mode == 2){EEPROM_Buf[0] = (unsigned char)(ADC_Parm * 10);EEPROM_Write(EEPROM_Buf, 0x00, 1);}break;case 13:if(Disp_Mode == 2){uiError = 0;uiCount = 0;}else{uiError++;}break;case 16:if(Disp_Mode == 1){uiError = 0;if(ADC_Parm == 5.0){ADC_Parm = 0.0;}else{ADC_Parm += 0.5;}}else{uiError++;}break;case 17:if(Disp_Mode == 1){uiError = 0;if(ADC_Parm == 0.0){ADC_Parm = 5.0;}else{ADC_Parm -= 0.5;}}else{uiError++;}break;default:uiError++;break;}

7.触发条件以及时间的判断

void ADC_Proc(void)
{if(uiADC_Dly<200)return;uiADC_Dly=0;ucADC=PCF8591_ADC();if(((ucADC_Old/51.0)>ADC_Parm_Old)&&((ucADC/51.0)<ADC_Parm)){uiCount++;ulled=ulms;}if(((ucADC_Old/51.0)<ADC_Parm_Old)&&((ucADC/51.0)>ADC_Parm)){ulled=ulms;}ucADC_Old=ucADC;ADC_Parm_Old=ADC_Parm;
}
if(((ucADC/51.0) < ADC_Parm) && (ulms - ulled > 5000)){ucLed |= 0x01;}else{ucLed &= ~0x01;}

8.串口的使用与矩阵键盘的改写

9.串口模块

void UartInit(void)		//4800bps@12.000MHz
{SCON = 0x50;		//8位数据,可变波特率AUXR |= 0x01;		//串口1选择定时器2为波特率发生器AUXR |= 0x04;		//定时器2时钟为Fosc,即1TT2L = 0x8F;		//设定定时初值T2H = 0xFD;		//设定定时初值AUXR |= 0x10;		//启动定时器2ES = 1;
}
#include "uart.h"void Uart_SendString(unsigned char *pucBuf)
{while(*pucBuf != '\0'){SBUF = *pucBuf++;while(TI == 0);TI = 0;}
}

相关文章:

  • log日志最佳实践
  • openssl 使用生成key pem
  • C#创建桌面快捷方式:使用 WSH 实现快捷方式生成
  • 机器学习-模型选择与调优
  • Python Day32 学习
  • LeetCode 每日一题 2025/5/19-2025/5/25
  • 每日算法刷题计划Day15 5.25:leetcode不定长滑动窗口求子数组个数越短越合法3道题,用时1h
  • python 实现从座位图中识别不同颜色和数量的座位并以JSON格式输出的功能
  • GO 语言基础3 struct 结构体
  • C++ 定义一个结构体,用class还是struct
  • day 36
  • 自定义 win10 命令
  • 人工智能数学基础实验(四):最大似然估计的-AI 模型训练与参数优化
  • 人工智能数学基础实验(五):牛顿优化法-电动汽车充电站选址优化
  • Pandas数据规整
  • Autodl训练Faster-RCNN网络--自己的数据集(二)
  • C++虚函数与类对象模型深度解析
  • binlog 解析工具——my2sql
  • 使用JSP踩过的坑
  • Double使用注意事项
  • 长沙如何做百度的网站/seo课程哪个好
  • 荆门网站建设 金键盘/百度首页百度一下
  • 网站建设与管理计划/全媒体运营师报考条件
  • 网站好坏标准/外贸快车
  • 自己建设影视网站/除了91还有什么关键词
  • 如何做手机网站/网站百度权重