|
L4@LZH4MNQDE3N$(X~TVV.jpg (125.4 KB, 下載次數(shù): 88)
下載附件
仿真電路
2017-7-12 19:32 上傳
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define AD1674_DATA1 P0 //定義P2和P0為A/D轉(zhuǎn)換數(shù)據(jù)
- #define AD1674_DATA2 P2
- sbit AD1674_STS=P3^0; //定義AD1674的各個(gè)控制信號(hào)對(duì)應(yīng)的引腳號(hào)
- sbit AD1674_12_8=P3^1;
- sbit AD1674_CS=P3^2;
- sbit AD1674_A0=P3^3;
- sbit AD1674_CE=P3^4;
- sbit AD1674_RC=P3^5;
- sbit Buz=P1^0; //定義P3.0引腳位名稱(chēng)為蜂鳴器的控制引腳
- uint AD1674_ADC( )//TLC549的A/D轉(zhuǎn)換程序
- {
- uint result;//定義result存放A/D轉(zhuǎn)換結(jié)果
- uchar temp1,temp2;
- AD1674_DATA1=0XFF;
- AD1674_DATA2=0XFF;
- AD1674_CE=0;//控制信號(hào)初始化
- AD1674_CS=1;
- AD1674_RC=1;
- AD1674_A0=0;//12位轉(zhuǎn)換
- AD1674_CS=0;//片選信號(hào)有效
- AD1674_RC=0;//轉(zhuǎn)換信號(hào)有效
- AD1674_CE=1;//片允許信號(hào)有效,啟動(dòng)轉(zhuǎn)換
- while(AD1674_STS!=0);
- AD1674_12_8=1;//輸出格式為12位
- AD1674_RC=1;//讀信號(hào)有效
- temp1=AD1674_DATA1;
- temp2=(AD1674_DATA2)&0x0f;//12位數(shù)據(jù)的處理
- result=(temp2<<8)|temp1;
- AD1674_CS=1;//一個(gè)周期結(jié)束后,AD1674的CS端設(shè)置為高電平
- return result;//返回A/D轉(zhuǎn)換結(jié)果
- }
- /*延時(shí)子程序*/
- void Sleep(uchar count)
- {
- uchar i;
- while(count-- != 0) for(i=0;i<255;i++);
- }
- void main()
- {
- unsigned long int tt,dd;
- while(1)
- {
- dd=AD1674_ADC();//讀取溫度轉(zhuǎn)換的數(shù)字量
- tt=dd*100/2007;//計(jì)算溫度值,根據(jù)LM35的特性,溫度每變化1°C對(duì)應(yīng)的輸出電壓為10mV
- //LM35輸出的信號(hào)經(jīng)過(guò)放大電路放大了4.9倍,經(jīng)過(guò)AD1674進(jìn)行A/D轉(zhuǎn)換得到
- //數(shù)字量tt。所以由tt可得到溫度值=數(shù)字量tt/409.5/4.9*100
- if(tt>=50)//溫度高于50°C,蜂鳴器報(bào)警
- {
- Buz=~Buz;
- Sleep(5);
- }
- else//否則蜂鳴器不報(bào)警
- Buz=1;
- }
- }
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|