#define uchar unsigned char #define uint unsigned int #define ULint unsigned char //宏定义 char flags=0;//超声波 char flag1s=0;//超声波距离 uint time=0;//计算定时间 ULint L_=0;//计算距离 //显示模式 0正常 1最大值调整 2最小值调整 uchar mode=0; uint Max=220; uint Min=190; uchar k=0;//按键标志 //头函数 #include <reg52.h> #include <intrins.h> #include "BJ_Key.h" //报警按键 #include "display.h" //显示头函数 #include "ultrasonic_wave.h"//超声波头函数 void delayms(uint ms); //主函数 void main() { Init_ultrasonic_wave(); Init1602();//屏幕初始化 while(1) { Key(); if(mode==0) { StartModule();//启动超声波 while(!RX); //当RX为零时等待 TR0=1; //开启计数 while(RX); //当RX为1计数并等待 TR0=0; //关闭计数 delayms(20); //20MS Conut(L_); //计算距离 if(L_<Min) { Feng=0; Motor_Start(); } else if(L_>Max) { Feng=1; Motor_Stop(); } else { Feng=1; Motor_Start(); } Display_1602(L_); } //调整显示 else if(mode!=0) { //最大最小值 Init_MaxMin(); while(mode!=0) { Key(); if(k==1&&mode==1) { Init_MaxMin(); write_com(0x8d);//设置位置 } else if(k==1&&mode==2) { Init_MaxMin(); write_com(0x8d+0x40);//设置位置 } k=0; } //界面初始化 Init1602(); } } } void delayms(uint ms) { uchar i=10,j; for(;ms;ms--) { while(i--) { j=10; while(j--); } } }解释这串代码
时间: 2024-04-06 10:30:29 浏览: 18
这段代码是一个基于51单片机的超声波测距控制系统。以下是对代码的解释:
首先,通过宏定义定义了一些数据类型和常量,包括uchar(无符号字符型)、uint(无符号整型)、ULint(无符号长整型),以及一些常量和标志。然后,通过包含相关头文件和函数库,引入了所需的函数和变量。
在主函数中,主要分为两种模式:正常模式和调整模式。在正常模式下,通过调用Init_ultrasonic_wave()函数初始化超声波模块,并通过StartModule()函数启动超声波测距,然后通过计时器中断获取超声波信号的回波时间,并计算出距离。通过比较距离和最大值、最小值的大小,来控制电机启动和停止、风机开启和关闭,并将距离显示在1602液晶屏上。
在调整模式下,可以通过按键调整最大值和最小值。通过调用Init_MaxMin()函数初始化最大值和最小值,并通过write_com()函数设置光标位置,以便在液晶屏上显示当前调整的数值。在调整过程中,需要不断扫描按键状态,如果按键被按下,则对相应的最大值或最小值进行修改。
最后,通过delayms()函数实现了延时功能。
相关问题
#define uchar unsigned char #define uint unsigned int这两段代码有什么作用
这两段代码是用来定义数据类型的宏定义。它的作用是将"uchar"和"uint"分别定义为"unsigned char"和"unsigned int"的别名。
通过定义这些别名,可以在代码中使用这些别名来代替相应的数据类型,使代码更加清晰易读,并提高代码的可移植性。例如,可以使用"uchar"代替"unsigned char"来声明一个无符号字符变量,使用"uint"代替"unsigned int"来声明一个无符号整数变量。这样做可以使代码更具可读性和可维护性,而且如果需要修改数据类型,只需要修改宏定义即可。
#include<REGX51.H> #include<intrins.h> #define uchar unsigned char #define uint unsigned int什么意思
这段代码是一个基于51单片机的C语言程序,其中:
- `#include<REGX51.H>` 是包含了51单片机的头文件,可以使用其中定义的寄存器及功能;
- `#include<intrins.h>` 是包含了汇编语言的头文件,可以使用其中定义的内嵌汇编函数;
- `#define uchar unsigned char` 定义了一个名为`uchar`的宏,表示无符号字符类型;
- `#define uint unsigned int` 定义了一个名为`uint`的宏,表示无符号整数类型。