找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5177|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70976 發(fā)表于 2014-12-27 16:59 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

  1. //===============================================================
  2. //程序編寫人:
  3. //編寫地點(diǎn):湖南源點(diǎn)IC培訓(xùn)機(jī)構(gòu)
  4. //時(shí)間:2009年7月6日下午  星期一
  5. //功能:本程序?qū)崿F(xiàn)掃描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};//反轉(zhuǎn)碼
  24. uchar code  tempt2[]={0xc0,0xf9,0xa4,0xb0,0x99,
  25.        0x92,0x82,0xf8,0x80,0x90};//共陽數(shù)碼管數(shù)據(jù)
  26. void  Delay(uchar M)//延時(shí)函數(shù)
  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)//顯示函數(shù)
  33. {
  34. ShuChu=tempt2[N/10];   //顯示十位
  35. PianXuan=0x01;
  36. Delay(20);
  37. PianXuan=0x00;
  38. ShuChu=tempt2[N%10];  //顯示個(gè)位
  39. PianXuan=0x02;
  40. Delay(20);
  41. PianXuan=0x00;
  42. }
  43. uint  SaoMiao(void)//掃描函數(shù)
  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)//讀鍵值函數(shù)
  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()//主函數(shù)
  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. }
復(fù)制代碼



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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:77081 發(fā)表于 2015-4-15 21:04 | 只看該作者
很好很強(qiáng)大。學(xué)習(xí)了。。。。
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表