📄 mdt.c
字号:
Write_S6b0741_Reg(SET_COLUMN_LSB+col_lsb);
for(j=0;j<97;++j) Write_S6b0741_Data(0x00);
++i;
}
return;
}
//============================================================
//清除存储区状态栏数据
//============================================================
void Clr_Status_Buff()
{
unsigned char i=0,j=0;
for(i=0;i<16;++i)
for(j=0;j<12;++j) Buff_Page[i].Column[j]=0;
return;
}
//============================================================
//清除消息缓存区数据
//============================================================
void Clr_Message_Buff()
{
unsigned int i=0,j=0;
for(i=0;i<16;++i)
for(j=12;j<(Total_Line+1)*12+8;++j) Buff_Page[i].Column[j]=0;
// for(j=12;j<Buff_Line;++j) Buff_Page[i].Column[j]=0;
return;
}
//============================================================
//读取接收存储区数据
//============================================================
unsigned char Read_Rx()
{
unsigned char buff_data;
if(P_Rx==P_Rd) {P_Rd=0; P_Rx=0;}
while(P_Rx==0) {Key_Scan();Stand_By();}
buff_data=Recieve_Buff[P_Rd];
if(P_Rd<P_Rx) ++P_Rd;
return buff_data;
}
void Stand_Message()
{
unsigned char ch,char_no,baknum;
S2_Flag=1;
char_no=0;
ch=Read_Rx();
while(ch!='^'){ch=Read_Rx();}
while(ch!='H'){ch=Read_Rx();}
while(ch!='^'){
ch=Read_Rx();
heading[char_no]=ch;
++char_no;
}
char_no--;
heading[char_no]='\0';
char_no=0;
while(ch!='S'){ch=Read_Rx();}
while(ch!='^'){
speed[char_no]=ch;
++char_no;
ch=Read_Rx();
}
speed[char_no]='\0';
char_no=0;
while(ch!='D'){ch=Read_Rx();}
while(ch!='^'){
date[char_no]=ch;
++char_no;
ch=Read_Rx();
}
date[char_no]='\0';
char_no=0;
while(ch!='T'){ch=Read_Rx();}
while(ch!='N'){
time[char_no]=ch;
++char_no;
ch=Read_Rx();
}
time[char_no]='\0';
baknum=char_no;
char_no=0;
while(ch!='}'){
newmail[char_no]=ch;
++char_no;
ch=Read_Rx();
}
newmail[char_no]='\0';
if(speed[1]!='-')
OverSpeed_Flag=0;
if(char_no<6)
{
Stand_Flag=1;
}
else if(pretime!=time[4])
{
Stand_Flag=1;
// Update_Flag=1;
pretime=time[4];
}
if(onetime!=time[6])
{
// Update_Flag=1;
Stand_Flag=1;
onetime=time[6];
}
if(newmail[1]=='1')
{
NewMail_Flag=1;
OverSpeed_Flag=0;
StandBy_Flag=0;
CurKey_Flag=0;
}
else if(newmail[1]=='0')
NewMail_Flag=0;
}
void Save_News(void)
{
unsigned char ch,char_no;
Clr_Mess_Buff();
Clr_Message_Buff();
Active_Line=0;
Start_Line=0;
Total_Line=0;
char_no=0;
S2_Flag=0;
Roll_En=1;
ch=Read_Rx();
while(ch!='^'){ch=Read_Rx();}
while(ch!='T'){ch=Read_Rx();}
while(ch!='+'){ch=Read_Rx();}
// Line_Tab=M_TAB;
ch=Read_Rx();
while(ch!='^'){
Message_Buff[Total_Line].page_line[char_no]=ch;
++char_no;
ch=Read_Rx();
}
Check_Enter();
Check_System();
Check_OverSpeed();
// Line_Tab=T_TAB;
++Total_Line;
char_no=0;
ch=Read_Rx();
while(ch!='L')ch=Read_Rx();
ch=Read_Rx();
while(Check_Element(ch)){
ch=Read_Rx();
}
if(Key_Type){
if(Reverse_Flag)Message_Buff[Total_Line].high_light=1;
Reverse_Flag=0;
}
else{
if(Sel_Flag){
Active_Line=Total_Line-1;
Sel_Flag=0;
}
}
while(ch!='}'){
while(ch!='|'){
if(ch=='}'){
if(Enter_En==0) Message_Buff[Total_Line].page_line[20]=0;
if(Sys_Status_Flag==1){
Message_Buff[3].page_line[19]=0;
Message_Buff[4].page_line[19]=0;
}
++Total_Line;
return;
}
Message_Buff[Total_Line].page_line[char_no]=ch;
++char_no;
ch=Read_Rx();
}
if(Enter_En==0) Message_Buff[Total_Line].page_line[20]=0;
Total_Line++;
char_no=0;
ch=Read_Rx();
while(Check_Element(ch)){
ch=Read_Rx();
}
if(Key_Type){
if(Reverse_Flag)Message_Buff[Total_Line].high_light=1;
Reverse_Flag=0;
}
else{
if(Sel_Flag){
Active_Line=Total_Line-1;
Sel_Flag=0;
}
}
}
if(Sys_Status_Flag==1){
Message_Buff[3].page_line[19]=0;
Message_Buff[4].page_line[19]=0;
}
}
//============================================================
//存储显示缓存区数据
//============================================================
void Store_Vram()
{
unsigned char i,j=0;
Line_Tab=T_TAB;
Set_XY(6,1);
Print_Line(Message_Buff[0].page_line);
Line_Tab=M_TAB;
Next_Line();
for(i=1;i<Total_Line;++i){
Print_Line(Message_Buff[i].page_line);
if(Key_Type){if(Message_Buff[i].high_light==1) Reverse_Line(i-1);}
Next_Line();
}
if(Sys_Status_Flag==1){
Total_Line++;
Print_SN();
}
if(Key_Type==0){
Reverse_Line(Active_Line);
}
return;
}
//============================================================
//存储消息代码数据
//============================================================
void Store_Message()
{
unsigned char ch;
ch=Read_Rx();
if(ch=='2')
Stand_Message();
else
{
if(ch=='1') Key_Type=0;
else if(ch=='6') Key_Type=1;
StandBy_Flag=0;
Save_News();
Store_Vram(); Disp_Title(); Disp_Message();
}
return;
}
//============================================================
//液晶显示标题内容
//============================================================
void Disp_Title()
{
unsigned char col_msb,col_lsb;
unsigned char com_n;
unsigned char i=0,j=0;
Clr_Title();
Line_Tab=T_TAB;
com_n=12*1+Line_Tab;
col_lsb=com_n&0x0f;
col_msb=com_n>>4;
while(i<16){
Write_S6b0741_Reg(SET_PAGE+i);
Write_S6b0741_Reg(SET_COLUMN_MSB+col_msb);
Write_S6b0741_Reg(SET_COLUMN_LSB+col_lsb);
for(j=0;j<12+8;++j){
Write_S6b0741_Data(Buff_Page[i].Column[j+com_n]);
}
++i;
}
return;
}
//============================================================
//液晶显示消息内容
//============================================================
void Disp_Message()
{
unsigned char col_msb,col_lsb;
unsigned char com_n;
unsigned char i=0,j=0;
unsigned int line_pt;
Clr_Message();
Line_Tab=M_TAB;
com_n=2*12+Line_Tab;
col_lsb=com_n&0x0f;
col_msb=com_n>>4;
line_pt=(Start_Line+2)*12+Line_Tab;
while(i<16){
Write_S6b0741_Reg(SET_PAGE+i);
Write_S6b0741_Reg(SET_COLUMN_MSB+col_msb);
Write_S6b0741_Reg(SET_COLUMN_LSB+col_lsb);
for(j=0;j<96;++j){
Write_S6b0741_Data(Buff_Page[i].Column[j+line_pt]);
}
++i;
}
return;
}
void Disp_OverSpeed(void)
{
if(OverSpeed_Flag==1)
{
/*
if(First_Flag==1)
{
// Store_Vram(); Disp_Title(); Disp_Message();
First_Flag=0;
}
*/
if(HoldOver_Flag==1)
{
Write_S6b0741_Reg(REV_DISP_ON);
DelayFlash(15000);
Write_S6b0741_Reg(REV_DISP_OFF);
DelayFlash(15000);
}
else
{
CurKey_Flag=0;
OverSpeed_Flag=0;
}
}
}
void Disp_StandMessage()
{
unsigned char col_msb,col_lsb;
unsigned char com_n;
unsigned char i=0,j=0;
unsigned int line_pt;
Line_Tab=M_TAB;
com_n=1*12+Line_Tab-4;
col_lsb=com_n&0x0f;
col_msb=com_n>>4;
line_pt=Stand_Line;
while(i<16){
Write_S6b0741_Reg(SET_PAGE+i);
Write_S6b0741_Reg(SET_COLUMN_MSB+col_msb);
Write_S6b0741_Reg(SET_COLUMN_LSB+col_lsb);
for(j=0;j<112;++j){
Write_S6b0741_Data(Buff_Page[i].Column[j+line_pt]);
}
++i;
}
}
void Clr_StandMessage()
{
unsigned char i=0,j=0;
unsigned int line_pt;
line_pt=Stand_Line;
while(i<16){
for(j=0;j<112;++j){
Buff_Page[i].Column[j+line_pt]=0x00;
}
++i;
}
}
void Print_Heading(void)
{
unsigned char By_Line;
By_Line=71;
Set_XY(10,By_Line+1);
Print_Line("北");
Set_XY(6,By_Line+3);
Print_Line("西");
Set_XY(14,By_Line+3);
Print_Line("东");
Set_XY(10,By_Line+5);
Print_Line("南");
Print_Box(36,4,0,circle);
}
void Disp_NewMail(void)
{
unsigned char Bak_LineTab,By_Line;
By_Line=71;
Bak_LineTab=Line_Tab;
Line_Tab=5;
Clr_StandMessage();
Set_XY(4,By_Line+5);
Print_Line("收到新消息");
Disp_StandMessage();
Line_Tab=Bak_LineTab;
Shock_Flag=1;
do{
Write_S6b0741_Reg(REV_DISP_ON);
DelayFlash(15000);
Write_S6b0741_Reg(REV_DISP_OFF);
DelayFlash(15000);
Key_Scan();
}while(CurKey_Flag==0);
//
Resume_StandBy();
NewMail_Flag=0;
Line_Tab=Bak_LineTab;
}
void Disp_Stand(void)
{
unsigned char Bak_LineTab,By_Line,i,j;
int xx;
By_Line=71;
Bak_LineTab=Line_Tab;
Line_Tab=5;
Clr_StandMessage();
//显示方向
if((heading[1]=='-')&&(heading[2]=='1'))
{
Set_XY(2,By_Line+2);
Print_Line("方向未知");
}
else
{
for(i=0;;i++)
{
if(heading[i]=='\0') break;
}
xx=0;
for(j=i;j>0;j--)
{
xx=xx*10+(heading[i-j]-'0');
}
if((xx<23)||((xx>338)&&(xx<359)))
Print_Box(18,2,8,up);
else if((xx>=23)&&(xx<68))
Print_Box(18,2,8,ru);
else if ((xx>=68)&&(xx<113))
Print_Box(18,2,8,right);
else if ((xx>=113)&&(xx<158))
Print_Box(18,2,8,rd);
else if ((xx>=158)&&(xx<203))
Print_Box(18,2,8,down);
else if ((xx>=203)&&(xx<248))
Print_Box(18,2,8,ld);
else if ((xx>=248)&&(xx<293))
Print_Box(18,2,8,left);
else if ((xx>=293)&&(xx<338))
Print_Box(18,2,8,lu);
Print_Heading();
}
//
if(speed[1]!='-')
{
speed[0]=speed[1];
speed[1]=speed[2];
speed[2]=speed[3];
speed[3]=speed[4];
Set_XY(2,By_Line+6);
Print_Line(speed);
Print_Line("km/h");
}
else if(speed[2]=='1')
{
Set_XY(2,By_Line+6);
Print_Line("速度未知");
}
if(date[1]!='-')
{
date[0]=date[1];
date[1]=date[2];
date[2]=date[3];
date[3]=date[4];
date[4]='-';
date[9]=date[8];
date[8]=date[7];
date[7]='-';
date[10]='\0';
Set_XY(0,By_Line+8);
Print_Line(date);
}
else if(date[2]=='1')
{
Set_XY(2,By_Line+8);
Print_Line("日期未知");
}
if(time[1]!='-')
{
time[0]=time[1];
time[1]=time[2];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -