⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdt.c

📁 这是一个用C写的单片机程序
💻 C
📖 第 1 页 / 共 4 页
字号:
		if(str[i]>0xa0){
			code_data[0]=str[i];
			++i;
			code_data[1]=str[i];
			Read_Hz_Data(code_data);
			V_Write_HZ();
			++i;
		}
		else if(str[i]<0x80 && str[i]>=0x20){
			Read_Ascii_Data(str[i]);
			V_Write_Ascii();
			++i;
		}
	}
	return;
}

//============================================================
// 在存储区指定位置写入字符串显示数据
//============================================================
void Print_Line(unsigned char *disp_str)
{
unsigned char i=0;
unsigned char code_data[2];

	code_data[0]=disp_str[0];
//	Transfer[i]=code_data[0];
	while(code_data[0]!=0){
		if(code_data[0]>0xa0){
		    code_data[1]=disp_str[++i];
		//	Transfer[i]=code_data[1];
			Read_Hz_Data(code_data);
			V_Write_HZ();
			++i;
		}
		else if((code_data[0]<0x80) && (code_data[0]>=0x20)){
			Read_Ascii_Data(code_data[0]);
			V_Write_Ascii();
			++i;
		}
		code_data[0]=disp_str[i];
//		Transfer[i]=code_data[0];
	}
//	Int_Tx(i);
	return;
}

//============================================================
// 反白当前激活行数据
//============================================================
void Reverse_Line(unsigned char line)
{
unsigned char tmp[12];
unsigned char i=0,j=0;
		Line_Tab=M_TAB;
		Y_Offset=(line+2)*12+Line_Tab;

		while(i<16){
			TPAGE=i;
			Buff_Read(tmp,12);
			for(j=0;j<12;j++) tmp[j]=~tmp[j];
			Buff_Write(tmp,12);
			++i;
		}
return;
}

//============================================================
//清除液晶标题行
//============================================================
void Clr_Title()
{
unsigned char col_msb,col_lsb;
unsigned char com_n;
unsigned char i=0,j=0;
		com_n=12;
		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(0x00);
			++i;
		}
return;
}


//============================================================
// 清除液晶消息区
//============================================================
void Clr_Message()
{
unsigned char col_msb,col_lsb;
unsigned char com_n;
unsigned char i=0,j=0;
		com_n=12+12+8;
		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<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 Standy_Message()
{  
    unsigned char ch,char_no;
	char_no=0;
	StandMess_Flag=1;
	ch=Read_Rx();
	while(ch!='^'){ch=Read_Rx();}
	while(ch!='H'){ch=Read_Rx();}
	while(ch!='^'){
	    heading[char_no]=ch;
		++char_no;
		ch=Read_Rx();
	}
	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!='}'){
	    time[char_no]=ch;
		++char_no;
		ch=Read_Rx();
	}
	time[char_no]='\0';
	StandMess_Flag=0;
}
//============================================================
//存储消息代码数据
//============================================================
void Store_Message()
{
unsigned char ch,char_no;

	Clr_Mess_Buff();
	Clr_Message_Buff();
	Active_Line=0;
    Start_Line=0;
	Total_Line=0;
	char_no=0;
	ch=Read_Rx();
	if(ch=='2') Standy_Message();
	if(ch=='1') Key_Type=0;
	else if(ch=='6') Key_Type=1;
    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();
//	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;
	}

return;
}

//============================================================
//存储显示缓存区数据
//============================================================
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);
        Check_MailNumber();  
    }     
	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;
		}
	    if(NewMail_Flag==1){
			for(i=0;i<6;++i){
				Write_S6b0741_Reg(ENTIRE_ON);
				Delay(20000);
				Write_S6b0741_Reg(ENTIRE_OFF);
				Delay(20000);
			}
	        NewMail_Flag=0;
	    }

		Wait_Time=0;First=1;Stand_N=0;
return;
}

//============================================================
//屏保程序
//============================================================
void Stand_By()
{
   
	if(Wait_Time==Stand_Time){

	StandBy_Flag=1;
	if(First==1){ Clr_Message(); Clr_Title(); First=0;}
//	Print_Window(32,15,64,wonstar1);

    if(Stand_Count==300){   
		Stand_Count=0;
		Set_XY(0,80);
		switch(Stand_N){
			case 0:
				Print_Window(42,15,64,wonstar1);
				break;
			case 1:
				Print_Box(wonstar2);
				break;
			case 2:
				Print_Box(wonstar3);
				break;
			case 3:
				Print_Box(wonstar4);
				break;
			}
	    if(++Stand_N==4)Stand_N=0;
		}
    }
}


//============================================================
//滚动键改变液晶显示内容
//============================================================
void Roll_Screen()
{
if(Roll_En){
	if(Key_Type==0) Reverse_Line(Active_Line);
	if(Roll_Arrow){
		if(Key_Type) {
			if((Total_Line-Start_Line-2)>7){
				 ++Start_Line;
				 Disp_Title();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -