電子琴電路原理圖:
電子琴設計元件清單:
1. 8歐0.25w小喇叭
2. 8050三極體*2
3. 10k電阻*2
4. 30歐姆電阻
5. 40腳座
6. stc89c51
7. 10uf電容
8. 30pf電容*2
9. 小按鍵*8
10. 自鎖開關
11. dc電源座
12. 12m晶振
13. 7*9萬用板
14. 導線若干
15. 焊錫若干
16. usb電源線或電池盒+dc電源插頭
電子琴源程式及**圖:
部分源程式**:
#include //呼叫微控制器標頭檔案
#define uchar unsigned char //無符號字元型 巨集定義 變數範圍0~255
#define uint unsigned int //無符號整型 巨集定義 變數範圍0~65535
//數碼管段選定義 0 1 2 3 4 5 6 7 8 9
uchar code smg_du=; //斷碼
//數碼管位選定義
sbit smg_we1 = p2^0; //數碼管位選定義
sbit smg_we2 = p2^2;
sbit smg_we3 = p2^4;
sbit smg_we4 = p2^6;
uchar dis_smg[8] = ;
uchar smg_i = 3; //顯示數碼管的個位數
sbit dq = p3^3; //18b20 io口的定義
bit flag_wd_z_f; //正負溫度
int temperature ; //
/***********************1ms延時函式*****************************/
void delay_1ms(uint q)
uint i,j;
for(i=0;i
for(j=0;j<120;j++);
/***********************小延時函式*****************************/
void delay_uint(uint q)
while(q--);
/***********************數碼位選函式*****************************/
void smg_we_switch(uchar i)
switch(i)
case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;
case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;
case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;
case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;
/***********************數碼顯示函式*****************************/
void display()
static uchar i;
i++;
if(i >= smg_i)
i = 0;
p0 = 0xff; //消隱
smg_we_switch(i); //位選
p0 = dis_smg; //段選
/***********************18b20初始化函式*****************************/
void init_18b20()
bit q;
dq = 1; //把匯流排拿高
delay_uint(1); //15us
dq = 0; //給復位脈衝
delay_uint(80); //750us
dq = 1; //把匯流排拿高 等待
delay_uint(10); //110us
q = dq; //讀取18b20初始化訊號
delay_uint(20); //200us
dq = 1; //把匯流排拿高 釋放匯流排
/*************寫18b20內的資料***************/
void write_18b20(uchar dat)
uchar i;
for(i=0;i<8;i++)
else
if(temperature >= 1000)
smg_i = 4;
dis_smg[0] = smg_du[temperature % 10]; //取溫度的小數顯示
dis_smg[1] = smg_du[temperature / 10 % 10] & 0xfb; //取溫度的個位顯示
dis_smg[2] = smg_du[temperature / 100 % 10] ; //取溫度的十位顯示
dis_smg[3] = smg_du[temperature / 1000 % 10] ; //取溫度的十位顯示
}else
smg_i = 3;
dis_smg[0] = smg_du[temperature % 10]; //取溫度的小數顯示
dis_smg[1] = smg_du[temperature / 10 % 10] & 0xfb; //取溫度的個位顯示
dis_smg[2] = smg_du[temperature / 100 % 10] ; //取溫度的十位顯示
delay_1ms(300);
/*************定時器0中斷服務程式***************/
void time0_int() interrupt 1
th0 = 0xf8;
tl0 = 0x30; //2ms
display(); //數碼管顯示函式
51微控制器電子琴
這是我在論壇第一篇文章,大一時用arduino寫過電子琴,大二了用51再寫一次。電路圖 注意事項 需要修改一下蜂鳴器的電壓值其他的引數應該不需要改,實測可用。上面的電路多了乙個元件是揚聲器,本來想用揚聲器的沒有想到合適的方法。程式 include define uchar unsigned char...
51微控制器電子琴 雷射電子琴
hi,有想到今天的專案嗎?理工男也有文藝細菌 今天給大家帶來的是雷射電子琴。第一步,首先先來介紹一下專案實現的功能 本次設計的核心是以stc89c52為主控微控制器,檢測紅外對管的狀態來識別當前已經被按下的琴鍵,然後通過定時器來控制引腳高低電頻的輸出頻率,達到控制無源蜂鳴器輸出不同音調的目的。核心內...
51微控制器專案 多功能記錄儀
main.h 51微控制器專案 多功能記錄儀 檔名 main.h ifndef main h define main h typedef struct msg msg t typedef void pfn 定義函式指標型別 void keyaction uint8 t keycode void se...