#include"type.h" BETY_BIT status; //code P_scanf_data_led_7[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; code N_scanf_data_led_7[16] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; unsigned char scanf_data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d};//顯存 void Delay_ms(unsigned char z)//延時程序1ms { unsigned char x; while(--z) { x= 10; while(--x); } } void Scanf_Display(unsigned char *dat) { unsigned char x; for(x=0;x<6;x++) { PORT_DATA=dat[x]; PORT_SCANF=~(0x01<<x); Delay_ms(50); PORT_DATA=0; Delay_ms(10); } } /************************************************** 矩陣鍵盤掃描部分 **************************************************/ char proces_data(unsigned char num) { switch(num) { case 1:num=1; break; case 2:num=2; break; case 4:num=3; break; case 8:num=4; break; default:num=0; break; } return num; } unsigned char Scanf_Key(void) { unsigned char H=0,L=0,port_temp,key_value; KEY_COM=0xf0; KEY_DOWN = 0; key_value = 0xff; if(KEY_COM!=0xf0) { Delay_ms(100); if(KEY_COM!=0xf0) { KEY_DOWN = 1; port_temp = KEY_COM; H=(~port_temp)>>4; KEY_COM=0x0f; Delay_ms(10); port_temp = KEY_COM; L=(~port_temp)&0x0f; key_value=((proces_data(H)-1)<<2)+proces_data(L); } } return (key_value-1); } main() { unsigned char temp; while(1) { temp=Scanf_Key(); if(KEY_DOWN) { scanf_data[0]=N_scanf_data_led_7[temp]; scanf_data[1]=N_scanf_data_led_7[temp]; scanf_data[2]=N_scanf_data_led_7[temp]; scanf_data[3]=N_scanf_data_led_7[temp]; scanf_data[4]=N_scanf_data_led_7[temp]; scanf_data[5]=N_scanf_data_led_7[temp]; } Scanf_Display(scanf_data); } }