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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9435|回復(fù): 0
收起左側(cè)

4X4矩陣鍵盤掃描lcd1602液晶顯示

[復(fù)制鏈接]
ID:71259 發(fā)表于 2014-12-30 01:33 | 顯示全部樓層 |閱讀模式
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit BEEP=P3^6;
  6. sbit RS=P2^0;
  7. sbit RW=P2^1;
  8. sbit E=P2^2;
  9. sbit BF=P0^7;
  10. uchar code digit[]="0123456789ABCDEF";
  11. uchar code key_code[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 };
  12. uchar code str[]="Input Data:";
  13. uchar key;
  14. /************************************
  15. 函數(shù)功能:1ms基準(zhǔn)延時
  16. 入口參數(shù):n
  17. ************************************/

  18. void delay1ms(unsigned int n )
  19. {
  20. unsigned char i;
  21. while(n--)
  22.   for(i=0;i<115;i++);
  23. }

  24. /************************************
  25. 函數(shù)功能: 500us延時
  26. ************************************/
  27. void delay500us()     
  28. {

  29. uchar i;

  30.   for(i=0;i<57;i++);

  31. }
  32. /************************************
  33. 函數(shù)功能: 蜂鳴器產(chǎn)生1KHZ頻率聲音,
  34. ************************************/
  35. void beep()
  36. {
  37.   uchar i;
  38. for(i=0;i<200;i++){
  39.   BEEP=~BEEP;
  40.   delay500us();
  41. }
  42. BEEP=1;

  43. }


  44. /************************************
  45. 函數(shù)功能:判斷液晶的忙碌狀態(tài)
  46. 返回值:result=1,忙碌;result=0,不忙
  47. ************************************/
  48. bit BusyTest()
  49. {
  50. bit result;
  51. RS=0;  //讀狀態(tài)時,RS=0,RW=1,E=1
  52. RW=1;
  53. E=1;
  54. _nop_(); //延時一個時鐘周期
  55. _nop_();
  56. _nop_();
  57. _nop_(); //4個周期延時,給硬件反應(yīng)時間
  58. result=BF;
  59. E=0;  //將E置0,不允許讀
  60. return result;
  61. }
  62. /************************************
  63. 函數(shù)功能:將模式設(shè)置指令或顯示地址送入液晶
  64. 入口參數(shù):dictate
  65. ************************************/
  66. void WriteInstruction(uchar dictate)
  67. {
  68. while(BusyTest()==1);  //如果忙就等待
  69. RS=0;      //寫指令時,RS=0.RW=0,E=負(fù)跳變
  70. RW=0;
  71. E=0;   //先將E拉低
  72. _nop_();  
  73. _nop_();     //給硬件反應(yīng)時間
  74. P0=dictate; //將數(shù)據(jù)送入P0口,即指令或地址
  75. _nop_();
  76. _nop_();
  77. _nop_();
  78. _nop_();    //反應(yīng)時間
  79. E=1;  //上升沿讀入指令或地址  
  80. _nop_();
  81. _nop_();
  82. _nop_();
  83. _nop_();
  84. E=0;     //當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令
  85. }
  86. /************************************
  87. 函數(shù)功能:指定字符顯示的實(shí)際地址
  88. 入口參數(shù):x
  89. ************************************/
  90. void WriteAddress(uchar x)
  91. {
  92. WriteInstruction(x|0x80);   //顯示位置的確定方法為“0x80+地址碼x”
  93. }
  94. /************************************
  95. 函數(shù)功能:將數(shù)據(jù)(ASKII碼)寫入液晶模塊
  96. 入口參數(shù):y(字符常量)
  97. ************************************/
  98. void WriteData(unsigned char y)
  99. {
  100. while(BusyTest()==1); //如果忙碌就等待
  101. RS=1;       //寫數(shù)據(jù)時RS=1,RW=0,E=負(fù)跳變
  102. RW=0;
  103. E=0;    //先將E拉低
  104. _nop_();
  105. _nop_();
  106. P0=y;
  107. _nop_();
  108. _nop_();
  109. _nop_();
  110. _nop_();  //反應(yīng)時間
  111. E=1;
  112. _nop_();
  113. _nop_();
  114. _nop_();
  115. _nop_();
  116. E=0;     //當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令
  117. }
  118. /************************************
  119. 函數(shù)功能:對LCD的顯示模式進(jìn)行初始化
  120. ************************************/
  121. void LcdInt()
  122. {
  123. delay1ms(15);    //首次寫指令時給LCD一段較長的反應(yīng)時間
  124. WriteInstruction(0x38);   //顯示模式設(shè)置:16X2顯示,5X7點(diǎn)陣,8位數(shù)據(jù)總線
  125. delay1ms(5);
  126. WriteInstruction(0x38);
  127. delay1ms(5);
  128. WriteInstruction(0x38);
  129. delay1ms(5);     //3次寫 設(shè)置模式
  130. WriteInstruction(0x0c); //顯示模式設(shè)置:顯示開,有光標(biāo),光標(biāo)閃爍
  131. delay1ms(5);
  132. WriteInstruction(0x06);  //顯示模式設(shè)置:光標(biāo)右移,字符不移
  133. delay1ms(5);
  134. WriteInstruction(0x01);  //清屏
  135. delay1ms(5);

  136. }

  137. /************************************
  138. 函數(shù)功能: 掃描鍵盤
  139. ************************************/
  140. void key_scan()
  141. {
  142. uchar scan1,scan2,keycode,i;
  143. P1=0xf0;
  144. scan1=P1;
  145. if((scan1&0xf0)!=0xf0){          //判斷是否按鍵
  146.   delay1ms(15);        //延時消陡
  147.   scan1=P1;
  148.   if((P1&0xf0)!=0xf0){    //二次判斷是否按鍵
  149.    P1=0x0f;           //線反轉(zhuǎn)法德核心
  150.    scan2=P1;
  151.    keycode=scan1|scan2;       //組合成鍵編碼
  152.   }
  153.   for(i=0;i<16;i++){
  154.    if(keycode==key_code[i]){  //查表得鍵值
  155.     key=i;  
  156.    }
  157.   }
  158. }
  159. else{
  160.   P1=0xff;   //P1口寫1,輸入狀態(tài)

  161. }
  162.    

  163. }
  164. /***************************************
  165. 函數(shù)功能:顯示數(shù)字
  166. ***************************************/
  167. void Display()
  168. {
  169. WriteAddress(0x47);
  170. delay1ms(5);
  171. WriteData(digit[key]);
  172. }



  173. /***********************************
  174. 函數(shù)功能:主函數(shù)
  175. ***********************************/

  176. void main()
  177. {
  178.   uchar i;
  179.   P1=0xff;   //寫1,讀狀態(tài)
  180.   delay1ms(15);
  181.   LcdInt();
  182.   WriteInstruction(0x01);
  183.   delay1ms(5);
  184.   WriteAddress(0x02);
  185.   delay1ms(5);
  186.   for(i=0;str[i]!='\0';i++){
  187.     WriteData(str[i]);
  188.    delay1ms(10);
  189.   }



  190.   WriteAddress(0x47);
  191.   delay1ms(5);
  192.   WriteData('0');
  193.   while(1){
  194.    P1=0xf0;
  195.    if((P1&0xf0)!=0xf0){
  196.    delay1ms(15);
  197.    if((P1&0xf0)!=0xf0){
  198.             
  199.           key_scan();
  200.           Display();
  201.     beep();
  202.     delay1ms(200);
  203.    }
  204.      }
  205.      }
  206. }

復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩一级大片 | 香蕉综合网 | 欧美mv日韩mv国产 | 你懂的在线网站 | 日本在线| 亚洲一区中文 | 国产黄a三级三级看三级 | 欧美日韩亚洲天堂 | 日本黄色免费网站 | 一区二区视频网站 | 91狠狠操| 国产精品6| 国产成人亚洲精品自产在线 | 国产亚洲欧美在线 | 国产精品久久久久久久久久久久久久久 | 六月丁香激情 | 国产成人午夜高潮毛片 | 黄色片在线免费观看 | 午夜视频一区二区 | 免费99精品国产自在在线 | 五月色丁香 | 免费的一级片 | 久久久久国产一区二区三区 | 俺去俺来也在线www色官网 | 中文字幕欧美日韩 | 亚洲国产中文字幕 | 黄色小视频免费看 | 韩日av在线 | 五月天激情综合网 | 日韩成人精品一区二区 | 久久久综合视频 | 日韩1级片 | 天天干天天爽 | 一区二区三区毛片 | 国产成人免费视频 | 午夜免费影院 | 深夜福利视频在线观看 | 亚洲视频一区 | 国产日韩在线视频 | 午夜视频免费看 | 亚洲精品观看 |