📄 display.c
字号:
#include "\inc\system.h"
#define SET_TIME_X 40// 34
#define SET_TIME_Y 3// 40
#define SET_DATE_X 40// 34
#define SET_DATE_Y 6// 20
fp32 set_value;
//81279852
uint8 number_dis[4];
uint8 current_screen;
uint8 Bclear_LCD_screen;
uint8 course_position;
uint8 course_delay;
uint8 show_ID;
uint8 set_ID;
uint8 amp_parm_ID;
uint8 config_id,config_id1;
uint8 config_falg;
uint8 tiaoshi_falg;
uint16 show_delay;
uint16 XAIOGUANDU=122;
uint16 FENCHEN=23;
uint16 TOUGUOLI=198;
uint8 Bset_clock;
uint8 Bdown_down;
uint8 da_chanel[2];//输出模拟通道
uint8 chanel_select;//
uint8 show_year_value;
uint8 show_month_value;
uint8 show_day_value;
uint8 show_hour_value;
uint8 show_minute_value;
uint8 show_second_value;
uint8 set_year_value;
uint8 set_month_value;
uint8 set_day_value;
uint8 set_hour_value;
uint8 set_minute_value;
uint8 set_second_value;
uint8 real_year_value;
uint8 real_month_value;
uint8 real_day_value;
uint8 real_hour_value;
uint8 real_minute_value;
uint8 real_second_value;
uint8 out_config; //输出配置标志
uint8 _420mA_config=0;//4-20MA输出配置标志
uint8 configure; //通道配置确认
uint8 write_flag=0;//写入设置参数
uint8 answer_falg;//写入参数回答标志
extern volatile uint32 key_value;
extern uint8 Bread_key;
//float das;
void key_process(void)
{
if((IO0PIN & ENTER)==0)
{
delay(200);
if((IO0PIN & ENTER)==0)
{
while((IO0PIN & ENTER)==0);
current_screen=SETTING_SCREEN;
Bclear_LCD_screen=1;
show_ID=0;
}
}
else if( (IO0PIN & CANCEL ) == 0)
{
delay(200);
if((IO0PIN & CANCEL)==0)
{
while((IO0PIN & CANCEL)==0);
current_screen=DEFAULT_SCREEN;
Bclear_LCD_screen=1;
show_ID=0;
}
}
}
void wait_answer(void) //用于参数设置返回一个应答值,当没有应答值时表明DSP放大板没有正确接收到信息
{
answer_falg=0;//发送结束,置位相关标志位,在串口中断中进行相关处理.
DelayNS(10);
if(answer_falg!=0x55)
{
show_picture(set_fail, 16, 18,92,16);//提示设置失败
DelayNS(200);
}
}
//*******************************************************************************
//function:
//description: show time ;word code frome 0x80 to 0xb4
//
//parameter:
//return value:
//*******************************************************************************
void show_time(uint8 X,
uint8 Y,
uint8 hour,
uint8 minute,
uint8 second)
{
show_picture(number0[hour/10],X,Y,6,8); //时十位
show_picture(number0[hour%10],X+6,Y,6,8); //时个位
if(!(second%2))
show_picture(maohao,X+12,Y,3,8); //":"
else
erase_picture(X+12,Y,3,8); // 闪秒.
show_picture(number0[minute/10],X+15,Y,6,8); // 分十位.
show_picture(number0[minute%10],X+21,Y,6,8); //分个位.
}
//================================设置时间=======================================
void show_time1(uint8 X,
uint8 Y,
uint8 hour,
uint8 minute,
uint8 second) //显示时间 时 分 秒
{
show_picture(number1[hour/10],X,Y,8,16); //时十位.
show_picture(number1[hour%10],X+8,Y,8,16); //时个位
show_picture(maohao1,X+16,Y,8,16); //":"
show_picture(number1[minute/10],X+24,Y,8,16); //分十位
show_picture(number1[minute%10],X+32,Y,8,16); //分个位
show_picture(maohao1,X+40,Y,8,16); //":"
show_picture(number1[second/10],X+48,Y,8,16); //秒十位
show_picture(number1[second%10],X+56,Y,8,16); //秒个位.
}
//*******************************************************************************
//function:
//description: show date
//show date ;word code from 0x80~0xb4,0xda~0xe6
//parameter:
//return value:
//*******************************************************************************
void show_date(uint8 X,
uint8 Y,
uint8 year,
uint8 month,
uint8 day)
{ //首址 起始行 起始列 宽度 高度
show_picture(number0[year/10],X,Y,6,8); //date 年
show_picture(number0[year%10],X,Y+6,6,8);
show_picture(xiegang,X,Y+12,5,8); //"/"
show_picture(number0[month/10],X,Y+17,6,8); // 月
show_picture(number0[month%10],X,Y+23,6,8);
show_picture(xiegang,X,Y+29,5,8); //"/"
show_picture(number0[day/10],X,Y+34,6,8); // 日
show_picture(number0[day%10],X,Y+40,6,8);
}
//===============================设置时间=======================================
void show_date1(uint8 X,
uint8 Y,
uint8 year,
uint8 month,
uint8 day)
{
show_picture(number1[2],X,Y*8,8,16); //'2'
// show_picture(number1[0],X+1,Y*8,8,16); //'0'
show_picture(number1[year/10],X,Y,8,16); //date
show_picture(number1[year%10],X+8,Y,8,16);
show_picture(xiegang1,X+16,Y,8,16); //"/"
show_picture(number1[month/10],X+24,Y,8,16);
show_picture(number1[month%10],X+32,Y,8,16);
show_picture(xiegang1,X+40,Y,8,16); //"/"
show_picture(number1[day/10],X+48,Y,8,16);//10个数?取余
show_picture(number1[day%10],X+56,Y,8,16); //10个数,取模
}
//-----------------------------------------------------------------------------
// 总数值 起始行(0-3) 起始列(0-128)
void show_number( uint16 number_total,uint8 x_row,uint8 y_row)
{
uint8 position_x,position_y;
number_dis[3]=number_total/1000;
number_total=number_total%1000;
number_dis[2]=number_total/100;
number_total=number_total%100;
number_dis[1]=number_total/10;
number_total=number_total%10;
number_dis[0]=number_total;
position_y=y_row;
switch(x_row)
{
case 0:
{
position_x=0;
} break;
case 1:
{
position_x=16;
} break;
case 2:
{
position_x=32;
} break;
case 3:
{
position_x=48;
} break;
default: break;
}
if(number_dis[3]==0)
erase_picture(position_x,position_y,8,16);
else
show_picture(number1[number_dis[3]],position_x,position_y,8,16);
if((number_dis[3]==0)&&(number_dis[2]==0))
erase_picture(position_x,position_y,16,16);
else
show_picture(number1[number_dis[2]],position_x,position_y,8,16);
show_picture(number1[number_dis[1]],position_x,position_y+8,8,16);
show_picture(dian2, position_x,position_y+16,4,16);
show_picture(number1[number_dis[0]],position_x,position_y+20,8,16);
}
/*********************************************************************************************************
** 函数名称: show_ASCII_number( uint16 number_total,uint8 x_row,uint8 y_row)
** 功能描述: 参数显示,用于显示DSP放大器传过来的放大器参数
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 作 者: 吴成加
** 日 期: 2008年8月19日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
// 取样通道 起始行(0-3) 起始列(0-128)
extern char ds[7][8];
uint8 num_dis[8];
void show_ASCII_AMP( uint8 dat,uint8 x_row,uint8 y_row)
{
uint8 i;
uint8 position_x,position_y;
for(i=0;i<8;i++)
{
num_dis[i]=ds[dat][i];
if(num_dis[i]==0x2e){num_dis[i]=10;} //小数点
else if(num_dis[i]==0x2d){num_dis[i]=11;} //负数
else
{
num_dis[i]= num_dis[i]-0x30; //ASCII码转成十进制数
}
}
position_y=y_row;
switch(x_row)
{
case 0:
{
position_x=0;
} break;
case 1:
{
position_x=16;
} break;
case 2:
{
position_x=32;
} break;
case 3:
{
position_x=48;
} break;
default: break;
}
show_picture(number1[num_dis[0]],position_x,position_y,8,16);
show_picture(number1[num_dis[1]],position_x,position_y+8,8,16);
show_picture(number1[num_dis[2]],position_x,position_y+16,8,16);
show_picture(number1[num_dis[3]],position_x,position_y+24,8,16);
show_picture(number1[num_dis[4]],position_x,position_y+32,8,16);
show_picture(number1[num_dis[5]],position_x,position_y+40,8,16);
show_picture(number1[num_dis[6]],position_x,position_y+48,8,16);
//show_picture(number1[num_dis[7]],position_x,position_y+56,8,16);
}
/*********************************************************************************************************
** 函数名称: show_ASCII_number( uint16 number_total,uint8 x_row,uint8 y_row)
** 功能描述: 参数显示,用于显示DSP放大器传过来的采样值
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 作 者: 吴成加
** 日 期: 2008年8月19日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
// 取样通道 起始行(0-3) 起始列(0-128)
extern char st[8][8];
uint8 num_sam[8];
void show_ASCII_SAMPLE( uint8 dat,uint8 x_row,uint8 y_row)
{
uint8 i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -