/**************************************************************
程序名稱:模擬電子琴
**************************************************************/
#include #define uchar unsigned char //宏定義 #define led P0 //定義LED等位P0口 #define sw_port P1 //中間變量。。。使按鍵和led對應 sbit buzzer=P2^7; //揚聲器管腳 sbit key1=P3^2; //播放音樂與彈奏歌曲轉換 sbit key3=P3^4; //掉電存儲按鍵 sbit key4=P3^5; //播放掉電存儲的歌曲 sbit keybofang=P3^3; //播放剛才彈奏的歌曲 sbit key7=P3^0; //音調鍵。。。 和 歌曲鍵 sbit key8=P3^1; //音調鍵。。。 和 歌曲鍵 sbit key6=P1^7; sbit key5=P1^6; sbit sda=P1^1; //24c02數據線 sbit scl=P1^0; //24c02時鐘線 uchar keyd,i,keys,b; //定義變量 uchar tone_H; //定義變量 uchar tone_L; //定義變量 void beat_125(unsigned char); //聲明函數 uchar code beat1[]={16,8,8,8,8,4,4,16,8,4,4,8,4,4,4, //歌曲1節拍 4,4,4,16,16,8,8,4,4,12,8,16,16,8,4,4,4,4,16}; uchar code song1[]={6,5,3,5,7,6,5,6,3,5,6,5,3, //歌曲1簡譜 2,1,6,5,3,2,2,3,5,5,6,3,2,1,5,3,2,1,6,1,1,15}; uchar code beat2[]={7,7,7, 7,8,9, 1,2,3, 6,2,4, 4,4,4, 12, //歌曲二節拍 8,2,2, 4,4,4, 8,2,2, 4,4,4, 2,2,4,4, 12,}; uchar code song2[]={1,2,8, 8,5,1, 3,3,3, 5,4,3, //歌曲二簡譜 5,4,3, 2, 2,1,0, 1,2,3, 4,3,2, 3,4,5, 5,4,3, 2,1,15}; uchar code beat4[]={4,4,4, 6,2,4, 4,4,4, 6,2,4, 4,4,4, 12, 8,2,2, 4,4,4, 8,2,2, 4,4,4, 2,2,4,4, 12,}; uchar code song4[]={1,1,1, 3,2,1, 3,3,3, 5,4,3, 5,4,3, 2, 2,1,0, 1,2,3, 4,3,2, 3,4,5, 5,4,3, 2,1, 15}; uchar code tone[]={115,102,91,86,77,68,61,57}; //歌曲音調 unsigned int code tone1[]={1012,956,852,759,716,638,568,506,478,426,379,531,10}; //歌曲音調 uchar song3[43]; //定義空數組 void play(uchar*,uchar*); //演奏歌曲函數 void delay8um(uchar); //第一8um延時函數 void sound(uchar); //彈奏發聲函數 /******************************************* 函數功能:節拍的延時的基本單位,用于24c08簡單延時 ******************************************/ void delay() //簡單延時函數 {;;} /******************************************* 函數功能:節拍的延時的基本單位,延時1ms ******************************************/ void delay1ms(uchar x) //1um延時函數 { uchar j; while(x--) for(j=120;j>0;j--); } /************************************************************** 函數功能:24c02驅動程序 用IIC總線進行傳輸 **************************************************************/ void init_c02() //24c02初始化 { sda=1; delay(); scl=1; delay(); } void start_c02() //24c02的啟動信號 { scl=1; delay(); sda=1; delay(); sda=0; delay(); } void stop_c02() //24c02停止信號 { sda=0; delay(); scl=1; delay(); sda=1; delay(); } void response_c02() //24c02的應答信號 { uchar i; scl=1; delay(); while((sda==1)&&(i<250))i++; scl=0; delay(); } void write_c02byte(uchar date) //對24c02寫一個字節 { uchar i,temp; temp=date; for(i=0;i<8;i++) { temp=temp<<1; scl=0; delay(); sda=CY; delay(); scl=1; delay(); } scl=0; delay(); sda=1; delay(); } uchar read_c02byte() //對24c02讀一個字節 { uchar i,k; scl=0; delay(); sda=1; delay(); for(i=0;i<8;i++) { scl=1; delay(); k=(k<<1)|sda; scl=0; delay(); } return k; } void write_addc02(uchar address,uchar date) //對24c02寫一個數據 { start_c02(); write_c02byte(0xa0); response_c02(); write_c02byte(address); response_c02(); write_c02byte(date); response_c02(); stop_c02(); } uchar read_addc02(uchar address) //從24c02讀一個數據 { uchar date; start_c02(); write_c02byte(0xa0);
上一篇:單片機RFID高頻RC632讀卡程序,14443A,B.15693,都有
下一篇:ESP8266模塊與單片機的通信程序(硬件與軟件詳解)
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發板 精華推薦
- AD8337-EVALZ-SS,單電源同相評估套件,為 AD8337 VGA 的測試和評估提供平臺
- 使用 ROHM Semiconductor 的 BD9141MUV 的參考設計
- NCP716MTTBGEVB:LDO 穩壓器、WDFN-6 封裝、超低靜態電流評估板
- 用于服務器的 3.3V DC 到 DC 單路輸出電源
- LTC2992IMS-1 雙路 12V 大功率監視器和一個負電壓監視器的典型應用
- 具有過流保護功能的 LTC3897IUHF 高效兩相 48V 升壓轉換器的典型應用電路
- LF85CPT-TR 8.5V 帶開關的低壓降穩壓器的典型應用
- 使用 LTC2367HMS-16、16 位、500ksps、偽差分單極 SAR ADC 的典型應用
- LTC3838IUHF-1 6.5V 至 34V 輸入、5V/12A 和 3.3V/12A 雙路輸出、300kHz、RSENSE、5V 輸出連接至 EXTVCC、降壓轉換器的典型應用電路
- 用于醫療的 4 節鋰離子/鋰聚合物電池充電器