Advertisement
icstation

How to Make PS2 Keyboard Read Display system Based on Arduin

Dec 11th, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.96 KB | None | 0 0
  1. How to Make PS2 Keyboard Read Display system Based on Arduino by ICStation(www.ICStation.com)
  2. http://www.instructables.com/id/How-to-Make-PS2-Keyboard-Read-Display-system-Based/
  3.  
  4. Code for reference:
  5. #include <LiquidCrystal.h>
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  9. uchar KB_CLK=8;
  10. uchar KB_DATA=9;
  11. uint n=0;
  12. uchar Key_Code1;
  13. void setup()
  14. {
  15. lcd.begin(16, 2);
  16. pinMode(KB_CLK,INPUT);
  17. pinMode(KB_DATA,INPUT);
  18. Key_Code1=0;
  19. lcd.setCursor(3,0);
  20. lcd.print("ICStation");
  21. lcd.setCursor(3,1);
  22. lcd.print("PS2:");
  23. }
  24.  
  25. void loop()
  26. {
  27. Key_Code1=Get_Key();
  28. if(Key_Code1!=0x00)
  29. {
  30. lcd.setCursor(7,1);
  31. lcd.write(Key_Code1);
  32. }
  33. }
  34. /*********************************************************************
  35. funcname: Key_Scan(void)
  36. functional description: Read the PS2 keyboard to send data
  37. suction parameter: not have
  38. outlet parameters: Function returns the value of key_temp
  39. **********************************************************************/
  40. uchar Key_Scan(void)
  41. {
  42. uchar i,key_temp;
  43. digitalWrite(KB_CLK,HIGH); //import
  44. digitalWrite(KB_DATA,HIGH);
  45. key_temp=0;
  46.  
  47. while(digitalRead(KB_CLK)); //The first is 0 (low level start reading)
  48. for (i = 0; i < 8; ++i)
  49. {
  50. while(!digitalRead(KB_CLK));
  51. while(digitalRead(KB_CLK));
  52. key_temp |= digitalRead(KB_DATA) << i;
  53. }
  54. while(!digitalRead(KB_CLK)); //parity bit
  55. while(digitalRead(KB_CLK)); //Remove efficacy bit and stop bit
  56. while(!digitalRead(KB_CLK)); //stop bit
  57. while(digitalRead(KB_CLK));
  58. while(!digitalRead(KB_CLK));
  59. return key_temp;
  60. }
  61. /*********************************************************************
  62. funcname: uchar Get_Key(void)
  63. functional description: PS2 keyboard characters will be sent to show the data you sent
  64. suction parameter: Key_Code
  65. outlet parameters: 无
  66. ********************************************************************/
  67. uchar Get_Key(void)
  68. {
  69. uchar Key_Code,Key_Code2;
  70. Key_Code2=Key_Scan();
  71. Key_Code=Key_Scan();
  72. if(Key_Code2==0x12)
  73. {
  74. Key_Code=Key_Scan();
  75. switch(Key_Code)
  76. {
  77. case 0x1c: return 'A';break;
  78. case 0x32: return 'B';break;
  79. case 0x21: return 'C';break;
  80. case 0x23: return 'D';break;
  81. case 0x24: return 'E';break;
  82. case 0x2b: return 'F';break;
  83. case 0x34: return 'G';break;
  84. case 0x33: return 'H';break;
  85. case 0x43: return 'I';break;
  86. case 0x3b: return 'J';break;
  87. case 0x42: return 'K';break;
  88. case 0x4b: return 'L';break;
  89. case 0x3a: return 'M';break;
  90. case 0x31: return 'N';break;
  91. case 0x44: return 'O';break;
  92. case 0x4d: return 'P';break;
  93. case 0x15: return 'Q';break;
  94. case 0x2d: return 'R';break;
  95. case 0x1b: return 'S';break;
  96. case 0x2c: return 'T';break;
  97. case 0x3c: return 'U';break;
  98. case 0x2a: return 'V';break;
  99. case 0x1d: return 'W';break;
  100. case 0x22: return 'X';break;
  101. case 0x35: return 'Y';break;
  102. case 0x1a: return 'Z';break;
  103. case 0x45: return ')';break;//The number keys
  104. case 0x16: return '!';break;
  105. case 0x1e: return '@';break;
  106. case 0x26: return '#';break;
  107. case 0x25: return '$';break;
  108. case 0x2e: return '%';break;
  109. case 0x36: return '^';break;
  110. case 0x3d: return '&';break;
  111. case 0x3e: return '*';break;
  112. case 0x46: return '(';break;
  113. default: return 0x00; break;
  114. }
  115. }
  116. else
  117. switch(Key_Code)
  118. {
  119. case 0x1c: return 'a';break;
  120. case 0x32: return 'b';break;
  121. case 0x21: return 'c';break;
  122. case 0x23: return 'd';break;
  123. case 0x24: return 'e';break;
  124. case 0x2b: return 'f';break;
  125. case 0x34: return 'g';break;
  126. case 0x33: return 'h';break;
  127. case 0x43: return 'i';break;
  128. case 0x3b: return 'j';break;
  129. case 0x42: return 'k';break;
  130. case 0x4b: return 'l';break;
  131. case 0x3a: return 'm';break;
  132. case 0x31: return 'n';break;
  133. case 0x44: return 'o';break;
  134. case 0x4d: return 'p';break;
  135. case 0x15: return 'q';break;
  136. case 0x2d: return 'r';break;
  137. case 0x1b: return 's';break;
  138. case 0x2c: return 't';break;
  139. case 0x3c: return 'u';break;
  140. case 0x2a: return 'v';break;
  141. case 0x1d: return 'w';break;
  142. case 0x22: return 'x';break;
  143. case 0x35: return 'y';break;
  144. case 0x1a: return 'z';break;
  145. case 0x45: return '0';break;//The number keys
  146. case 0x16: return '1';break;
  147. case 0x1e: return '2';break;
  148. case 0x26: return '3';break;
  149. case 0x25: return '4';break;
  150. case 0x2e: return '5';break;
  151. case 0x36: return '6';break;
  152. case 0x3d: return '7';break;
  153. case 0x3e: return '8';break;
  154. case 0x46: return '9';break;
  155. default: return 0x00; break;
  156. }
  157. }
  158. void Delay_NS(int x)
  159. {
  160. for(;x>0;x--);
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement