基于普中51單片機(jī)開發(fā)板的電子門鈴設(shè)計(jì)( proteus仿真+程序+設(shè)計(jì)報告+講解視頻)
仿真圖proteus8.15(有低版本)
程序編譯器:keil 4/keil 5
編程語言:C語言
設(shè)計(jì)編號:P17
1. 主要功能:
基于51單片機(jī)的電子門鈴設(shè)計(jì)
1、系統(tǒng)采用一個按鍵簡潔設(shè)計(jì),可以選擇門鈴聲;
2、門鈴聲音通過蜂鳴器播放,5種類型音樂,數(shù)碼管顯示當(dāng)前選擇的門鈴聲類型編號;
3、在正常模式下長按按鍵2秒以上,進(jìn)入門鈴聲類型選擇模式短按進(jìn)行類型選擇,再次長按按鍵退出選擇模式;
4、在正常模式下,短按一下,門鈴聲響一次,3秒內(nèi),短按5次,門鈴聲響1分鐘。
5、需要在Proteus軟件和普中51開發(fā)板實(shí)現(xiàn)功能驗(yàn)證。
(目前僅完全適配普中51-實(shí)驗(yàn)板234,其他普中開發(fā)板型號可能需要做代碼修改或額外接線)
需注意仿真中51單片機(jī)芯片是兼容的,AT89C51,AT89C52是51單片機(jī)的具體型號,內(nèi)核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。
資料下載鏈接:
P系列單片機(jī)設(shè)計(jì)下載鏈接(復(fù)制到瀏覽器打開)
https://docs.qq.com/doc/DS2pPenNRaHB6SlR1
2. 講解視頻:
講解視頻包含仿真運(yùn)行講解和代碼講解
3. 仿真
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后數(shù)碼管顯示1,默認(rèn)按下門鈴鈴聲1響起。
可以通過長按按鍵再松手進(jìn)入鈴聲設(shè)置模式,指示燈點(diǎn)亮。進(jìn)入設(shè)置模式短按按鍵切換鈴聲1-鈴聲5,設(shè)置好之后再次長按退出設(shè)置模式,設(shè)置指示燈熄滅。
設(shè)置完短按按鍵播放對應(yīng)的鈴聲,短按一下,門鈴聲響一次,3秒內(nèi),短按5次,門鈴聲響1分鐘。
完整代碼見文章開頭下載鏈接
#define uchar unsigned char
#define uint unsigned int
//數(shù)碼管編碼
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0,mode=0;//系統(tǒng)變量
uchar num=1;//編號
uchar start=0,sec=0,shu=0;
uint miao=0;
//延時
void delay(uint i)
{
while(i--);
}
//蜂鳴器門鈴鈴聲
void sound(uchar m)
{
uint i=0,j=0;
if(m==1)
{
for(i=0;i<2000;i++)//長響
{
beep=!beep;
delay(110);
}
beep=1;
}
if(m==2)
{
for(i=0;i<500;i++)//0.5s響一次
{
beep=!beep;
delay(110);
}
beep=1;
for(i=0;i<500;i++)
{
delay(110);
}
for(i=0;i<500;i++)//0.5s響一次
{
beep=!beep;
delay(110);
}
beep=1;
for(i=0;i<500;i++)
{
delay(110);
}
beep=1;
}
if(m==3)
{
for(i=150;i>50;i--)//升頻率
{
for(j=0;j<5;j++)
{
beep=!beep;
delay(i);
}
}
beep=1;
for(i=150;i>50;i--)//升頻率
{
for(j=0;j<5;j++)
{
beep=!beep;
delay(i);
}
}
beep=1;
}
if(m==4)//叮咚
{
for(i=0;i<200;i++)
{
beep=!beep;
delay(70);
}
beep=1;
for(i=0;i<500;i++)
{
delay(110);
}
beep=1;
for(i=0;i<800;i++)
{
beep=!beep;
delay(130);
}
beep=1;
}
if(m==5)//升降頻率
{
for(i=150;i>50;i--)//升頻率
{
for(j=0;j<5;j++)
{
beep=!beep;
delay(i);
}
}
for(i=50;i<150;i++)//降頻率
{
for(j=0;j<5;j++)
{
beep=!beep;
delay(i);
}
}
}
if(m==6)//嘟嘟嘟
{
for(i=0;i<200;i++)
{
beep=!beep;
delay(110);
}
beep=1;
for(i=0;i<200;i++)
{
delay(110);
}
beep=1;
for(i=0;i<200;i++)
{
beep=!beep;
delay(110);
}
beep=1;
for(i=0;i<200;i++)
{
delay(110);
}
beep=1;
for(i=0;i<200;i++)
{
beep=!beep;
delay(110);
}
beep=1;
for(i=0;i<200;i++)
{
delay(110);
}
beep=1;
}
}
//主函數(shù)
void main()
{
P0=smgduan[1];
//設(shè)置INT0
IT0=1;//跳變沿出發(fā)方式(下降沿)
EX0=1;//打開INT0的中斷允許。
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
while(1)
{
if(mode==0){
led=1;
}else{
led=0;
}
if(miao==0){
if(!k1){
if(mode==0){
start=1;//啟動計(jì)時
shu++;
}
while(!k1);//等待按鍵松開
if(time==30){
mode=!mode;//長按
}else if(time>2){//短按
if(mode==0)
sound(num);//播放
else{
if(num<6)
num++;
else
num=1;
P0=smgduan[num]; //顯示數(shù)字
}
}
time=0;
}
}else {
sound(num);//響1分鐘
}
}
}
//定時器中斷
void Timer0() interrupt 1
{
if(!k1 )//長按檢測
{
if(time<30)
time++;
}
if(start==1)
{
if(sec<60)//3s
sec++;
else
{
sec=0;
if(shu>4)//按5次
{
miao=1200;//60s
start=0;
}
shu=0;
}
}
if(miao>0)//1分鐘計(jì)時
miao--;
TH0=0X3C;
TL0=0XB0;
}
4. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合視頻理解代碼含義。
5. 設(shè)計(jì)報告
6939字設(shè)計(jì)報告,內(nèi)容包括硬件設(shè)計(jì)、軟件設(shè)計(jì)、軟硬件框圖、調(diào)試、結(jié)論等
隨著現(xiàn)代智能化技術(shù)的迅速進(jìn)步和廣泛應(yīng)用,人們對于家居設(shè)備的功能拓展以及用戶體驗(yàn)的關(guān)注度日益提升。在當(dāng)今智能家居生態(tài)系統(tǒng)中,各種智能硬件產(chǎn)品不僅需要具備基礎(chǔ)功能,更需要滿足用戶個性化、便捷化的需求,從而創(chuàng)造更加舒適、愉快的生活空間。本課程設(shè)計(jì)項(xiàng)目正是順應(yīng)這一發(fā)展趨勢,將經(jīng)典的51系列單片機(jī)作為核心控制單元,巧妙地結(jié)合了數(shù)碼管顯示技術(shù)和蜂鳴器發(fā)聲元件,旨在研發(fā)一款擁有音樂選擇功能的智能門鈴系統(tǒng)。
這款電子門鈴的設(shè)計(jì)理念注重簡潔與易用性,力求讓每一位用戶都能夠輕松上手并享受到個性化定制的樂趣。系統(tǒng)內(nèi)預(yù)置了多種風(fēng)格各異的門鈴音效,用戶可以根據(jù)個人喜好通過按鍵操作在五種不同的音樂類型之間切換,而當(dāng)前所選的音樂類型編號會實(shí)時清晰地顯示在數(shù)碼管上,增強(qiáng)了交互界面的直觀性和友好性。