Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- How to Make PS2 Keyboard Read Display system Based on Arduino by ICStation(www.ICStation.com)
- http://www.instructables.com/id/How-to-Make-PS2-Keyboard-Read-Display-system-Based/
- Code for reference:
- #include <LiquidCrystal.h>
- #define uchar unsigned char
- #define uint unsigned int
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
- uchar KB_CLK=8;
- uchar KB_DATA=9;
- uint n=0;
- uchar Key_Code1;
- void setup()
- {
- lcd.begin(16, 2);
- pinMode(KB_CLK,INPUT);
- pinMode(KB_DATA,INPUT);
- Key_Code1=0;
- lcd.setCursor(3,0);
- lcd.print("ICStation");
- lcd.setCursor(3,1);
- lcd.print("PS2:");
- }
- void loop()
- {
- Key_Code1=Get_Key();
- if(Key_Code1!=0x00)
- {
- lcd.setCursor(7,1);
- lcd.write(Key_Code1);
- }
- }
- /*********************************************************************
- funcname: Key_Scan(void)
- functional description: Read the PS2 keyboard to send data
- suction parameter: not have
- outlet parameters: Function returns the value of key_temp
- **********************************************************************/
- uchar Key_Scan(void)
- {
- uchar i,key_temp;
- digitalWrite(KB_CLK,HIGH); //import
- digitalWrite(KB_DATA,HIGH);
- key_temp=0;
- while(digitalRead(KB_CLK)); //The first is 0 (low level start reading)
- for (i = 0; i < 8; ++i)
- {
- while(!digitalRead(KB_CLK));
- while(digitalRead(KB_CLK));
- key_temp |= digitalRead(KB_DATA) << i;
- }
- while(!digitalRead(KB_CLK)); //parity bit
- while(digitalRead(KB_CLK)); //Remove efficacy bit and stop bit
- while(!digitalRead(KB_CLK)); //stop bit
- while(digitalRead(KB_CLK));
- while(!digitalRead(KB_CLK));
- return key_temp;
- }
- /*********************************************************************
- funcname: uchar Get_Key(void)
- functional description: PS2 keyboard characters will be sent to show the data you sent
- suction parameter: Key_Code
- outlet parameters: 无
- ********************************************************************/
- uchar Get_Key(void)
- {
- uchar Key_Code,Key_Code2;
- Key_Code2=Key_Scan();
- Key_Code=Key_Scan();
- if(Key_Code2==0x12)
- {
- Key_Code=Key_Scan();
- switch(Key_Code)
- {
- case 0x1c: return 'A';break;
- case 0x32: return 'B';break;
- case 0x21: return 'C';break;
- case 0x23: return 'D';break;
- case 0x24: return 'E';break;
- case 0x2b: return 'F';break;
- case 0x34: return 'G';break;
- case 0x33: return 'H';break;
- case 0x43: return 'I';break;
- case 0x3b: return 'J';break;
- case 0x42: return 'K';break;
- case 0x4b: return 'L';break;
- case 0x3a: return 'M';break;
- case 0x31: return 'N';break;
- case 0x44: return 'O';break;
- case 0x4d: return 'P';break;
- case 0x15: return 'Q';break;
- case 0x2d: return 'R';break;
- case 0x1b: return 'S';break;
- case 0x2c: return 'T';break;
- case 0x3c: return 'U';break;
- case 0x2a: return 'V';break;
- case 0x1d: return 'W';break;
- case 0x22: return 'X';break;
- case 0x35: return 'Y';break;
- case 0x1a: return 'Z';break;
- case 0x45: return ')';break;//The number keys
- case 0x16: return '!';break;
- case 0x1e: return '@';break;
- case 0x26: return '#';break;
- case 0x25: return '$';break;
- case 0x2e: return '%';break;
- case 0x36: return '^';break;
- case 0x3d: return '&';break;
- case 0x3e: return '*';break;
- case 0x46: return '(';break;
- default: return 0x00; break;
- }
- }
- else
- switch(Key_Code)
- {
- case 0x1c: return 'a';break;
- case 0x32: return 'b';break;
- case 0x21: return 'c';break;
- case 0x23: return 'd';break;
- case 0x24: return 'e';break;
- case 0x2b: return 'f';break;
- case 0x34: return 'g';break;
- case 0x33: return 'h';break;
- case 0x43: return 'i';break;
- case 0x3b: return 'j';break;
- case 0x42: return 'k';break;
- case 0x4b: return 'l';break;
- case 0x3a: return 'm';break;
- case 0x31: return 'n';break;
- case 0x44: return 'o';break;
- case 0x4d: return 'p';break;
- case 0x15: return 'q';break;
- case 0x2d: return 'r';break;
- case 0x1b: return 's';break;
- case 0x2c: return 't';break;
- case 0x3c: return 'u';break;
- case 0x2a: return 'v';break;
- case 0x1d: return 'w';break;
- case 0x22: return 'x';break;
- case 0x35: return 'y';break;
- case 0x1a: return 'z';break;
- case 0x45: return '0';break;//The number keys
- case 0x16: return '1';break;
- case 0x1e: return '2';break;
- case 0x26: return '3';break;
- case 0x25: return '4';break;
- case 0x2e: return '5';break;
- case 0x36: return '6';break;
- case 0x3d: return '7';break;
- case 0x3e: return '8';break;
- case 0x46: return '9';break;
- default: return 0x00; break;
- }
- }
- void Delay_NS(int x)
- {
- for(;x>0;x--);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement