欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5391|回復: 0
打印 上一主題 下一主題
收起左側

單片機T1定時器做音頻信號發生器 附程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:447265 發表于 2018-12-16 15:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
利用T1控制發出1kHz的音頻信號
一、設計要求
1、利用定時器T1的中斷來使P1.7控制蜂鳴器發出1kHz的音頻信號。
2、系統時鐘頻率為12MHz。
二、技術路線
利用定時器T1的中斷來使P1.7控制蜂鳴器發出1kHz的音頻信號,驅動蜂鳴器發聲。系統時鐘為12MHz。方波音頻信號的周期為1ms,因此T1的定時中斷時間為0.5ms,進入中斷服務程序后,對P1.7求反。
三、系統原理圖
   
圖1-1系統原理圖
如圖1-1所示把晶振,復位按鍵以及一些外圍電路如圖連接,組成AT89C51單片機的最小系統。定時器T1中斷控制P1.7引腳輸出頻率1kHz的音頻信號,驅動蜂鳴發聲。
四、仿真圖
圖1-2系統仿真圖
五、源程序
#include<reg51.h>        //包含頭文件
sbit sound=P1^7;        //將sound位定義為P1.7引腳
#define f1(a)(65536-a)/256 //定義裝入定時器高8位的時間常數
#define f2(a)(65536-a)%256//定義裝入定時器低8位的時間 常數
unsigned int i=500;
unsigned int j=0;
void main(void)
{
EA=1;                   //開關中斷
ET1=1;                 //允許定時器T1中斷
TMOD=0x10;          //TMOD=0001 0000,使用T1的方式1定時
TH1=f1(i);          //給定時器T1高8位賦初值
TL1=f2(i);          //給定時器T1低8位賦初值
TR1=1;              //啟動定時器T1
while(1)
{                   //循環等待
i=460;
while(j<2000);
j=0;
i=360;
while(j<2000);
j=0;
}
}
void t1(void) interrupt 3 using 0  //定時器T1中斷函數
{
TR1=0;                             //關閉定時器T1
sound=~sound;                     //P1.7輸出求反
TH1=f1(i);                //定時器T1的高8位重新賦初值
TL1=f2(i);               //定時器T1的低8位重新賦初值
j++;
TR1=1;                    //啟動定時器T1
}
六、總結
通過這次課程設計使我懂得了理論與實際相結合,只有理論知識是遠遠不夠的,只有把所學的理論與實踐相結合,才能提高自己的實際動手能力和創立思考的能力。同時在設計過程中發現了自己的不足之處,對以前所學過的知識理解不夠深刻,掌握得不夠牢固……通過這次課程設計之后,一定要把以前所學過的知識重新溫故。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表