xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 28KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2021-12-01
  • 語言: 其他
  • 標簽: 單片機??

資源簡介

本設計基于STC-89C52系列單片機,利用按鍵、蜂鳴器、數碼管實現了搶答功能。設計將3位選手中搶答成功的選手編號顯示在數碼管上,通過復位開始鍵,顯示搶答剩余時間,初始為10s,時間分辨率不小于100ms,搶答成功后通過蜂鳴器播放一段小樂曲并顯示選手編號,10秒內搶答結束時無人搶答,算作搶答失敗,播放一段警報聲,并顯示FF。主要模塊有:數碼管顯示模塊、蜂鳴器模塊、獨立按鍵模塊、中斷模塊、樂曲播放模塊。

資源截圖

代碼片段和文件信息

#include?
#include??
#define?uint?unsigned?int?
#define?uchar?unsigned?char
sbit?beep=P2^5;??//蜂鳴器口
sbit?wela1=P2^6;
sbit?wela2=P2^7;//兩個位選,P0口為段選
sbit?s1=P3^4;
sbit?s2=P3^5;
sbit?s3=P3^6;
sbit?s4=P3^7;?//定義按鍵
uchar?code?SONG_TONE[]={1591591061069393106
1191191261261421421590}; //樂曲音符頻率編碼

uchar?code?SONG_LONG[]={12121212241224
121212121212240};??//樂曲節拍編碼

uchar?code?table[]={?
0xbf0x860xdb0xcf
0xe60xed0xfd0x87
0xff0xef0x060x3f
0x5b0x4f0x6d0x71}; //數碼管編碼?0.~9. 10235F
uchar?numt0geshi;
int?lock?=?1;?
int?a=1;
void?init();?????????????
void?display(uchar?num1uchar?num2);
void?keycan();
void?delay(uint?z);?
void?PlayMusic();
void?main() ??//主函數
{
init();
while(1)
{
keycan();
display(shige);
}
}

void?init()?//初始化函數,開定時器???????
{
TMOD=0x01; ??//設置定時器0為工作方式1
TH0=(65536-45872)/256;? ??//裝初值50ms一次中斷
TL0=(65536-45872)%256; ??
EA=1; ???//開總中斷
ET0=1; ???//開定時器0中斷
}

void?keycan()?//按鍵控制函數
??{
if(s1==0) ?//s1按下進入10s倒計時
{
delay(20);?//延時防抖動
shi=10; ?ge=11; //數碼管顯示的十位及個位
while(!s1); //按鍵彈起后再進行下一步
TR0=1; ?//進入定時
lock?=?1;
}
if(s2==0&&lock) ???//s2為第一位選手按鍵
{
delay(20);
shi=11;ge=10;
display(shige);
while(!s2);
TR0=0; ???//關定時,顯示選手號碼
lock?=?0; ???//鎖存狀態,其他選手按鍵無效
PlayMusic();???//播放樂曲
}
if(s3==0&&lock)
{
delay(20);
shi=11;ge=12;
display(shige);
while(!s3);
TR0=0;
lock?=?0;
PlayMusic();
}
if(s4==0&&lock)
{
delay(20);
shi=11;ge=13;
display(shige);
while(!s4);
TR0=0;
lock=0;
PlayMusic();
}
??}

void?delay(uint?z)? ??//延時函數
{
uint?xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--); //z等于多少即延時約多少ms
}
void?timer0()?interrupt?1? //中斷
{
????int?i=50;
TH0=(65536-45872)/256; ???//重裝初值
TL0=(65536-45872)%256;
numt0++;
if(numt0==10) ?// 如果到了10次即0.5s時間到?,然后開始以0.5s為單位倒計時
{
numt0=0;
if(a==1) ?//如果a=1則第二位顯示5
{
ge=14;
a=0;
shi=shi-1; ?//第一位減1
}
else
{
ge=11; ?//如果a=0則第二位顯示0,且第一位保持不變
a=1;
}
if(shi==0&&ge==11) ??//如果數值為0.0,則說明搶答時間到
{
???shi=15;ge=15; ??//顯示FF
???lock=0; ???//鎖存狀態,選手按鍵無效
???while(i--) //蜂鳴器發出警報
???{
???beep=0; //無源蜂鳴器給方波信號頻率發聲
???display(shige);
???delay(1);
???beep=1;
???delay(1);
???}
???TR0=0;
?}
}

}


void?display(uchar?num1uchar?num2) ???//數碼管顯示函數
{
if(shi!=11)
{
??? wela2=1; ?//如果十位不等于0,數碼管動態掃描顯示
??????? P0=table[num1]; ?//十位
wela2=0;
delay(5);
wela2=1;
?
wela1=1; ?//個位
P0=table[num2];
wela1=0;
delay(5);
wela1=1;
}
else //如果十位等于0,即選手按下,則數碼管靜態顯示個位
{
P0=table[num2];
?? wela1=0;
} ?
}

void?PlayMusic() ???//樂曲播放函數
{
uint?i=0jk;
beep=0;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) ?
{?????????????????????????????????????
???? for(j=0;j {
???? beep=~bee

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????7973??2018-01-07?20:26??代碼\1
?????文件????????2105??2018-01-07?20:26??代碼\1.hex
?????文件??????????34??2018-01-07?20:26??代碼\1.lnp
?????文件???????11392??2018-01-07?20:26??代碼\1.M51
?????文件?????????161??2018-01-07?22:27??代碼\1.plg
?????文件???????55746??2018-01-07?22:27??代碼\1.uvopt
?????文件???????13217??2017-12-26?18:42??代碼\1.uvproj
?????文件???????55746??2018-01-07?20:34??代碼\1_uvopt.bak
?????文件???????13213??2017-12-25?22:37??代碼\1_uvproj.bak
?????文件????????3522??2018-01-07?20:26??代碼\a.c
?????文件????????8951??2018-01-07?20:26??代碼\a.LST
?????文件????????9130??2018-01-07?20:26??代碼\a.OBJ

評論

共有 條評論