题目要求:


代码段:
main.c:
#include "main.h"
uchar LED_buff=0xff,ULN_buff=0x00,SEG_buff[8];
uchar mode = 0;
uint ult_temp_jl,ult_temp_cs=30;
uchar uart_buff[];
void main()
{
Sys_Init();
Timer2_Init();
Ultrasonic_Timer0Init();
UartInit();
// SendString("I am OK\r\n");
while(1)
{
/*****每100ms执行一次*****/
if(Task_100ms)
{
Task_100ms=0;
Dis_ctrl();
}
/*****每200ms执行一次*****/
if(Task_200ms)
{
Task_200ms=0;
if(ult_temp_jl>ult_temp_cs)
{
if((LED_buff&0x04)==0x00)
{
Display_Led(2,1);
}
else
{
Display_Led(2,0);
}
}
else
{
Display_Led(2,1);
}
}
/*****每500ms执行一次*****/
if(Task_500ms)
{
Task_500ms=0;
}
/*****每1s执行一次*****/
if(Task_1s)
{
Task_1s=0;
ult_temp_jl=Wave_Recv();
};
Key_ctrl();
}
}
void Key_ctrl() //KRY
{
switch(Keynum)//长短按
{
case 0x01:
mode++;mode=mode%2;
Keynum=Keynum&0x80;
break; //短按松开有效
case 0x02:
if(mode==0)
{
ult_temp_cs=ult_temp_jl;
}
Keynum=Keynum&0x80;
break;
case 0x03:
if(mode==1)
{
ult_temp_cs=ult_temp_cs+10;

该代码实现了一个基于单片机的系统,主要功能包括超声波测距、液晶显示、按键控制以及UART通信。系统使用定时器中断来实现不同时间间隔的任务,如每100ms、200ms、500ms和1s执行不同的操作。超声波测得的距离会与预设阈值进行比较,并在LCD上显示。同时,用户可以通过按键来设定阈值或查看当前距离。UART接口用于发送数据。
最低0.47元/天 解锁文章
740

被折叠的 条评论
为什么被折叠?



