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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

基于51單片機(jī)的八路搶答器仿真+代碼設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:116400 發(fā)表于 2018-12-16 22:39 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
大家好,我是51hei的終實(shí)粉絲”小小鳥(niǎo)“,在我閑暇之余會(huì)給大家分享一些小的設(shè)計(jì),本次設(shè)計(jì)的是基于51單片機(jī)的1602顯示的八路搶答器(附件中有用keil4編寫的完整程序和Proteus8.6繪制的仿真圖),有一個(gè)教師端口的獨(dú)立按鍵,教師按下時(shí)候代表開(kāi)始搶答,1-8號(hào)任意一位同學(xué)搶答后,其他同學(xué)在按下沒(méi)有效果,直到教師再一次按下下一次搶答開(kāi)始又開(kāi)啟新一輪的搶答,在本設(shè)計(jì)中還設(shè)置了9S的倒計(jì)時(shí),計(jì)時(shí)時(shí)間到了同學(xué)們不能夠搶答,直到老師開(kāi)啟新一輪的搶答才能夠搶答。

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


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code table[]="  Qiang Da QI  ";
  5. uchar code table1[]="Student:  Time:";
  6. sbit lcden=P1^2;        //液晶使能端
  7. sbit lcdrs=P1^0;        //液晶數(shù)據(jù)命令選擇端
  8. sbit RW=P1^1;
  9. sbit s1=P3^2;
  10. uchar num,num1,num2,num3,shu,flag=0;
  11. void delay(uint z)
  12. {
  13.         uint x,y;
  14.         for(x=z;x>0;x--)
  15.                 for(y=110;y>0;y--);
  16. }
  17. void write_com(uchar com)
  18. {
  19.         lcdrs=0;
  20.         P0=com;
  21.         delay(5);
  22.         lcden=1;
  23.         delay(5);
  24.         lcden=0;
  25. }
  26. void write_data(uchar date)
  27. {
  28.         lcdrs=1;
  29.         P0=date;
  30.         delay(5);
  31.         lcden=1;
  32.         delay(5);
  33.         lcden=0;
  34. }
  35. void init()
  36. {
  37.         RW=0;
  38.         lcden=0;
  39.         write_com(0x38);//設(shè)置16X2顯示,5X7點(diǎn)陣,8位數(shù)據(jù)接口
  40.         write_com(0x0c);//設(shè)置開(kāi)顯示,不顯示光標(biāo)
  41.         write_com(0x06);//寫一個(gè)字符后地址指針加1
  42.         write_com(0x01);//顯示清零,數(shù)據(jù)指針清零
  43. }
  44. void init1()
  45. {
  46.         TMOD=0X01;
  47.         TH0=(65536-45872)/256;
  48.         TL0=(65536-45872)%256;
  49.         EA=1;
  50.         ET0=1;
  51. }

  52. void matrixkeyscan(void)
  53. {
  54.         uchar temp,key;
  55.     P2=0xfe;
  56.     temp=P2;
  57.     temp=temp&0xf0;
  58.     if(temp!=0xf0)
  59.     {
  60.       delay(10);
  61.           temp=P2;
  62.           temp=temp&0xf0;
  63.       if(temp!=0xf0)
  64.       {
  65.         temp=P2;
  66.         switch(temp)
  67.         {
  68.           case 0xee:
  69.                shu=1;
  70.                            flag=0;
  71.                            TR0=0;
  72.                break;
  73.           case 0xde:
  74.                shu=2;
  75.                            flag=0;
  76.                            TR0=0;                  
  77.                break;
  78.           case 0xbe:
  79.                shu=3;
  80.                            flag=0;
  81.                            TR0=0;
  82.                break;
  83.           case 0x7e:
  84.                shu=4;
  85.                            flag=0;
  86.                            TR0=0;
  87.                break;
  88.          }
  89.          while(temp!=0xf0)
  90.          {
  91.            temp=P2;
  92.            temp=temp&0xf0;
  93.          }

  94.       }
  95.     }
  96.     P2=0xfd;
  97.     temp=P2;
  98.     temp=temp&0xf0;
  99.     if(temp!=0xf0)
  100.     {
  101.       delay(10);
  102.       temp=P2;
  103.       temp=temp&0xf0;
  104.       if(temp!=0xf0)
  105.       {
  106.         temp=P2;
  107.         switch(temp)
  108.         {
  109.           case 0xed:
  110.                shu=5;
  111.                            flag=0;
  112.                            TR0=0;
  113.                break;
  114.           case 0xdd:
  115.                shu=6;
  116.                             flag=0;
  117.                            TR0=0;
  118.                break;
  119.           case 0xbd:
  120.                shu=7;
  121.                            flag=0;
  122.                            TR0=0;
  123.                break;
  124.           case 0x7d:
  125.                shu=8;
  126.                             flag=0;
  127.                            TR0=0;
  128.                break;
  129.          }
  130.          while(temp!=0xf0)
  131.          {
  132.            temp=P2;
  133.            temp=temp&0xf0;
  134.          }

  135.       }
  136.       }
  137.    
  138. }
  139. void main()
  140. {
  141.         init();
  142.         init1();
  143.         write_com(0x80);
  144.         for(num=0;num<15;num++)
  145.         {
  146.                 write_data(table[num]);
  147.                 delay(5);
  148.         }
  149.         write_com(0x80+0x40);
  150.         for(num=0;num<15;num++)
  151.         {
  152.                 write_data(table1[num]);
  153.                 delay(5);
  154.         }
  155.         while(1)
  156.         {
  157.                 if(s1==0)
  158.                 delay(10);
  159.                 if(s1==0)
  160.                 {       
  161.                         while(s1==0);               
  162.                         flag=1;
  163.                         TR0=1;
  164.                         num2=0;
  165.                         shu=0;
  166.                 }
  167.                 while(flag)
  168.                 {
  169.                         if(s1==0)
  170.                         delay(10);
  171.                         if(s1==0)
  172.                         {
  173.                                 while(s1==0);
  174.                                 flag=0;
  175.                                 TR0=0;
  176.                         }
  177.                         matrixkeyscan();
  178.                         write_com(0xC8);
  179.                         write_data(shu+48);
  180.                         write_com(0xCF);
  181.                         write_data(9-num2+48);
  182. //                        if(1<=shu<=8)
  183. //                        {
  184. //                                flag=0;
  185. //                                TR0=0;
  186. ……………………

  187. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
搶答器1.zip (153.94 KB, 下載次數(shù): 84)


評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:68189 發(fā)表于 2018-12-17 09:31 | 只看該作者
感謝樓主的貢獻(xiàn).
回復(fù)

使用道具 舉報(bào)

板凳
ID:116400 發(fā)表于 2018-12-19 12:58 | 只看該作者
wpppmlah 發(fā)表于 2018-12-17 09:31
感謝樓主的貢獻(xiàn).

老弟,在學(xué)習(xí)上有啥想法和疑問(wèn)了發(fā)出來(lái)大家一起討論談?wù)?/td>
回復(fù)

使用道具 舉報(bào)

地板
ID:426284 發(fā)表于 2018-12-19 18:39 | 只看該作者
怎么不會(huì)顯示呢
回復(fù)

使用道具 舉報(bào)

5#
ID:116400 發(fā)表于 2018-12-21 12:57 | 只看該作者
石先森 發(fā)表于 2018-12-19 18:39
怎么不會(huì)顯示呢

老鐵你先添加HEX文件然后仿真,如果還不顯示了麻煩你添加一下我好友QQ2623724652我仔細(xì)看看是什么原因,如果存在問(wèn)題我會(huì)把具體的問(wèn)題發(fā)到論壇我的貼子下面的的
回復(fù)

使用道具 舉報(bào)

6#
ID:451659 發(fā)表于 2018-12-21 17:09 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

7#
ID:454841 發(fā)表于 2018-12-26 11:22 來(lái)自手機(jī) | 只看該作者
我想問(wèn)下你的那個(gè)仿真工作是怎么樣的
回復(fù)

使用道具 舉報(bào)

8#
ID:116400 發(fā)表于 2018-12-26 17:53 | 只看該作者
1111姐 發(fā)表于 2018-12-26 11:22
我想問(wèn)下你的那個(gè)仿真工作是怎么樣的

附件里面有仿真文件,你可以從附件里面看
回復(fù)

使用道具 舉報(bào)

9#
ID:672691 發(fā)表于 2019-12-24 18:19 | 只看該作者
樓主,代碼可以改段一點(diǎn)嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产99久久精品一区二区永久免费 | 精品久久一区 | 日日干日日操 | 日韩视频在线一区二区 | 久久久久久久久久久久久91 | 亚洲高清视频一区二区 | 免费a级毛片在线播放 | 国产免费一区二区三区网站免费 | 二区在线视频 | 手机看片169 | 中文字幕四虎 | 亚洲国产成人精品女人久久久野战 | 国产精品视频免费观看 | 成人网在线观看 | 欧美日韩在线精品 | www.99热.com| 综合在线视频 | 涩涩视频网站在线观看 | 毛片一区二区三区 | 久久福利电影 | 欧美夜夜| 久久久久久免费观看 | 久久久看| 亚洲品质自拍视频 | 在线视频h | 可以在线观看av的网站 | 久久精品国产精品青草 | 欧美aⅴ | 欧美精品一二三区 | 国产欧美精品一区二区色综合朱莉 | 天天色天天色 | 国产综合久久久久久鬼色 | 蜜桃五月天 | 亚洲精品一二区 | 五月婷婷视频 | 欧美自拍另类 | 国产精品无码永久免费888 | xxx视频 | 夜久久| 欧美lesbianxxxxhd视频社区 | 欧美日韩国产中文 |