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

📄 key_lcd.c

📁 该代码采用c5400dsp的汇编语言和c语言实现ucos操作系统
💻 C
字号:
char rdkey(){
char keyin;
	port6 = 0x0 ;
	keyin = port6 ;
	keyin = keyin & 0x3 ;
    if (keyin == 0x3)
    	return 0 ;
	else 
		return 1 ;
}
int scan_key(){
char keyornot;
char keyin;
char keyvalue;
  keyornot = rdkey() ;
  if (!keyornot)
	  return 255;
  delay3();										//消除抖动				
  delay3();
  keyornot = rdkey() ;
  if (keyornot ){								//某个键按下!
	port6 = 0xe ;
	keyin = port6 & 0x3 ;
	if ( keyin != 0x3){
		keyvalue = 2;
		keyvalue = keyin + keyvalue ;
		while (keyornot = rdkey())				//等键松下
			delay3();
		return keyvalue;
	}	
	port6 = 0xd ;
	keyin = port6 & 0x3 ;
	if ( keyin != 0x3){
		keyvalue = 0;
		keyvalue = keyin + keyvalue ;
		while (keyornot = rdkey())
			delay3();
		return keyvalue;
	}	
	port6 = 0xb ;
	keyin = port6 & 0x3 ;
	if ( keyin != 0x3){
		keyvalue = 6;
		keyvalue = keyin + keyvalue ;
		while (keyornot = rdkey())
			delay3();
		return keyvalue;
	}	
	port6 = 0x7 ;
	keyin = port6 & 0x3 ;
	keyin = port6 & 0x3 ;
	if ( keyin != 0x3){
		keyvalue = 4;
		keyvalue = keyin + keyvalue ;
		while (keyornot = rdkey())
			delay3();
		return keyvalue;
	}	
  }
  return 255;
}

void lcd_dsp(char lorr,char page_cnt,char line,char num){
char clr_byte_cnt;
char numa[8];
char lcdi=0;
	if (num==0)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num0[lcdi];
	if (num==1)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num1[lcdi];
	if (num==2)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num2[lcdi];
	if (num==3)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num3[lcdi];
	if (num==4)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num4[lcdi];
	if (num==5)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num5[lcdi];
	if (num==6)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num6[lcdi];
	if (num==7)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num7[lcdi];
	if (num==8)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num8[lcdi];
	if (num==9)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num9[lcdi];

//
	if (num==0x1a)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num1a[lcdi];

	if (num==0x41)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num41[lcdi];
	if (num==0x42)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num42[lcdi];
	if (num==0x43)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num43[lcdi];
	if (num==0x44)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num44[lcdi];
	if (num==0x45)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num45[lcdi];
	if (num==0x46)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num46[lcdi];
	if (num==0x47)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num47[lcdi];
	if (num==0x48)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num48[lcdi];
	if (num==0x49)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num49[lcdi];
	if (num==0x4a)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num4a[lcdi];
	if (num==0x4d)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num4d[lcdi];
	if (num==0x53)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num53[lcdi];
	if (num==0x54)
		for (lcdi=0;lcdi<8;lcdi++)
			numa[lcdi]=num54[lcdi];
			
			

//						
	page_cnt = (page_cnt - 1) | 0xb8;
	line = (line-1)*8 + 0x40 ;
	if (lorr==0){
		Wr_c_l(page_cnt);
		Wr_c_l(line);
		for(clr_byte_cnt=1;clr_byte_cnt<=8;clr_byte_cnt++){
			Wr_d_l(numa[clr_byte_cnt-1]);
		}
	}
	else{
		Wr_c_r(page_cnt);
		Wr_c_r(line);
		for(clr_byte_cnt=1;clr_byte_cnt<=8;clr_byte_cnt++){
			Wr_d_r(numa[clr_byte_cnt-1]);
		}
	}
	
}

void Wr_c_r(char com){							//写指令
char temp;
	temp = portb ; 								//clr cs1
	portc = temp ; 								//clr cs2
	porta = 0x0 ;  								//di = 0
	temp = port8 & 0x80; 						//读状态字
	delay1();
	while (temp == 0x80){
		temp = port8 & 0x80;
		delay1();
	}
	port8 = com ;
	delay1();
}

void Wr_c_l(char com){
char temp=0;
	portb = temp ; 								//clr cs1
	temp = portc ;
	porta = 0x0 ;  								//di = 0
	temp = port8 & 0x80; 						//读状态字
	delay1();
	while (temp == 0x80){
		temp = port8 & 0x80;
		delay1();
	}
	port8 = com ;
	delay1();
}

void Wr_d_r(char data){							//写数据
char temp;
	temp = portb; 								//clr cs1
	portc = temp ; 								//clr cs2
	porta = 0x0 ;  								//di = 0
	temp = port8 & 0x80; 						//读状态字
	delay1();
	while (temp == 0x80){
		temp = port8 & 0x80;
		delay1();
	}	
	porta = 0x1 ;
	port8 = data ;
	delay1();
}

void Wr_d_l(char data){
char temp=0;
	portb = temp ; 								//clr cs1
	temp = portc ; 								//clr cs2
	porta = 0x0 ;  								//di = 0
	temp = port8 & 0x80; 						//读状态字
	delay1();
	while (temp == 0x80){
		temp = port8 & 0x80;
		delay1();
	}
	porta = 0x1 ;
	port8 = data ;
	delay1();
}
void Init_Lcd(){
	Wr_c_l(0xc0);
	Wr_c_r(0xc0);
	Wr_c_l(0x3f);
	Wr_c_r(0x3f);
}
void Cls_Lcd(){
	for(clr_page_cnt=1;clr_page_cnt<=8;clr_page_cnt++){ 
    	page_cnt = (clr_page_cnt - 1) | 0xb8;
		Wr_c_l(page_cnt);
		Wr_c_r(page_cnt);
		Wr_c_l(0x40);
		Wr_c_r(0x40);
		for (clr_byte_cnt=1;clr_byte_cnt<=64;clr_byte_cnt++){
			Wr_d_l(0x0);
			Wr_d_r(0x0);
		}
	}
}

⌨️ 快捷键说明

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