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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

4*8矩陣鍵盤單片機仿真+程序 新手一枚

[復制鏈接]
跳轉到指定樓層
樓主
4*8矩陣鍵盤顯示0-31,使用  一陰一陽數碼管,當然有一個疑問本來兩位數碼管同時可以使用一個位選端口,和同一個P0口的但是發現會出現亂碼,而且發現。共陰數碼管亮的數據段位,剛好是共陽不亮的段位,怎么用三極管是兩者的電壓達到平衡呢。不得已把代碼改了共陰管使用P0口,共陽管使用P3口,實現功能

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):


單片機源程序如下:
  1. #include "reg51.h"
  2. #define uchar unsigned char
  3. sbit disn2=P3^5;
  4. sbit disn1=P3^6;

  5. uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  6. uchar code dab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  7. uchar temp,num,n1,n2;

  8. void display();
  9. keyscan();

  10. void delay(uchar z)
  11. {
  12. uchar x,y;
  13. for(x=z;x>0;x--)
  14.   for(y=100;y>0;y--);
  15. }

  16. keyscan()    //矩陣鍵盤掃描程序
  17. {
  18. P1=0xfe;
  19. if(P2!=0xff)
  20. {
  21.   delay(10);
  22.   if(P2!=0xff)
  23.   {
  24.    temp=P2;
  25.    switch(temp)
  26.    {
  27.     case 0x7f : num=31;break;
  28.     case 0xbf : num=30;break;
  29.     case 0xdf : num=29;break;
  30.     case 0xef : num=28;break;
  31.     case 0xf7 : num=27;break;
  32.     case 0xfb : num=26;break;
  33.         case 0xfd : num=25;break;
  34.         case 0xfe : num=24;break;
  35.    }
  36.    while(temp!=0xff)
  37.    {
  38.       temp=P2;
  39.     display();
  40.    }
  41.   }
  42. }
  43. delay(5);
  44. P1=0xfd;
  45. if(P2!=0xff)
  46. {
  47.   delay(10);
  48.   if(P2!=0xff)
  49.   {
  50.    temp=P2;
  51.    switch(temp)
  52.    {
  53.     case 0x7f : num=23;break;
  54.     case 0xbf : num=22;break;
  55.     case 0xdf : num=21;break;
  56.     case 0xef : num=20;break;
  57.     case 0xf7 : num=19;break;
  58.     case 0xfb : num=18;break;
  59.         case 0xfd : num=17;break;
  60.     case 0xfe : num=16;break;
  61.    }
  62.    while(temp!=0xff)
  63.    {
  64.       temp=P2;
  65.     display();
  66.    }
  67.   }
  68. }
  69. delay(5);
  70. P1=0xfb;
  71. if(P2!=0xff)
  72. {
  73.   delay(10);
  74.   if(P2!=0xff)
  75.   {
  76.    temp=P2;
  77.    switch(temp)
  78.    {
  79.     case 0x7f : num=15;break;
  80.     case 0xbf : num=14;break;
  81.     case 0xdf : num=13;break;
  82.     case 0xef : num=12;break;
  83.     case 0xf7 : num=11;break;
  84.     case 0xfb : num=10;break;
  85.         case 0xfd : num=9;break;
  86.     case 0xfe : num=8;break;  
  87.    }
  88.    while(temp!=0xff)
  89.    {
  90.       temp=P2;
  91.     display();
  92.    }
  93.   }
  94. }
  95. delay(5);
  96. P1=0xf7;
  97. if(P2!=0xff)
  98. {
  99.   delay(10);
  100.   if(P2!=0xff)
  101.   {
  102.    temp=P2;
  103.    switch(temp)
  104.    {
  105.     case 0x7f : num=7;break;
  106.     case 0xbf : num=6;break;
  107.     case 0xdf : num=5;break;
  108.     case 0xef : num=4;break;
  109.     case 0xf7 : num=3;break;
  110.     case 0xfb : num=2;break;
  111.         case 0xfd : num=1;break;
  112.     case 0xfe : num=0;break;
  113.    }
  114.    while(temp!=0xff)
  115.    {
  116.       temp=P2;
  117.     display();
  118.    }
  119.   }
  120. }
  121. delay(5);
  122. /*P0=0xde;
  123. if(P2!=0xff)
  124. {
  125.   delay(10);
  126.   if(P2!=0xff)
  127.   {
  128.    temp=P2;
  129.    switch(temp)
  130.    {
  131.     case 0xdf : num=12;break;
  132.     case 0xef : num=11;break;
  133.     case 0xf7 : num=10;break;
  134.     case 0xfb : num=9;break;
  135.     case 0xfd : num=8;break;
  136.     case 0xfe : num=7;break;
  137.    }
  138.    while(temp!=0xff)
  139.    {
  140.       temp=P2;
  141.     display();
  142.    }
  143.   }
  144. }
  145. delay(5);
  146. P0=0xbe;
  147. if(P2!=0xff)
  148. {
  149.   delay(10);
  150.   if(P2!=0xff)
  151.   {
  152.    temp=P2;
  153.    switch(temp)
  154.    {
  155.     case 0xdf : num=6;break;
  156.     case 0xef : num=5;break;
  157.     case 0xf7 : num=4;break;
  158.     case 0xfb : num=3;break;
  159.     case 0xfd : num=2;break;
  160.     case 0xfe : num=1;break;
  161.    }
  162.    while(temp!=0xff)
  163.    {
  164.       temp=P2;
  165.     display();
  166.    }
  167.   }
  168. }
  169. delay(5);*/

  170. return num;     
  171. }      

  172. void display()
  173. {
  174. //if( disn1==1)
  175. {P0=tab[n1];
  176. //delay(10);
  177. }

  178. ……………………

  179. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
1616.rar (37.11 KB, 下載次數: 42)




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:218520 發表于 2017-7-10 15:38 | 只看該作者
學習學習!
回復

使用道具 舉報

板凳
ID:19882 發表于 2020-1-13 14:13 來自手機 | 只看該作者
這個仿真軟件并不大好
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费a网站| 中文字幕成人免费视频 | 亚洲高清一区二区三区 | 精品国产青草久久久久96 | 中文精品视频 | 久久视频精品 | 欧美性猛片aaaaaaa做受 | 久久亚洲天堂 | 亚洲va中文字幕 | 成人免费观看男女羞羞视频 | 欧美性极品xxxx做受 | 在线观看国产www | 九九久久精品视频 | 日韩不卡在线观看 | 视频一区二区在线观看 | 天天玩天天干天天操 | 成人小视频在线观看 | 成人精品一区二区三区 | 亚洲区一 | 亚洲精品综合 | 拍真实国产伦偷精品 | 国产精品国产a级 | 久久精品黄色 | 中文字幕 视频一区 | 国产成人在线免费 | 久操亚洲| 国产高清精品一区二区三区 | 亚洲一区在线日韩在线深爱 | 一区二区日韩精品 | 欧美激情综合色综合啪啪五月 | 99精品久久久久久中文字幕 | 国产日韩久久 | 日韩在线精品视频 | 性色视频| 国产乱码精品1区2区3区 | 精品国产99 | 老头搡老女人毛片视频在线看 | 91中文字幕在线观看 | 精品久久国产 | 中文字幕视频在线观看 | 久久久亚洲一区 |