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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2891|回復: 0
打印 上一主題 下一主題
收起左側(cè)

利用c51單片機制作打地鼠游戲的電路程序PCB設計

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:771881 發(fā)表于 2021-7-31 14:18 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
原理圖如下



pcb如下




單片機源程序如下:
  1. #include<reg51.h>

  2. typedef unsigned int u16;
  3. typedef unsigned char u8;

  4. #define GPIO_DIG P0
  5. #define GPIO_KEY P1

  6. sbit LSA=P2^5;
  7. sbit LSB=P2^6;
  8. sbit LSC=P2^7;

  9. u8 LedNumber;  //存放當前顯示LED序號
  10. u8 KeyValue;  //存放讀取到的鍵值
  11. u8 RightValue;  //存放當前計數(shù)值
  12. u8 code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  13.                                                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//存放數(shù)碼管字形碼
  14. u8 code led[]={0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,
  15.                                                          0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};//存放led字形碼

  16. void delay(u16 j)
  17. {
  18.                 while(j--);
  19. }

  20. void LedDisplay(u8 n)
  21. {
  22.                 u8 j;
  23.                 j=(16+7*n)%16;
  24.                 P2=(P2&0xf0)|led[j-1];
  25. }

  26. void Timer1Init()        
  27. {        
  28.                 TMOD|=0x10;
  29.           TH1=0Xfc;
  30.                 TL1=0x18;
  31.                 EA=1;
  32.                 TR1=1;
  33. }
  34. void Timer1() interrupt 3
  35. {
  36.                 static u16 i;
  37.                 TH1=0Xfc;
  38.                 TL1=0x18;
  39.           TR1=1;
  40.                 i++;
  41.                 if(i==1000)
  42.                 {
  43.                                 i=0;
  44.                                 LedNumber++;
  45.                                 if(LedNumber==16)
  46.                                 {
  47.                                                 LedNumber=0;
  48.                                 }
  49.                 }
  50. }

  51. void KEY_SCAN()
  52. {
  53.                 u8 a=0;
  54.                 GPIO_KEY=0X0f;
  55.                 if(GPIO_KEY!=0X0f)//檢查是否有鍵按下
  56.                 {
  57.                                 delay(1000);//延時10ms消抖
  58.                                 if(GPIO_KEY!=0X0f)//消抖后再次檢查是否有鍵按下
  59.                                 {
  60.                                                 //測試列
  61.                                                 switch(GPIO_KEY)
  62.                                                 {
  63.                                                                 case(0x07):KeyValue=0;break;
  64.                                                                 case(0x0b):KeyValue=1;break;
  65.                                                                 case(0x0d):KeyValue=2;break;
  66.                                                           case(0x0e):KeyValue=3;break;
  67.                                                 }
  68.                                                 //測試行
  69.                                                 GPIO_KEY=0xf0
  70.                                                 switch(GPIO_KEY)
  71.                                                 {
  72.                                                                 case(0x70):KeyValue=KeyValue;break;
  73.                                                                 case(0xb0):KeyValue=KeyValue+4;break;
  74.                                                                 case(0xd0):KeyValue=KeyValue+8;break;
  75.                                                           case(0xe0):KeyValue=KeyValue+12;break;
  76.                                                 }        
  77.                                                 if((Lednummer-1)==KeyValue)
  78.                                                 {
  79.                                                                 RightValue++;
  80.                                                 }
  81.                                                 while((a<50)&&(GPIO_KEY!=0Xf0))
  82.                                                 {
  83.                                                                 delay(1000);
  84.                                                                 a++;
  85.                                                 }
  86.                                 }
  87.                 }               
  88. }

  89. void DpyDisplay()
  90. {
  91.                 u8 j;
  92.                 u8 code RightValue[];
  93.                 RightValue[2]=RightValue/100;
  94.                 RightValue[1]=(RightValue%100)/10;
  95.                 RightValue[0]=RightValue%10;
  96.                 for(j=2;j>=0;j--)
  97.                 {
  98.                                 switch(j)
  99.                                 {
  100.                                                 case(2):
  101.                                                 LSA=1;LSB=0;LSC=0;break;
  102.                                                 case(1):
  103.                                                 LSA=0;LSB=1;LSC=0;break;
  104.                                                 case(0):
  105.                                                 LSA=0;LSB=0;LSC=1;break;
  106.                                 }
  107.                 P0=smg[RightValue[j]];
  108.                 delay(100);
  109.                 P0=0x00;
  110.                 }        
  111. }

  112. void Judge()
  113. {
  114.                
  115. }

  116. void (main)
  117. {
  118.                 while()
  119.                 {
  120.                                 GameInit();
  121.                                 Timer1Init();
  122.                                 while(1)
  123.                                 {               
  124.                                         if(LedNumber>=1)
  125.                                         {
  126.                                                         LedDisplay(LedNumber);
  127.                                         }
  128.                                 }
  129.                 }
  130. }
復制代碼

初學,如有錯誤,請大家多多指導,資料僅供參考:
pcb原理圖程序.7z (1.63 MB, 下載次數(shù): 43)

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区在线观看 | 亚洲视频在线观看免费 | 中文字幕第十一页 | 亚洲一二三在线观看 | 浮生影院免费观看中文版 | 精品视频www | 久久久久9999 | 免费观看一区二区三区毛片 | 亚洲电影在线播放 | ririsao久久精品一区 | 高清成人av| 国产精品亚洲成在人线 | 国产精品夜间视频香蕉 | 中国免费黄色片 | 中文字字幕一区二区三区四区五区 | 久久精品国产一区二区电影 | 日日操夜夜操天天操 | 久久婷婷国产麻豆91 | 黄色一级免费看 | 久久久精彩视频 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 久久精品亚洲一区二区三区浴池 | 亚洲一二三区av | 日韩国产中文字幕 | 鸳鸯谱在线观看高清 | 国内在线视频 | 亚洲一av | 国产农村妇女毛片精品久久麻豆 | 中文字幕第二区 | 91黄在线观看 | 日韩精品一区二 | 精品一二三区 | 精品在线播放 | 亚洲国产精品99久久久久久久久 | 黄色一级视频免费 | 亚洲精品成人网 | 天天插天天狠天天透 | 国产精品永久 | 精品一区二区三区四区在线 | 久久久久国产一区二区三区 | 91视频88av |