|
信號(hào)發(fā)生器是一種常用的信號(hào)源,廣泛地應(yīng)用于電子電路、自動(dòng)控制系統(tǒng)和教學(xué)實(shí)驗(yàn)等領(lǐng)域。 本設(shè)計(jì)采用STC89C52單片機(jī)作為控制核心,外圍采用數(shù)字/模擬轉(zhuǎn)換電路(DAC0832)、運(yùn)放電路(LM358)、按鍵和LCD12864液晶顯示電路。電路采用單片機(jī)和一片DAC0832數(shù)模轉(zhuǎn)換器組成數(shù)字式低頻信號(hào)發(fā)生器,可產(chǎn)生正弦波、矩形波和三角波三種波形。系統(tǒng)通過(guò)單片機(jī)產(chǎn)生數(shù)字信號(hào),通過(guò)DAC0832轉(zhuǎn)換為模擬信號(hào),再通過(guò)放大器LM358就可以得到雙極性的各種波形,最終由示波器顯示出來(lái)。通過(guò)鍵盤來(lái)控制四種波形的類型選擇、頻率變化,其中頻率調(diào)節(jié)范圍為5HZ-100HZ,并通過(guò)液晶12864顯示其各自的波形類型以及頻率數(shù)值。
外加紅外熱釋電傳感器(PIR)現(xiàn)在最常見(jiàn)的就是樓道內(nèi)的自動(dòng)風(fēng)扇基本用到的就是這種方案。
電路原理圖如下:
QQ截圖20181119092005.png (78.61 KB, 下載次數(shù): 62)
下載附件
總電路圖
2018-11-19 09:22 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- #include "hcsr501.h"
- #include "lcd12864.h"
- #include "Function Generator.h"
- #define uchar unsigned char
- #define uint unsigned int
- /**********主題顯示*****************/
- uchar code Theme_one[]="凄凄切切群群瞧瞧";
- uchar code Theme_two[]="親戚去去去去瞧瞧";
- uchar code Theme_thr[]="凄凄切切群群瞧瞧";
- uchar code Theme_fou[]="親親我群群去瞧瞧";
- /**********內(nèi)容顯示****************/
- uchar code SOURCE_WAVE[] ="波形: ";
- uchar code SOURCE_FREQUENCY[]="頻率: HZ";
- uchar code SOURCE_AMPLITUDE[]=" 水龍頭的狀態(tài) ";
- uchar code SOURCE_STATE[] =" ";
- /****************1ms延時(shí)函數(shù)********************/
- void DIS_theme()
- {
- set_LCD12864_pos(0,0);
- write_12864str(Theme_one);//"桂林電子科技大學(xué)""
- set_LCD12864_pos(1,0);
- write_12864str(Theme_two);//學(xué)號(hào)
- set_LCD12864_pos(2,0);
- write_12864str(Theme_thr);
- set_LCD12864_pos(3,0);
- write_12864str(Theme_fou);
- delay_ms(1000);
- set_LCD12864_pos(0,0);
- write_12864str(SOURCE_WAVE); //波形
- set_LCD12864_pos(1,0);
- write_12864str(SOURCE_FREQUENCY);//頻率
- set_LCD12864_pos(2,0);
- write_12864str(SOURCE_AMPLITUDE);////狀態(tài)
- set_LCD12864_pos(3,0);
- write_12864str(SOURCE_STATE);
- }
- /****************主函數(shù)************************/
- void main()
- {
- Timer0Init();//初始化定時(shí)器0
- Timer1Init();//初始化定時(shí)器1
- EA=1;
- LCD12864_init();//初始化液晶
- LCD12864_Busy();//液晶判忙
- DIS_theme();//主題顯示
- while(1)
- {
-
- PUTOUT_WAVE();//波形輸出
- check_option();//水龍頭感應(yīng)檢測(cè)
- }
- }
復(fù)制代碼- #include "reg52.h"
- #include "hcsr501.h"
- #include "lcd12864.h"
- #define PEOPLE_NEAR_THRESHOLD 10 //人體接近判斷閥值
- #define PEOPLE_LEAVE_THRESHOLD 5 //人體離開(kāi)判斷閥值
- uchar PeopleNear = 0; //人體接近判斷標(biāo)示,0:無(wú)人接近或人離開(kāi);1:人接近
- uchar OutUpCount = 0; //HC-SR501輸出高電平計(jì)數(shù)
- uchar OutDowmCount = 0; //HC-SR501輸出低電平計(jì)數(shù)
- //uchar IR_flag=0; //標(biāo)志位
- //uchar num=0;
- /****************1ms延時(shí)函數(shù)********************/
- void delay_ms(uint del)
- {
- uint i;
- for(;del>0;del--)
- for(i=124;i>0;i--);
- }
- /*****************************************************
- ** 函數(shù)名稱:Timer0Init
- ** 函數(shù)功能:?jiǎn)纹瑱C(jī)定時(shí)器0初始化,每50MS產(chǎn)生1次中斷
- ** 參 數(shù):無(wú)
- ** 函數(shù)返回:無(wú)
- ******************************************************/
- void Timer0Init(void) //50毫秒@12MHz
- {
- TMOD |= 0x01; //設(shè)置定時(shí)器模式
- TH0 = (65536 - 50000) / 256; // 設(shè)置定時(shí)器0為工作方式1(M1M0為01)
- TL0 = (65536 - 50000) % 256; // 裝初值12M晶振定時(shí)50ms數(shù)位50000
- //EA = 1; // 開(kāi)總中斷
- TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí)
- ET0 = 1;
- }
- /*****************************************************
- ** 函數(shù)名稱:check_option()
- ** 函數(shù)功能:判斷人是否走進(jìn)還是離去
- ** 參 數(shù):無(wú)
- ** 函數(shù)返回:無(wú)
- ******************************************************/
- void check_option()
- {
- if(PeopleNear) //熱釋電紅外端口有輸出為0,無(wú)輸出為1.
- {
-
- relay=1;//繼電器吸合
- set_LCD12864_pos(3,0);
- write_12864str(" OPEN ! Welcome!");//顯示字符串Welcome!
- delay_ms(2500);delay_ms(2500);
-
- }
- else
- //IR_flag=0;
- relay=0; //繼電器斷開(kāi)
- set_LCD12864_pos(3,0);
- write_12864str("CLOSE ! See you!");//顯示字符串See you!
- // delay_ms(2500);delay_ms(2500);
- // set_LCD12864_pos(3,4);
- // write_12864str("no one !");//顯示字符串Welcome!
- }
- /*****************************************************
- ** 函數(shù)名稱:Timer0IntPro
- ** 函數(shù)功能:?jiǎn)纹瑱C(jī)定時(shí)器0中斷處理函數(shù)
- ①連續(xù)10次采集到HC-SR501高電平輸出,判斷
- 為有人體接近。
- ②當(dāng)已判斷有人體接近年后,連續(xù)10次采集到
- HC-SR501低電平輸出,判斷為人體離開(kāi)
- ** 參 數(shù):無(wú)
- ** 函數(shù)返回:無(wú)
- ******************************************************/
- void Timer0IntPro(void) interrupt 1 using 0
-
- {
- TH0 = (65536-50000)/256;//裝初值,50ms申請(qǐng)一次中斷
- TL0 = (65536-50000)%256;
- // num++; //申請(qǐng)一次中斷num加1一次
- // if(num==100)
- // {num=0;IR_flag=1;}
- if(Out)
- {
- OutUpCount++;
- if(OutUpCount >= PEOPLE_NEAR_THRESHOLD)
- {
- PeopleNear = 1;
-
- }
- }
- else
- {
- if(PeopleNear)
- {
- OutDowmCount++;
- if(OutDowmCount >= PEOPLE_LEAVE_THRESHOLD)
- {
- PeopleNear = 0;
- OutUpCount = 0;
- OutDowmCount = 0;
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
|
-
-
dac0832中文資料.pdf
2018-11-19 09:22 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
324.08 KB, 下載次數(shù): 22, 下載積分: 黑幣 -5
dac0832中文數(shù)據(jù)手冊(cè)
-
-
源程序.rar
2018-11-19 09:22 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
61.88 KB, 下載次數(shù): 35, 下載積分: 黑幣 -5
源程序
-
-
Sheet1.rar
2018-11-19 09:23 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
18.17 KB, 下載次數(shù): 27, 下載積分: 黑幣 -5
原理圖
-
-
dac0832.pdf
2018-11-19 09:22 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
1.82 MB, 下載次數(shù): 13, 下載積分: 黑幣 -5
dac0832數(shù)據(jù)手冊(cè)
評(píng)分
-
查看全部評(píng)分
|