欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5238|回復: 2
打印 上一主題 下一主題
收起左側

51單片機4X8鍵盤掃描電路圖+程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:70976 發表于 2014-12-27 16:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

  1. //===============================================================
  2. //程序編寫人:
  3. //編寫地點:湖南源點IC培訓機構
  4. //時間:2009年7月6日下午  星期一
  5. //功能:本程序實現掃描4X8鍵盤,顯示鍵值0-31.
  6. //===============================================================
  7. #include <reg51.h>
  8. #define   uchar  unsigned char
  9. #define   uint  long unsigned int
  10. #define   ShuChu  P1    //輸出口
  11. #define   PianXuan P0    //片選口
  12. #define   Jian1    P2    //行輸入口
  13. #define   Jian2    P3    //列輸入口
  14. bit   AnJian;
  15. uchar  n;
  16. uint  code   tempt1[]={0x0efe,0x0dfe,0x0bfe,0x07fe,
  17.         0x0efd,0x0dfd,0x0bfd,0x07fd,
  18.         0x0efb,0x0dfb,0x0bfb,0x07fb,
  19.         0x0ef7,0x0df7,0x0bf7,0x07f7,
  20.         0x0eef,0x0def,0x0bef,0x07ef,
  21.         0x0edf,0x0ddf,0x0bdf,0x07df,
  22.         0x0ebf,0x0dbf,0x0bbf,0x07bf,
  23.         0x0e7f,0x0d7f,0x0b7f,0x077f};//反轉碼
  24. uchar code  tempt2[]={0xc0,0xf9,0xa4,0xb0,0x99,
  25.        0x92,0x82,0xf8,0x80,0x90};//共陽數碼管數據
  26. void  Delay(uchar M)//延時函數
  27. {
  28. uchar i,j;
  29. for(j=M;j>0;j--)
  30.   for(i=125;i>0;i--);
  31. }
  32. void  Display(uchar N)//顯示函數
  33. {
  34. ShuChu=tempt2[N/10];   //顯示十位
  35. PianXuan=0x01;
  36. Delay(20);
  37. PianXuan=0x00;
  38. ShuChu=tempt2[N%10];  //顯示個位
  39. PianXuan=0x02;
  40. Delay(20);
  41. PianXuan=0x00;
  42. }
  43. uint  SaoMiao(void)//掃描函數
  44. {
  45. uchar a,b;
  46. uint  d;
  47. Jian1=0x00;
  48. Jian2=0x0f;
  49. a=Jian2&0x0f;
  50. d=a<<8;
  51. Jian1=0xff;
  52. Jian2=0x00;
  53. b=Jian1;
  54. return (d=d|b);    //返回讀取的鍵值
  55. }
  56. uchar DuJianZhi(uint K)//讀鍵值函數
  57. {
  58. uchar i=0,b;
  59. if(K!=0x0fff)
  60. {
  61.   AnJian=1;
  62.   while(K!=tempt1)
  63.   {
  64.    i++;
  65.   }
  66.   return b=i;
  67. }
  68. else
  69.         return b=n;   //返回鍵值位置
  70. }
  71. main()//主函數
  72. {
  73. AnJian=0;
  74. while(1)
  75. {
  76.   P3=0x0f;
  77.   if(AnJian==1)
  78.   {
  79.    Display(n);        //顯示鍵值
  80.     n=DuJianZhi(SaoMiao());
  81.   }
  82.   else
  83.   {
  84.    n=DuJianZhi(SaoMiao());
  85.   }
  86. }
  87. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:77081 發表于 2015-4-15 21:04 | 只看該作者
很好很強大。學習了。。。。
回復

使用道具 舉報

板凳
ID:79874 發表于 2018-6-27 08:48 | 只看該作者
樓主分享下原理圖源文件和程序的源文件
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表