freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于at89c51的lcd音樂盒課程設計論文(編輯修改稿)

2025-07-24 23:00 本頁面
 

【文章內(nèi)容簡介】 ********************************************************************//***********************************************************忙檢測************************************************************/ void LCD1602_check_busy(){ LCD1602_DATA = 0xff。 LCD1602_RS = 0 。 LCD1602_RW = 1 。 LCD1602_EN = 1 。 while(LCD1602_DATA amp。 0x80) 。 LCD1602_EN = 0 。 }/**********************************************************寫指令 ************************************************************/ void LCD1602_write_cmd(uchar cmd){ LCD1602_check_busy()。 LCD1602_RS = 0 。 LCD1602_RW = 0 。 LCD1602_DATA = cmd 。 LCD1602_EN = 1 。 _nop_()。 LCD1602_EN = 0 。}/***********************************************************寫數(shù)據(jù)*************************************************************/ void LCD1602_write_data(uchar dat){ LCD1602_check_busy()。 LCD1602_RS = 1 。 LCD1602_RW = 0 。 LCD1602_DATA = dat 。 LCD1602_EN = 1 。 _nop_()。 LCD1602_EN = 0 。}/***********************************************************1602初始化************************************************************/ void LCD1602_init(){ LCD1602_write_cmd(0x38)。 //8位數(shù)據(jù),雙列顯示,5*7字形 LCD1602_write_cmd(0x0c)。 //開顯示,關光標,光標不閃爍 LCD1602_write_cmd(0x01)。 //清屏}/************************************************************設置顯示坐標************************************************************/ void LCD1602_set_postion(uchar x , uchar y){if(!y)LCD1602_write_cmd(0x80+x) 。else if(y)LCD1602_write_cmd(0xc0+x) 。}/************************************************************指定位置寫字符*************************************************************/ void LCD1602_write_char(uchar x , uchar y , uchar chardata){ LCD1602_set_postion(x,y) 。 LCD1602_write_data(chardata) 。}/************************************************************指定位置寫字符串*************************************************************/ void LCD1602_write_string(uchar x , uchar y , uchar *string){ LCD1602_set_postion(x,y) 。 while((*string) != 39。\039。) { LCD1602_write_data(*string) 。 string++ 。 }}/******************************************************************** ************播放音樂函數(shù)********************************************************************************/void InitialSound(){ BeepIO = 0。 Sound_Temp_TH1 = (65535(1/1200)*SYSTEM_OSC)/256。 // 計算TL1應裝入的初值 (10ms的初裝值) Sound_Temp_TL1 = (65535(1/1200)*SYSTEM_OSC)%256。 // 計算TH1應裝入的初值 TH1 = Sound_Temp_TH1。 TL1 = Sound_Temp_TL1。 TMOD |= 0x11。 ET0 = 1。 ET1 = 0。 TR0 = 0。 TR1 = 0。 EA = 1。}void BeepTimer0() interrupt 1 //音符發(fā)生中斷{ if(esc==0) { delay(5)。 if(esc==0) stop=1。 while(!esc)。 }//////////////// BeepIO = !BeepIO。 TH0 = Sound_Temp_TH0。 TL0 = Sound_Temp_TL0。}//**************************************************************************void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed){ unsigned int NewFreTab[12]。 //新的頻率表 unsigned char i,j。 unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength。 unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD。 for(i=0。i12。i++) // 根據(jù)調(diào)號及升降八度來生成新的頻率表 { j = i + Signature。 if(j 11) { j = j12。 NewFreTab[i] = FreTab[j]*2。 } else NewFreTab[i] = FreTab[j]。 if(Octachord == 1) NewFreTab[i]=2。 else if(Octachord == 3) NewFreTab[i]=2。 } SoundLength = 0。 while(Sound[SoundLength] != 0x00) //計算歌曲長度 { SoundLength+=2。 } Point = 0。 Tone = Sound[Point]。 Length = Sound[Point+1]。 // 讀出第一個音符和它時時值 LDiv0 = 12000/Speed。 // 算出1分音符的長度(幾個10ms) LDiv4 = LDiv0/4。 // 算出4分音符的長度 LDiv4 = LDiv4LDiv4*SOUND_SPACE。 // 普通音最長間隔標準 TR0 = 0。 TR1 = 1。 while(Point SoundLength) { SL=Tone%10。 //計算出音符 SM=Tone/10%10。 //計算出高低音 SH=Tone/100。 //計算出是否升半 CurrentFre = NewFreTab[SignTab[SL1]+SH]。 //查出對應音符的頻率 if(SL!=0) { if (SM==1) CurrentFre = 2。 //低音 if (SM==3) CurrentFre = 2。 //高音 Temp_T = 65536(50000/CurrentFre)*10/(12000000/SYSTEM_OSC)。//計算計數(shù)器初值 Sound_Temp_TH0 = Temp_T/256。 Sound_Temp_TL0 = Temp_T%256。 TH0 = Sound_Temp_TH0。 TL0 = Sound_Temp_TL0 + 12。 //加12是對中斷延時的補償 } SLen=LengthTab[Length%10]。 //算出是幾分音符 XG=Length/10%10。 //算出音符類型(0普通1連音2頓音) FD=Length/100。 LDiv=LDiv0/SLen。 //算出連音音符演奏的長度(多少個10ms) if (FD==1) LDiv=LDiv+LDiv/2。 if(XG!=1) if(XG==0) //算出普通音符的演奏長度 if (SLen=4) LDiv1=LDivLDiv4。 else LDiv1=LDiv*SOUND_SPACE。 else LDiv1=LDiv/2。 //算出頓音的演奏長度 else LDiv1=LDiv。 if(SL==0) LDiv1=0。 LDiv2=LDivLDiv1。 //算出不發(fā)音的長度 if (SL!=0) { TR0=1。 for(i=LDiv1。i0。i) //發(fā)規(guī)定長度的音 { while(TF1==0)。 TH1 = Sound_Temp_TH1。 TL1 = Sound_Temp_TL1。 TF1=0。 } } if(LDiv2!=0) { TR0=0。BeepIO=0。 for(i=LDiv2。i0。i) //音符間的間隔 { while(TF1==0)。 TH1 = Sound_Temp_TH1。 TL1 = Sound_Temp_TL1。 TF1=0。 } } //////////////// if(stop) Point=SoundLength。 /////////////// Point+=2。 Tone=Sound[Point]。 Length=Sound[Point+1]。 }/////////////// stop=0。 BeepIO=1。 ET0 = 0。 ET1 = 0。 TR0 = 0。 TR1 = 0。 EA = 0。//////////////}//歌曲《童話》uchar code fairy_tale[]={ 0x0F,0x67, 0x19,0x03, 0x18,0x03, 0x17,0x02, 0x17,0x03, 0x18,0x04, 0x17,0x0E, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x16,0x04, 0x15,0x18, 0x15,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x03, 0x1A,0x04, 0x19,0x0E, 0x19,0x03, 0x16,0x03, 0x16,0x03, 0x18,0x04, 0x17,0x0E, 0x17,0x15, 0x15,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x03, 0x1A,0x04, 0x19,
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1