籃球計分器數電課程設計
發布時間: 2021-02-07 02:44:03
❶ 數電課程設計 籃球計分器
不如去電子或者自動化相關的知識領域問一下,籃球類基本沒人能回答哎
❷ 數電課程設計 籃球計分器 proteus電路圖分析
數電的
要求是什麼
任務是什麼。
❸ 一、設計題目:籃球電子計分器
#include<reg51.h>
#include<INTRINS.h>
#defineu16unsignedint
#defineu8unsignedchar
sbitk1=P1^0;//加1
sbitk2=P1^1;//加2
sbitk3=P1^2;//加3
sbitk4=P1^3;//減1
sbitk5=P1^4;//連按2下開始或停止計時,按下該鍵再按加減分鍵給另一邊加分
sbitbz=P1^6;//按按鍵時響,不按不響
sbitled=P1^5;//創新能力不夠沒想到在哪加
u8key=0xff;//消抖後的有效按鍵值
u8key_down=0x00;//按鍵下降沿掃描結果,1有效
u8key_up=0x00; //上升沿掃描結果,1有效
u8key_sc=0xff;//上次掃描的按鍵值
//按鍵掃描程序
voidscanKey(){
staticu8temp0;
staticu8ms;
u8temp=0xff;
if(k1==0)temp&=0xfe;
if(k2==0)temp&=0xfd;
if(k3==0)temp&=0xfb;
if(k4==0)temp&=0xf7;
if(k5==0)temp&=0xef;
if(temp==temp0){//按鍵消抖
if(++ms>=5){//連續5次掃描的值一樣,則認為是穩定狀態
key=temp;
ms=0;
}
}else{
temp0=temp;
ms=0;
}
key_down=key_sc&(~key);//下降沿掃描
key_up=(~key_sc)&key;//下降沿掃描
key_sc=key;
}
u8readPIN(u8port,u8pin){
codeu8tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
return((port&tab[pin])==0?0:1);
}
sbitdx=P3^2;
u8ds[8];//數碼管顯示緩存
codeu8w[]={~0x01,~0x02,~0x04,~0x08,~0x10,~0x20,~0x40,~0x80,}; //位碼
codeu8d[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,0x00};//斷碼
codeu8d_huo[]={0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,};
voiddispaly(){//顯示函數
staticu8a;
if(++a>7)a=0;
P2=0xff;
P0=d[ds[a]]|d_huo[a];
dx=1;dx=0;
P2=w[a];
}voidinit() //初始化函數
{TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
}//加分和減分
voidjjf(u16*val){
if(readPIN(key_down,0)==1){//加1
*val+=1;
}
if(readPIN(key_down,1)==1){//加2
*val+=2;
}
if(readPIN(key_down,2)==1){//加3
*val+=3;
}
if(readPIN(key_down,3)==1){//減1
if(*val>0)*val-=1;
}
}
//連按程序
u8la_count=0;
u16la_js=0;
voidlan(){
if(la_js>=1000||((key&0xef)!=0xef))la_count=0;
if(readPIN(key_down,4)==1){
la_count++;
la_js=0;
}
}
u16count=0;
u16count1=0;
u16s24=24000;
u8s24off_flag=0;
voidmain()//主函數
{
init();
TR0=1;
while(1){
ds[0]=(count>99?count/100%10:10);//將當前分值送到數碼管緩存
ds[1]=(count>9?count/10%10:10);
ds[2]=count%10;
ds[3]=(s24>9999?s24/10000%10:10);
ds[4]=s24/1000%10;
ds[5]=(count1>99?count1/100%10:10);//將當前分值送到數碼管緩存
ds[6]=(count1>9?count1/10%10:10);
ds[7]=count1%10;
scanKey();//掃描按鍵
bz=(key!=0xff?0:1);//按下按鍵,蜂鳴器響
if(readPIN(key,4)==0){//判斷給哪一方加減分
jjf(&count);
}else{
jjf(&count1);
}
lan();
if(la_count==2){
if(s24off_flag==0){
s24=24000;
s24off_flag=1;
}else{
s24off_flag=0;
}
la_count=3;
}
}
}voidtimer0()interrupt1//定時器
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
dispaly();
if(s24off_flag==1){
if(s24>0)s24--;
}
if(la_js<60000)la_js++;
}
單片機最小系統自己畫吧,功能設計可以再探討,你在問一下出這題的人,為什麼不用兩個573,用一個跟沒用有什麼區別
❹ 數電課程設計:籃球計分器。要求:3位計分器,從000到999,按一下開關加或者減1。要課程設計報告和multisi
我不太知道,你可以到網路查
❺ 籃球比賽計分器用數字電路設計
數字電路不好整來
單片自機很容易就可以實現。
8個按鍵,一個按鍵做清零,6個鍵分兩組,分別表示A隊、B隊,每組3個按鍵,三個按鍵分別為:1分、2分、3分,按相應的鍵,加相應的分;空餘的那個按鍵可以不用,也可以實現其他功能。
顯示用7段LED數碼管顯示,每組顯示用3位數碼管,既顯示0——999。
空餘的那個鍵用來做撤銷鍵。也就是按一下,撤銷前一次的操作。這個主要是在加分錯誤的情況下用來撤銷前一次操作。
熱點內容