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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

八位競賽搶答器 單片機課程設計 PPT文檔 仿真 程序等下載

  [復制鏈接]
跳轉到指定樓層
樓主
PPT文檔: 仿真:
以上壓縮包所有資料下載: 八路搶答器單片機課程設計.rar (168.9 KB, 下載次數: 219)


侯從彬;呂衛偉;劉艷平;朱強

實驗要求:

1:  兩個兩位的數碼管,

一個用來顯示倒計時時間

一個用來顯示選手的編號

2: 主持人控制兩個按鍵K1-K2:

功能鍵K1:搶答開始,開始倒時揚聲器響。

 

功能鍵K2 功能1:清除顯示(時間從倒計時的最大時間開始,選手編號顯示清零);

功能2:設置倒計時的時間。

 

八位選手各控制一鍵,待主持人按下開始鍵后,第一個按下搶答鍵的選手的編號將被顯示。揚聲器停,其他鍵均被屏蔽,至到主持人再次按下開始鍵。

實驗模塊分析:

  1. 數碼管的使用:

共陰極:

 

 

 

(1)

 

選端 置數功能  P00P07

 

輸入

0X3F

0X06

0X5B

0X4F

0X66

0X6D

0X7D

0X07

0X7F

0X6F

顯示

0

1

2

3

4

5

6

7

8

9

 

 

 

(2)

 

段選端: 控制功能   D0..D1;

D0=0 啟動置數;

D0=1  停止置數;

 

例如:置D0=0;P0=0X3F;

則數碼管顯示數字 0

 

2 .

本實驗需要兩個數碼管同時顯示,實際上是達不到同時顯示的;但可以利“視覺暫留效應”達到此效果;

同時也要考慮到消除數碼管顯示抖動現象;

這就需要實驗者熟練應用              delay() 延時函數;

 

              d1=0;

              P0=tab[num/10];//倒計時控制

              delay(5);

              d1=1;

              d2=0;

              P0=tab[num%10];

              delay(5);

              d2=1;

其中的              delay(5)              就是為了達到一上所敘述的目的             

 

<二>、

蜂鳴器:

 

只要在BUZ 端接地即可鳴叫。

 

<二、程序框圖>

 

                主函數:



實物圖連接:

P1口接8選手開關,在ZK1 ZK2為主持人開關,功能與題目要求一樣

P0 口為數碼管位選 。

注意:P0口使用時必須接上拉電阻否則為高阻態 。

P2口的分別用作主持人開關(P2^0P2^1)兩數碼管段選(P2^4...P2^7);

 

 

實驗程序分析:

 

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

#define  max 20

uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,};

sbit d1=P2^4;//**************段選

sbit d2=P2^5;

sbit x1=P2^6;

sbit x2=P2^7;

sbit k1=P1^0;//*********************八位選手開關

sbit k2=P1^1;

sbit k3=P1^2;

sbit k4=P1^3;

sbit k5=P1^4;

sbit k6=P1^5;

sbit k7=P1^6;

sbit k8=P1^7;

sbit zk1=P2^0;//*****************************主持人開關zk1              zk2

sbit zk2=P2^1;

sbit buz=P2^2;//*******************蜂鳴器

uchar num,aa;

uchar f,flag;

void jianpan()

 

void init(void)

{

TMOD=0X01;//***************T0,模式1,定時

TL0=0XB0; //********************定時50ms

   TH0=0X3C;

   ET0=1;    //**************開中斷

   EA=1;

   num=max;//置倒計時計數初值

}

 

void delay(uint xms)

{

   uint x,y;

   for(x=xms;x>0;x--)

    for(y=110;y>0;y--);

 

}

/**********************************************

倒計時  選手號顯示函數

**********************************************/

void display()

{d1=0;         //控制開始置數

P0=tab[num/10];//倒計時控制取最高位

delay(5);

d1=1;          //停止置數操作

 

d2=0;

P0=tab[num%10]//倒計時取最低位

delay(5);

d2=1;

 

x1=0;         //控制開始置數

P0=tab[flag/10];//選手號控制

delay(5);

x1=1;         //停止置數操作

x2=0;

P0=tab[flag%10];

delay(5);

x2=1;

}

/**********************************************************主函數部分

**********************************************************/void main()

{             

init();

while(1)

{ jianpan();display();}              }

 

/***************************************

中斷控制倒計時

*************************************/

void timer0(void) interrupt 1

{

   TL0=0XB0; //******重裝初值,定時50ms

   TH0=0X3C;

   aa++;

   if(aa==20)//**********************************1秒到了

    {

     aa=0;//**************************************計數清零

num--;

if(num==0)//倒計時為0時迅速變為初值同時關中斷停止倒計時

{   num=max;

TR0=0;   }

 

buz=0;//***************要求蜂鳴器響

delay(20);//**************************蜂鳴器響,特別注意時間為一秒buz=1;

                

     }  

}

/**************************************************

按鍵控制   程序的核心部分

****************************************************/

void jianpan()

{

if(zk1==0&flag=0)

{

delay(5);//消除數碼管抖動操作

flag=0;//數碼管顯示0

display();

TR0=1//ZK1鍵按下開中斷以此控制只有當此鍵按下時才搶答

}

if(zk2==0&&TR0==0)//注意這里要求TR0=0;

{

delay(5);//消除抖動

if(zk2==0&&TR0==0)

if(flag==0)

{num--;buz=0;delay(20);buz=1;}

if(num==0)

num=max;                           

if(flag!=0)//ZK2鍵清零操作

{

flag=0;

num=max;//倒計時顯示最大值

TR0=0;//注意此時關中斷,不再進行倒計時

buz=0;

delay(20);

buz=1;   

}

while(!zk2)//倒計時中ZK2 鍵不可影響

display();

                            }

 

/**********************************************************TR0控制搶答先后順序

*********************************************************/

 

if(k1==0&&TR0==1)//注意此時TR0=1才執行以下按鍵操作

{             

buz=0;

delay(20);

buz=1;

delay(5);

flag=1;

TR0=0;//此鍵按下關中斷,其他選手按鍵不再受影響                           

display();

}

/*************************************

以下原理相同

*************************************/

if(k2==0&&TR0==1)

buz=0;delay(20);buz=1;

delay(5);

flag=2;

TR0=0;             

display();

}

 

if(k3==0&&TR0==1)

{             

buz=0;delay(20);buz=1;

delay(5);

flag=3;

TR0=0;

display();

}

if(k4==0&&TR0==1)

{             

buz=0;delay(20);buz=1;

delay(5);

flag=4;

TR0=0;                           

display();   }

if(k5==0&&TR0==1)

{

delay(5);

flag=5;                    

TR0=0;

display();                                                           

}

if(k6==0&&TR0==1)

{             

buz=0;delay(20);buz=1;

                                

delay(5);

                      

flag=1;

                      

TR0=0;

display();          }

 

                           

if(k7==0&&TR0==1)

buz=0;delay(20);

buz=1;

delay(5);

flag=7;

TR0=0;

display();

}

 

if(k8==0&&TR0==1)

buz=0;delay(20);

buz=1;

delay(5);

flag=8;

TR0=0;                                                                                         

display();  

}

             

}

 

 

1.

此實驗最大的特點便是中斷的巧妙應用

另外要注意延遲函數對數碼管顯示效果的影響

2.

控制選手先后順序時,設置了兩個條件:按鍵和TR0

TR0則是控制關鍵,也是主持人按鍵控制的關鍵

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

使用道具 舉報

沙發
ID:126068 發表于 2016-6-10 12:05 | 只看該作者
寫得真棒
回復

使用道具 舉報

板凳
ID:150661 發表于 2016-11-28 00:56 | 只看該作者
翻譯后都是errors
回復

使用道具 舉報

地板
ID:208278 發表于 2017-6-8 10:57 | 只看該作者
感謝樓主 收益良多啊
回復

使用道具 舉報

5#
ID:209984 發表于 2017-6-11 13:50 | 只看該作者
樓主的protues不能修改,怎么樣改變只讀模式啊
回復

使用道具 舉報

6#
ID:259031 發表于 2017-12-8 13:28 | 只看該作者
很棒,收貨很多
回復

使用道具 舉報

7#
ID:264470 發表于 2017-12-20 20:25 | 只看該作者
這個很詳細.得到很大收獲
回復

使用道具 舉報

8#
ID:339284 發表于 2018-6-2 17:04 | 只看該作者
這個可以 有點干貨
回復

使用道具 舉報

9#
ID:480493 發表于 2019-3-23 15:18 | 只看該作者
在哪里下載
回復

使用道具 舉報

10#
無效樓層,該帖已經被刪除
11#
ID:508547 發表于 2019-4-12 16:13 | 只看該作者
很棒,對于初學者來說收獲很大
回復

使用道具 舉報

12#
ID:561708 發表于 2019-6-13 14:46 | 只看該作者
感覺挺難,第一次做的時候頭緒都沒有,看了你這之后好多了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一起操网站| 国产精品久久久久久婷婷天堂 | 日韩欧美国产精品一区 | 日韩av一区二区在线观看 | 成人在线免费av | 在线视频一区二区三区 | 久久久国产一区二区三区四区小说 | 九九热精品在线视频 | 欧洲一区在线观看 | 国产1区2区3区 | 久久综合狠狠综合久久 | 国产伦精品一区二区三区照片91 | 中文字幕一区二区三区在线观看 | www..com18午夜观看 | 国产资源在线视频 | 91原创视频| 亚洲精品免费观看 | 视频在线一区二区 | 免费在线播放黄色 | 精品久久久久久18免费网站 | 一级黄色片毛片 | 在线观看免费观看在线91 | 久久99精品久久久 | 在线国产视频 | 国产精品成人国产乱 | 久久99国产精品 | 日韩欧美精品一区 | 91中文字幕在线 | 羞羞视频免费在线 | 成人影院网站ww555久久精品 | 正在播放一区二区 | 国产高清在线观看 | 亚洲精品欧美一区二区三区 | 视频一区在线 | 久久这里有精品 | 日本天天色 | 日本精品视频 | 在线a视频| a级片网站| 成人在线欧美 | 色婷婷综合在线观看 |