基於51單片機的課程設計
Ⅰ 怎麼設計基於51單片機的八位搶答器課程設計用c語言
你的描述不詳:下面我給出方法,自已參考:
1:主持人端有一個單片機設備 且設備有一個或多個按鍵,單個按鍵,那麼就做成按鍵復用,如果是多個按鍵,那就可以按要求設置按鍵功能和數量。參賽隊每隊一個設備,如果不方便能過連線來通訊,就採用無線通訊,搶答端只需一個按鍵按鍵,同時在按鍵里或邊上用指示燈來指示狀誠。
2:邏輯,當主持人按下搶答鍵時,主持人端設備向8個參賽隊發送搶答開始信號數據,參賽隊8個設備向主持端應答,判斷收到應答後,開始計時10秒,某一隊按下按鍵時,這隊會向主持端發送本隊的編號即可,說到這里,後面的基本上都是一樣的原理,就是收發數據,應答,判斷數據類型和功能。即可達到你的要求。
Ⅱ 51單片機課程設計
ORG 0000H LJMP START ORG 0040H START: MOV SP,#60H LCALL STATUS0 ;初始狀態(都是紅燈) CIRCLE: LCALL STATUS1 ;南北綠燈,東西紅燈 LCALL STATUS2 ;南北綠燈閃轉黃燈,東西紅燈 LCALL STATUS3 ;南北紅燈,東西綠燈 LCALL STATUS4 ;南北紅燈,東西綠燈閃轉黃燈 LJMP CIRCLE STATUS0: ;南北紅燈,東西紅燈 MOV DPTR,#8300H MOV A,#0FH MOVX @DPTR,A MOV R2,#10 ;延時1秒 LCALL DELAY RET STATUS1: ;南北綠燈,東西紅燈 MOV DPTR,#08300H MOV A,#96H ;南北綠燈,東西紅燈 MOVX @DPTR,A MOV R2,#200 ;延時20秒 LCALL DELAY RET STATUS2: ;南北綠燈閃轉黃燈,東西紅燈 MOV DPTR,#8300H MOV R3,#03H ;綠燈閃3次 FLASH: MOV A,#9FH MOVX @DPTR,A MOV R2,#03H LCALL DELAY MOV A,#96H MOVX @DPTR,A MOV R2,#03H LCALL DELAY DJNZ R3,FLASH MOV A,#06H ;南北黃燈,東西紅燈 MOVX @DPTR,A MOV R2,#10 ;延時1秒 LCALL DELAY RET STATUS3: ;南北紅燈,東西綠燈 MOV DPTR,#8300H MOV A,#69H MOVX @DPTR,A MOV R2,#200 ;延時20秒 LCALL DELAY RET STATUS4: ;南北紅燈,東西綠燈閃轉黃燈 MOV DPTR,#8300H MOV R3,#03H ;綠燈閃3次 FLASH1: MOV A,#6FH MOVX @DPTR,A MOV R2,#03H LCALL DELAY MOV A,#69H MOVX @DPTR,A MOV R2,#03H LCALL DELAY DJNZ R3,FLASH1 MOV A,#09H ;南北紅燈,東西黃燈 MOVX @DPTR,A MOV R2,#10 ;延時1秒 LCALL DELAY NOP RET DELAY: ;延時子程序 PUSH 2 PUSH 1 PUSH 0 DELAY1: MOV 1,#00H DELAY2: MOV 0,#0B2H DJNZ 0,$ DJNZ 1,DELAY2;延時 100 mS DJNZ 2,DELAY1 POP 0 POP 1 POP 2 RET END 沒有問題。
Ⅲ 51單片機課程設計,編程並設計模擬電路
^#include<reg51.h>
#include<INTRINS.h>
#defineu16unsignedint
#defineu8unsignedchar
sbitk_add1=P1^0;
sbitk_add2=P1^1;
sbitk_add3=P1^2;
sbitk_sub1=P1^3;
u8key=0xff;//消抖後的有效按鍵值
u8key_down=0x00;//按鍵下降沿掃描結果,1有效
u8key_sc=0xff;//上次掃描的按鍵值
//按鍵掃描程序
voidscanKey(){
staticu8temp0;
staticu8ms;
u8temp=0;
if(k_add1==1)temp|=0x01;
if(k_add2==1)temp|=0x02;
if(k_add3==1)temp|=0x04;
if(k_sub1==1)temp|=0x08;
if(temp==temp0){//按鍵消抖
if(++ms>=5){//連續5次掃描的值一樣,則認為是穩定狀態
key=temp;
ms=0;
}
}else{
temp0=temp;
ms=0;
}
key_down=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);
}
u8ds[4];//數碼管顯示緩存
codeu8w[]={0x01,0x02,0x04,0x08,}; //位碼
codeu8d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//斷碼
voiddispaly(){//顯示函數
staticu8a;
a++;
if(a>3)a=0;
P0=0xff;
P2=w[a];
P0=d[ds[a]];
}voidinit() //初始化函數
{TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
}
u16count=0;
voidmain()//主函數
{
init();
TR0=1;
while(1){
ds[0]=count/1000%10;//將當前分值送到數碼管緩存
ds[1]=count/100%10;
ds[2]=count/10%10;
ds[3]=count%10;
scanKey();//掃描按鍵
if(readPIN(key_down,0)==1){//加1
count+=1;
}
if(readPIN(key_down,1)==1){//加2
count+=2;
}
if(readPIN(key_down,2)==1){//加3
count+=3;
}
if(readPIN(key_down,3)==1){//減1
count-=1;
}
if((key&0x0f)==0){//四個減一起按下,記分清零
count=0;
}
}
}voidtimer0()interrupt1//定時器,實現倒計時
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
dispaly();
}
Ⅳ 課程設計:用51單片機設計一個簡易計算器
『哦啦啦啊呀呀有個子系統好嗎啉了解我在不在』
Ⅳ 51單片機課設
可以做一個溫度檢測回報跟風扇控制的,既有AD(溫度檢測),也有DA(驅動風扇),顯示(顯示數值),鍵盤(設置風扇啟動點及停止點)通訊(回傳溫度)都有用到
Ⅵ 求一篇基於51單片機檢測系統的課程設計,謝謝了
采樣電阻采樣電流,運放做精密放大整流,adc晶元轉換
Ⅶ 求一篇基於51單片機音樂播放器的課程設計
看看我這的這個單片機音樂播放器行不行,Q我吧