//屏幕刷新函数 static void TaskStartDisp (void) { char s[80]; sprintf(s,"%5d", OSTaskCtr); PC_DispStr(18,22,s,DISP_FGND_YELLOW + DISP_BGND_BLUE); sprintf(s,"%3d", OSCPUUsage); PC_DispStr(36,22,s,DISP_FGND_YELLOW + DISP_BGND_BLUE); sprintf(s,"%5d", OSCtxSwCtr); PC_DispStr(18,23,s,DISP_FGND_YELLOW + DISP_BGND_BLUE); sprintf(s,"V%4.2f",(float)OSVersion()*0.01); PC_DispStr(75,24,s,DISP_FGND_YELLOW + DISP_BGND_BLUE); switch (_8087) { case 0: PC_DispStr(71, 22,"NO FPU",DISP_FGND_YELLOW + DISP_BGND_BLUE); break; case 1: PC_DispStr(71, 22,"8087 FPU",DISP_FGND_YELLOW + DISP_BGND_BLUE); break; case 2: PC_DispStr(71, 22,"80287 FPU",DISP_FGND_YELLOW + DISP_BGND_BLUE); break; case 3: PC_DispStr(71, 22,"80387 FPU",DISP_FGND_YELLOW + DISP_BGND_BLUE); break; }}
时间: 2024-04-02 19:33:57 浏览: 36
这段代码是一个名为TaskStartDisp的静态函数,用于在屏幕上刷新uC/OS-II的任务信息和系统信息。函数中调用了PC_DispStr函数显示了任务数、CPU使用率、任务切换次数、uC/OS-II的版本号、FPU类型等信息。其中,sprintf函数用于将数据格式化为字符串,第一个参数是存储输出字符串的缓冲区,第二个参数是输出格式,第三个参数是要输出的数据。函数的返回值是输出的字符串长度。DISP_FGND和DISP_BGND是用于设置前景色和背景色的。在函数结尾处,使用了一个switch case语句根据_FPU变量的值输出FPU类型的信息。
相关问题
#include<reg52.h> #include<intrins.h> #define LCD1602_DB P0 sbit LCD1602_RS=P2^0; sbit LCD1602_RW=P2^1; sbit LCD1602_E=P2^2; unsigned int frq;//定义频率变量 unsigned char frq_display[5];//定义频率显示数组 void delay(unsigned int x);//延时函数 void write_com(unsigned char com);//写入指令函数 void write_data(unsigned char date);//写入数据函数 void init_lcd1602();//初始化LCD函数 void display(unsigned char *p);//显示函数 void measure();//测量频率函数 void main() { init_lcd1602();//初始化LCD1602 while(1) { measure();//测量频率 display(frq_display);//显示频率 } } void delay(unsigned int x)//延时函数 { unsigned int i,j; for(i=x;i>0;i--) { for(j=110;j>0;j--); } } void write_com(unsigned char com)//写入指令函数 { LCD1602_RS=0; LCD1602_RW=0; LCD1602_DB=com; LCD1602_E=1; _nop_(); _nop_(); LCD1602_E=0; } void write_data(unsigned char date)//写入数据函数 { LCD1602_RS=1; LCD1602_RW=0; LCD1602_DB=date; LCD1602_E=1; _nop_(); _nop_(); LCD1602_E=0; } void init_lcd1602()//初始化LCD函数 { write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c);//开显示,关光标,不闪烁 write_com(0x06);//读写指针自动加1,不移动屏幕 write_com(0x01);//清屏 write_com(0x80);//设置显示起始地址 } void display(unsigned char *p)//显示函数 { write_com(0x80);//设置显示起始地址 while(*p!='\0') { write_data(*p++); } } void measure()//测量频率函数 { unsigned long cnt=0; TMOD=0x01;//设置计时器0为16位计数模式 TH0=0; TL0=0; TR0=1;//计时器0开始计数 while(TF0==0);//等待计时器0溢出 TR0=0;//计时器0停止计数 cnt=TH0*256+TL0;//获取计时器0的计数值 frq=11059200/cnt;//计算频率值 sprintf(frq_display,"%4uhz",frq);//将频率值转换成字符串 TF0=0;//清除计时器0溢出标志 }
这段程序的作用是使用单片机测量外部信号的频率,并将频率值显示在LCD1602液晶屏上。程序中使用了计时器0来计数外部信号的频率,通过计算得到频率值,并将频率值转换成字符串形式,最后使用LCD1602显示出来。程序中需要连接计时器0的引脚和外部信号的引脚,具体接线方式可以参考单片机开发板的引脚图。同时,程序中使用了P0口来作为LCD1602的数据总线,P2口的0、1、2分别作为LCD1602的RS、RW、E控制引脚。
void APPsendValue(char* _value1,char* _value2,char* _value3,char* _value4,char* _value5,char* _value6) { char strBuf[100]; sprintf(strBuf, "value<%s><%s><%s><%s><%s><%s>", _value1,_value2,_value3,_value4,_value5,_value6); serialPrint(strBuf); } void APPsendLable0(char* _name1,char* _name2,char* _name3,char* _name4,char* _name5,char* _name6) { char strBuf[100]; sprintf(strBuf, "label0<%s><%s><%s><%s><%s><%s>", _name1,_name2,_name3,_name4,_name5,_name6); serialPrint(strBuf); } void APPsendLable1(char* _name1,char* _name2,char* _name3,char* _name4,char* _name5,char* _name6,char* _name7,char* _name8) { char strBuf[100]; sprintf(strBuf, "label1<%s><%s><%s><%s><%s><%s><%s><%s>", _name1,_name2,_name3,_name4,_name5,_name6,_name7,_name8); serialPrint(strBuf); } void APPsendLable2(char* _name1,char* _name2,char* _name3,char* _name4) { char strBuf[100]; sprintf(strBuf, "label2<%s><%s><%s><%s>", _name1, _name2, _name3, _name4); serialPrint(strBuf); } void APPsendTitle(char* _name1) { char strBuf[100]; sprintf(strBuf, "title<%s>", _name1); serialPrint(strBuf); }是实现什么功能
这段代码是为了通过串口向外部设备发送一些指定格式的数据,用于在外部设备(如APP)上显示相关信息,其中各个函数的功能如下:
- `APPsendValue`函数:发送一组数值数据,用于显示在外部设备上;
- `APPsendLable0`函数:发送一组标签数据,用于显示在外部设备上;
- `APPsendLable1`函数:发送两组标签数据,用于显示在外部设备上;
- `APPsendLable2`函数:发送四组标签数据,用于显示在外部设备上;
- `APPsendTitle`函数:发送一个标题数据,用于显示在外部设备上。
具体来说,这些函数会将传入的参数按照一定的格式组织成字符串,然后通过串口发送出去,外部设备(如APP)接收到这些数据后,再根据数据格式进行解析和显示。
阅读全文