“蓝桥杯”全国软件和信息技术专业人才大赛指导合集【2.8】

6.1.2 初始化程序设计

初始化程序包括 SysTick 初始化、 按键接口初始化、 LED 接口初始化、 LCD 接口初始化、 UART接口初始化、 I2C 接口初始化和 ADC 初始化等。

1) SysTick 初始化程序设计

SysTick 初始化用 SysTick_Config()实现。2)按键接口初始化程序设计

按键接口初始化程序使用“ key.c”中的 KEY_Init()实现。3) LED 接口初始化程序设计

LED 接口初始化程序使用“ led.c”中的 LED_Init()实现。4) LCD 接口初始化程序设计

LCD 接口初始化程序使用“ lcd.c”中的 STM3210B_LCD_Init()实现。

5) UART 接口初始化程序设计

UART 接口初始化程序使用“ usart.c”中的 USART2_Init()实现。6) I2C 接口初始化程序设计

I2C 接口初始化程序使用“ i2c.c”中的 i2c_init()实现。7) ADC 初始化程序设计

ADC 初始化程序使用“ adc.c”中的 ADC1_Init()实现。

6.1.3 处理程序设计

处理程序包括按键处理、 LCD 处理、 ADC 处理、 UART 处理和 LED 处理等, LED 处理在 SysTick中断处理程序中实现。液位检测告警系统处理程序流程图如图 6.6 所示。

1)按键处理程序设计

按键处理程序根据状态图进行设计。液位检测告警系统工作状态图如图 6.7 所示。

系统共有 4 个状态: 1 个液位检测状态和 3 个阈值状态,液位检测状态和阈值状态间用 B1 键切换, 3 个阈值状态间用 B2 键切换, 3 个阈值状态下用 B3 键或 B4 键加或减阈值。

按键处理程序设计如下:
void KEY_Proc(void)
{
unsigned char ucKey_Val;
ucKey_Val = KEY_Scan();
if(ucKey_Val != ucKey_Long)
ucKey_Long = ucKey_Val;
else
ucKey_Val = 0;
switch(ucKey_Val)
{
case 1: // B1: 设置键
if(!ucState)
ucState = 1;
else
{
if((pucTh[0] < pucTh[1]) && (pucTh[1] < pucTh[2]))
{
LCD_DisplayStringLine(Line3, (u8*)" ");
i2c_write(pucTh, 0, 3); // 保存阈值
ucState = 0;
}
else
{
LCD_SetTextColor(Red);
LCD_DisplayStringLine(Line3, (u8*)" Threshold Error ");
LCD_SetTextColor(White);
}
}break;
case 2: // B2: 切换键
if(ucState)
if(++ucState == 4)
ucState = 1;
break;
case 3: // B3: 阈值加
if(ucState)
if(pucTh[ucState-1] < 95)
pucTh[ucState-1] += 5;
break;
case 4: // B4: 阈值减
if(ucState)
if(pucTh[ucState-1] > 5)
pucTh[ucState-1] -= 5;
}
}

2) LCD 处理程序设计

LCD 处理程序根据 LCD 显示界面参考图设计如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值