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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

純原創單片機籃球比賽計分器 中斷 實現程序及原理

[復制鏈接]
跳轉到指定樓層
樓主
這是本人最近單片機的作品之一,純原創手打。

一、實驗目的
利用所學知識點(按鍵、數碼管、中斷等),設計一個籃球計分器。

二、實驗內容
利用兩位共陰數碼管、4082與門、AT89C51單片機、按鈕等元器件設計電路及相關代碼,完成以下功能:
AB兩隊各一個兩位(共陰)7段數碼管計分器,計數范圍00-99。
四個按鍵功能:
K1: 清零記分器
K2:  加1分
K3: 減1分
K4: 切換計分隊伍

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

單片機代碼#include "reg51.h"

sbit shi = P3^0;  //十位位選
sbit ge = P3^1;   //個位位選

char led_mod[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共陰數碼管012345679

unsigned char num1 = 0; //數碼管顯示內容  隊伍1分數
unsigned char num2 = 0;//隊伍2分數
unsigned char team = 1;//選擇隊伍 初始為1

void init_int0();
void delay(unsigned int time);
void display();        

void main()
{
    init_int0(); //中斷初始化

           while(1)
    {
            display();  //數碼管顯示
    }
}

void display()
{
    shi = 0;   //共陰極數碼管顯示十位   shi=P3^0連著兩位數碼管的1
    ge = 1;     //個位   ge=P3^1  連著兩位數碼管的2
    P2 = led_mod[((num1/10)%10)];    //十位
    P1 = led_mod[((num2/10)%10)];
    delay(10);
    P2 = 0x00;   //消隱
    P1 = 0x00;

    shi = 1;   //顯示個位
    ge = 0;
    P2 = led_mod[(num1%10)];    //個位
    P1 = led_mod[(num2%10)];
    delay(10);
    P2 = 0x00;  //消隱
    P1 = 0x00;
}

void delay(unsigned int time){
        unsigned int j = 0;
        for(;time>0;time--)
                for(j=0;j<125;j++);
}

void init_int0()
{
   IT0=1;EX0=1;EA=1;
}

void key() interrupt 0    //鍵控中斷
{
    delay(10);  //延時消抖

    if((P0 & 0x0f) != 0xf0)     //檢測按鍵是否有按下
    {
        if((P0 & 0x01) == 0x00)   //按鍵1按下
        {
            if(team == 1)num1 = 0;
            if(team == 2)num2 = 0;                        
        }
        if((P0 & 0x02) == 0x00)   //按鍵2按下
        {
            if(team ==1 && num1 < 99)
                num1++;
            else if (team == 2 && num2 < 99)
                num2++;
        }
        if((P0 & 0x04) == 0x00)   //按鍵3按下
        {
            if(team ==1 && num1 > 0)
                num1--;
            else if(team == 2 && num2 > 0)
                num2--;
        }
        if((P0 & 0x08) == 0x00)   //按鍵4按下
        {
            if(team == 1)team = 2;
            else if (team == 2)team = 1;
        }
    }
}

4、實驗結果及分析

AB兩隊各一個兩位(共陰)7段數碼管計分器,計數范圍00-99。
四個按鍵功能:K1: 清零記分器K4: 切換計分隊伍 K2:  加1分  K3: 減1分

分析:有兩個記錄A、B隊伍分數的變量num1、num2,以及記錄當前控制隊伍的變量team,team的值只取1或2,表示當前控制隊伍為A隊或B隊,按下按鈕后,連接與門4082的INT0中斷口會從1變為0,觸發中斷,再根據P1口可以判斷按下的是哪個按鈕,若是K1則當前team的num變為0,若是K2,則當前team的num++,K3則當前team的num--,K4則team由1變0或由0變1。
數碼管分別連的是P1口和P0口,num1給P0,num2給P1,這樣就能兩個數碼管顯示不同的數字。兩個數碼管共用兩個單片機引腳作為數碼管的位選碼,當是個位時num的個位賦給P口,十位時,num的十位賦給P口,在超循環仿真下,就可以看起來是同時亮了。

籃球計分器 中斷 數碼管.zip (92.69 KB, 下載次數: 54)

原理圖、代碼在附件中


評分

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

查看全部評分

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

使用道具 舉報

無效樓層,該帖已經被刪除
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产免费拔擦拔擦8x高清 | 毛片com| 国产亚洲区 | 一区二区三区在线播放 | 国产一区二区电影 | 成人在线免费观看视频 | 国产精品成人一区二区三区夜夜夜 | 国产精品国产三级国产aⅴ中文 | 国产高清在线观看 | 手机在线一区二区三区 | 91久久精品国产 | 亚洲精品视频播放 | 亚洲精品自拍 | 久久99精品久久久 | 亚洲欧美v | 国产精品99久久久久久宅男 | 亚洲第一成人影院 | 97精品超碰一区二区三区 | 最新黄色毛片 | 日韩一区在线播放 | 成人免费大片黄在线播放 | 欧美国产一区二区 | 九九热精品视频 | 久久久国产视频 | 精品视频一区二区三区在线观看 | 久久久精品网站 | 亚洲日韩中文字幕一区 | 日韩和的一区二在线 | 亚洲精品中文字幕在线观看 | 成年女人免费v片 | 国产欧美一区二区三区在线看蜜臀 | 岛国av免费在线观看 | 一级黄色毛片a | 国产成人在线视频播放 | 7777在线 | 干干干日日日 | 中文字幕亚洲区一区二 | 黄色在线免费观看 | 国产中文字幕网 | 在线免费观看一区二区 | 欧美美女一区二区 |