Ⅰ 單片機定時器門鈴
問題出在循環體內,兩次瞬間完成,要等到第一個「叮咚」響完才能啟動第二個。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint p=0;//必須是uint定義(p佔2個位元組)
sbit K=P1^7;//按鍵
sbit DoorBell=P3^0;//門鈴
unsigned int i;
void main()
{
DoorBell=0;
TMOD=0x00;
TH0=(8192-700)/32;//700us定時
TL0=(8192-700)%32;
IE=0x82;
while(1)
{
if(K==0)//按下按鍵啟動定時器
{
for(i=0;i<2;i++)//想實現兩次「叮咚」,但是只能有一次「叮咚」
{
TR0=1;
while(TR0);
}
}
}
}
void Timer0()interrupt 1
{
DoorBell=~DoorBell;
p++;
if(p<600) //若需要拖長聲音,可以調整400 和800
{
TH0=(8192-700)/32; //700us 定時
TL0=(8192-700)%32;
}
else if(p<1200)
{
TH0=(8192-1000)/32; //1ms 定時
TL0=(8192-1000)%32;
}
else
{
TR0=0;
p=0;
}
}
Ⅱ 用單片機實現一個門鈴控制,編寫一控製程序,門鈴功能(匯編控製程序或者C控製程序)。
單片機(Microcontrollers)誕生於1971年,經歷了SCM、MCU、SoC三大階段,早期的SCM單片機都是8位或4位的。其中最成功的是INTEL的8051,此後在8051上發展出了MCS51系列MCU系統。基於這一系統的單片機系統直到現在還在廣泛使用。隨著工業控制領域要求的提高,開始出現了16位單片機,但因為性價比不理想並未得到很廣泛的應用。90年代後隨著消費電子產品大發展,單片機技術得到了巨大提高。隨著INTEL i960系列特別是後來的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,並且進入主流市場。
而傳統的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數百倍。高端的32位Soc單片機主頻已經超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。
當代單片機系統已經不再只在裸機環境下開發和使用,大量專用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的Windows和Linux操作系統。
Ⅲ 求高手:基於單片機的音樂門鈴 設計要有完整的C語言程序。
#include<reg52.h> //包含52單片機寄存器定義的頭文件
sbit sound=P3^7; //將sound位定義為P3.7
unsigned int C; //儲存定時器的定時常數
//以下是C調中音的音頻宏定義
#define 523 //將""宏定義為中音"1"的頻率523Hz
#define re 587 //將"re"宏定義為中音"2"的頻率587Hz
#define mi 659 //將"mi"宏定義為中音"3"的頻率659Hz
#define fa 698 //將"fa"宏定義為中音"4"的頻率698Hz
#define sao 784 //將"sao"宏定義為中音"5"的頻率784Hz
#define la 880 //將"la"宏定義為中音"6"的頻率880Hz
#define xi 987 //將"xi"宏定義為中音"7"的頻率523Hz
/*******************************************
函數功能:1個延時單位,延時200ms
******************************************/
void delay()
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
}
/*******************************************
函數功能:主函數
******************************************/
void main(void)
{
unsigned char i,j;
//以下是《兩只老虎》歌曲
unsigned int code f[]={,re,mi,, //每行對應一小節音符
,re,mi,,
mi,fa,sao,
mi,fa,sao,
sao,la,sao,fa,mi,,
sao,la,sao,fa,mi,,
,sao,,
,sao,,
0xff}; //以0xff作為音符的結束標志
//以下是簡譜中每個音符的節拍
//"4"對應4個延時單位,"2"對應2個延時單位,"1"對應1個延時單位
unsigned char code JP[ ]={2,2,2,2,
2,2,2,2,
2,2,3,
2,2,3,
1,2,2,1,2,2,
1,2,2,1,2,2,
2,2,2,
2,2,2,
};
EA=1; //開總中斷
ET0=1; //定時器T0中斷允許
TMOD=0x00; // 使用定時器T0的模式1(13位計數器)
while(1) //無限循環
{
i=0; //從第1個音符f[0]開始播放
while(f[i]!=0xff) //只要沒有讀到結束標志就繼續播放
{
C=460830/f[i];
TH0=(8192-C)/32; //可證明這是13位計數器TH0高8位的賦初值方法
TL0=(8192-C)%32; //可證明這是13位計數器TL0低5位的賦初值方法
TR0=1; //啟動定時器T0
for(j=0;j<JP[i];j++) //控制節拍數
delay(); //延時1個節拍單位
TR0=0; //關閉定時器T0
i++; //播放下一個音符
}
}
}
/***********************************************************
函數功能:定時器T0的中斷服務子程序,使P3.7引腳輸出音頻的方波
************************************************************/
void Time0(void ) interrupt 1 using 1
{
sound=!sound; //將P3.7引腳輸出電平取反,形成方波
TH0=(8192-C)/32; //可證明這是13位計數器TH0高8位的賦初值方法
TL0=(8192-C)%32; //可證明這是13位計數器TL0低5位的賦初值方法
}
Ⅳ 用51單片機設計一個音樂門鈴
很簡單呀,一個按鍵一個蜂鳴器,隨便你接到哪個腳上,接同一個腳上都行,接下去播放音樂就好了呀
Ⅳ 單片機課程設計:交通燈控制!
我給你發一個看看,是protues的模擬電路圖,可以運行看效果,還有keil的匯編程序,有郵箱給你發去
我給你發了啊!!!下邊是程序:
org 0000h
sjmp main
org 0030h
main: mov p0,#11101110b
acall del1
acall del1
acall del1
acall mmm
mov p0,#11011011b
acall del1
acall del1
mov p0,#11110101b
lcall del1
acall del1
acall del1
acall mmm
sjmp main
del1:mov r0,#0ffh
loop1:mov r1,#0ffh
loop2:djnz r1,loop2
djnz r0,loop1
ret
mmm:mov p1,#0ffh
mov p2,#0ffh
mov r3,#02h
mmm2:mov p1,r3
mov r2,#09h
mmm1:mov p2,r2
acall del1
acall del1
djnz r2,mmm1
djnz r3,mmm2
mov p1,r3
mov r2,#09h
mmm3: mov p2,r2
acall del1
acall del1
djnz r2,mmm3
ret
end
Ⅵ 單片機實現門鈴 這個程序中ding dong怎樣實現的。具體ding dong頻率怎麼計算
用單片機實現叮咚門鈴聲,用定時器定時,用一個引腳輸出一定頻率的方波信號,然後將方波信號放大再驅動揚聲器發聲即可。因用單片機模擬的聲音,不會像專門的叮咚音樂門鈴那樣好聽,做到接近叮咚聲就行了。叮的聲音頻率大約為1230Hz,咚的頻率為680Hz。叮聲要短,咚聲稍長些,可邊聽邊調試。
Ⅶ 基於單片機的電子音樂門鈴的設計
你想要設置一個關於單片機的電子音樂門鈴的設計,你可以下一個Proteus,它是一個關於單片機設計的東西,你在上面可以進行一下簡單的電子音樂門鈴的設計,然後模擬一下,看一下是不是能成功。
Ⅷ 求高人指點基於單片機的多功能門鈴設計(密碼鎖、音樂、LED等控制)
若沒有指定MCU可以考慮SP,GP,NY,這些是16位機,好處就是對音樂處理效果好,可以錄音,埠為32,足夠用
Ⅸ 基於51單片機的音樂門鈴設計
51資源還不夠啊?汗!用51都能實現GSM遠程防盜報警器 這么個門鈴就不行了啊
再說了 這個電路提供了功放和錄放音電路 單片機需要做的很少 但是我不知道樓主用的是什麼樣的錄放電路 所以我沒辦法提供程序 不過我可以詳細化工作流程
按一次 門鈴之後 單片機會延時10秒 十秒之後無人應答 說明家裡無人 那麼這時候單片機會通過指示燈告知來人可以留言 然後根據錄放電路的存儲容量進行時間的管理。在錄音時間快完畢的時候點亮指示燈 提示錄音時間快完畢 避免漏掉信息 然後在錄音時間到後自動關閉錄音電路 並提示 來人可以離開了 主人來的是後可以按按鍵進行錄音的播放,並且會顯示錄音的時間 根據錄音電路的容量可以設置 3段錄音 5段錄音等 當然隨著段數的增加,單片機的編程會變得復雜,但是其工作原理同一段式錄音控製程序是一樣的
Ⅹ 單片機控制定時器門鈴
#include<reg51.h>
unsigned char count = 0;
sbit key = P2^0;
sbit seep = P2^3;
void delay(unsigned char a)
{
unsigned char i;
while(a--)
for(i=0;i<120;i++);
}
void main()
{
TMOD = 0x21;
TH0 = (65536-50000) / 256;
TL0 = (65536-50000) % 256;
ET0 = 1;
TR0 = 0;
ET1 = 1;
TR1 = 0;
EA = 1;
while(1)
{
if(key == 0)
{
delay(10);
if(key == 0)
{
TR0 = 1;
count=0;
flag = ~flag;
}
}
}
}
void time0() interrupt 1
{
TH0 = (65536-50000) / 256;
TL0 = (65536-50000) % 256;
i++;
if(count>=8)
{
count=0;
if(flag == 0)
{
TR1 = 1;
}
else
{
TR1 = 0;
}
}
}
void time0() interrupt 3
{
seep = ~seep;
}