久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 單片機PS/2協議的應用——PS/2的鍵盤程序 [打印本頁]

作者: daming    時間: 2014-12-30 23:40
標題: 單片機PS/2協議的應用——PS/2的鍵盤程序
/*

     PS/2協議的應用:(常見的有PS/2接口鼠標、鍵盤等)用PS/2的鍵盤控制單片機,用字符型液晶顯示器1602簡單

                                        顯示鍵盤的輸入值

                                     由于at89s52單片機的工作頻率過低,不易掃描更多鍵值


*/

  1. #include"reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit psda=P3^0;
  5. uchar keyvalue;
  6. uint keynum;
  7. uchar BIT;
  8. uchar temp;
  9. uint j=0;
  10. uchar  table1[3];
  11. sbit lcden=P2^6;
  12. sbit lcdrs=P2^4;
  13. sbit lcdrw=P2^5;
  14. sbit dula=P3^7;
  15. uchar num;
  16. uchar code table2[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'`',        //0-15
  17.       0,0,0,0,0,'Q','1',0,0,0,'Z','S','A','W','2',0,        //16-31
  18.       0,'C','X','D','E','4','3',0,0,0x20,'V','F','T','R','5',0,      //32-47
  19.       0,'N','B','H','G','Y','6',0,0,0,'M','J','U','7','8',0, //48-63
  20.       0,',','K','I','O','0','9',0,0,'.','/','L',';','P','-',0,//64-79
  21.       0,0,0,0,'[','=',0,0,0,0,0,']',0,'|',0,0,               //80-95
  22.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,                //96-111
  23.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,         //112-127
  24.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,              //128-143
  25.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,           //144-159
  26.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,          //160-175
  27.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,         //176-191
  28.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,       //192-207
  29.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,          //208-223
  30.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        //224-239
  31.       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0          //240-255
  32.      };
  33. void delay(uint z)
  34. {
  35. uint x,y;
  36. for(x=z;x>0;x--)
  37.   for(y=11;y>0;y--);
  38. }
  39. void write_com(uchar com)
  40. {
  41. lcdrs=0;
  42. P0=com;
  43. delay(5);
  44. lcden=1;
  45. delay(10);
  46. lcden=0;
  47. delay(10);

  48. }
  49. void write_data(uchar _data)
  50. {
  51. lcdrs=1;
  52. P0=_data;
  53. delay(5);
  54. lcden=1;
  55. delay(10);
  56. lcden=0;
  57. delay(10);
  58. }
  59. void _init_()
  60. {
  61. IT0=1;//外部中斷下降沿觸發
  62. EX0=1;//開外部0中斷
  63. EA=1;//開總中斷
  64. dula=1;
  65. lcdrw=0;
  66. write_com(0x01);
  67. write_com(0x38);//指令(001 DL N F 00)表示:DL=1,8數據位;N=1,位移寬度為2倍;F=1,5*10;F=0,5*7;
  68. write_com(0x0f);//指令(00001DCB)表示:D=1,開顯示;C=1,顯示光標;B=1,光標閃爍
  69. write_com(0x06);//指令(000001[I/D]S)表示:N=1,地址加一;[I/D]=0,地址減一;S=1,開整屏移動
  70. write_com(0x80);//第一行:0x80+(字符序號【0--f】);第二行:0xc0+(字符序號【0--f】)

  71. }void main()
  72. {
  73. _init_();
  74. while(1)
  75. {
  76.   if(keynum==3)
  77.   {
  78.    keynum=0;
  79.    temp=table1[0];
  80.    if((j%32>0)&&(j%16==0))
  81.    {
  82.     write_com(0xc0);
  83.    }
  84.    if((j%32==0)&&(j%16==0))
  85.    {write_com(0x80);}
  86.    write_data(table2[temp]);
  87.    j++;
  88.   }
  89.   

  90. }
  91. }
  92. void int0 () interrupt 0
  93. {
  94. if((BIT>0)&&(BIT<9))
  95. {
  96.   keyvalue=keyvalue>>1;
  97.   if(psda)
  98.    keyvalue=keyvalue|0x80;
  99. }
  100. BIT++;
  101. if(BIT>10)
  102. {
  103.   BIT=0;
  104.   table1[keynum]=keyvalue;
  105.   keynum++;

  106. }

  107. }
復制代碼









歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 超碰在线免费 | 日日操操 | 欧美日韩综合 | 99精品一区二区三区 | 91在线精品一区二区 | 7777精品伊人久久精品影视 | 午夜激情视频在线 | 欧美v免费 | 999精品视频| 亚洲精品一二区 | 精品视频在线观看 | 国产精品欧美日韩 | 亚洲va国产日韩欧美精品色婷婷 | 成人国产一区二区三区精品麻豆 | 日韩欧美三级电影在线观看 | 国产成人免费网站 | 九九热最新地址 | 国产高清在线观看 | 国产综合区 | 欧美日韩在线视频一区二区 | 亚洲第一中文字幕 | 亚洲国产精品成人综合久久久 | 国产一区精品在线 | 中文字幕免费观看 | 拍真实国产伦偷精品 | 欧美一区二区三区在线免费观看 | 91黄在线观看 | 天天操夜夜操 | 成年人在线观看视频 | 999精品视频 | 99精品欧美一区二区三区综合在线 | 亚洲精品成人网 | 久久久久国产精品一区三寸 | 久久久久久中文字幕 | 久久久精品一区 | 午夜精品一区二区三区免费视频 | 精品一区二区在线看 | 激情 一区 | 亚洲视频一区在线播放 | 久久国产欧美日韩精品 | 九九热在线视频观看这里只有精品 |