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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5307|回復: 8
收起左側

基于51單片機的八路搶答器仿真+代碼設計

[復制鏈接]
ID:116400 發表于 2018-12-16 22:39 | 顯示全部樓層 |閱讀模式
大家好,我是51hei的終實粉絲”小小鳥“,在我閑暇之余會給大家分享一些小的設計,本次設計的是基于51單片機的1602顯示的八路搶答器(附件中有用keil4編寫的完整程序和Proteus8.6繪制的仿真圖),有一個教師端口的獨立按鍵,教師按下時候代表開始搶答,1-8號任意一位同學搶答后,其他同學在按下沒有效果,直到教師再一次按下下一次搶答開始又開啟新一輪的搶答,在本設計中還設置了9S的倒計時,計時時間到了同學們不能夠搶答,直到老師開啟新一輪的搶答才能夠搶答。

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

單片機源程序如下:
  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;        //液晶數據命令選擇端
  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);//設置16X2顯示,5X7點陣,8位數據接口
  40.         write_com(0x0c);//設置開顯示,不顯示光標
  41.         write_com(0x06);//寫一個字符后地址指針加1
  42.         write_com(0x01);//顯示清零,數據指針清零
  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. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

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


評分

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

查看全部評分

回復

使用道具 舉報

ID:68189 發表于 2018-12-17 09:31 | 顯示全部樓層
感謝樓主的貢獻.
回復

使用道具 舉報

ID:116400 發表于 2018-12-19 12:58 | 顯示全部樓層

老弟,在學習上有啥想法和疑問了發出來大家一起討論談論
回復

使用道具 舉報

ID:426284 發表于 2018-12-19 18:39 | 顯示全部樓層
怎么不會顯示呢
回復

使用道具 舉報

ID:116400 發表于 2018-12-21 12:57 | 顯示全部樓層

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

使用道具 舉報

ID:451659 發表于 2018-12-21 17:09 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:454841 發表于 2018-12-26 11:22 來自觸屏版 | 顯示全部樓層
我想問下你的那個仿真工作是怎么樣的
回復

使用道具 舉報

ID:116400 發表于 2018-12-26 17:53 | 顯示全部樓層
1111姐 發表于 2018-12-26 11:22
我想問下你的那個仿真工作是怎么樣的

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

使用道具 舉報

ID:672691 發表于 2019-12-24 18:19 | 顯示全部樓層
樓主,代碼可以改段一點嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区三区在线观看国产 | 日韩在线观看精品 | 中文字幕 国产精品 | 久久久久久久久久久久久91 | 日本不卡免费新一二三区 | 久久综合一区 | 日本又色又爽又黄的大片 | 免费观看a级毛片在线播放 黄网站免费入口 | 欧洲一区二区三区 | 美国十次成人欧美色导视频 | 亚洲欧美激情精品一区二区 | 最新免费黄色网址 | 色资源av| 成人在线免费视频 | 三区四区在线观看 | 亚洲视频手机在线 | 国产精品免费一区二区三区 | 日韩精品在线观看视频 | 亚洲成人在线免费 | 一区二区精品 | 99九色| 久久久久一区 | 一区二区三区在线播放 | 精品国产乱码久久久久久久久 | 日韩久久久一区二区 | 免费观看黄a一级视频 | 精品中文字幕一区二区 | 欧美一区二区另类 | 国产精品国产三级国产aⅴ无密码 | 午夜精品一区二区三区在线观看 | 亚州无限乱码 | 亚洲精品在线播放 | 久久久久免费精品国产 | 在线中文字幕av | 一级做a爰片性色毛片16美国 | 99久久精品免费看国产四区 | 国产午夜精品一区二区三区四区 | 精品国产一级 | 日韩视频一区二区 | 成人免费视频观看视频 | 国产男女视频网站 |