|
仿真電路
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define AD1674_DATA1 P0 //定義P2和P0為A/D轉換數(shù)據(jù)
- #define AD1674_DATA2 P2
- sbit AD1674_STS=P3^0; //定義AD1674的各個控制信號對應的引腳號
- 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引腳位名稱為蜂鳴器的控制引腳
- uint AD1674_ADC( )//TLC549的A/D轉換程序
- {
- uint result;//定義result存放A/D轉換結果
- uchar temp1,temp2;
- AD1674_DATA1=0XFF;
- AD1674_DATA2=0XFF;
- AD1674_CE=0;//控制信號初始化
- AD1674_CS=1;
- AD1674_RC=1;
- AD1674_A0=0;//12位轉換
- AD1674_CS=0;//片選信號有效
- AD1674_RC=0;//轉換信號有效
- AD1674_CE=1;//片允許信號有效,啟動轉換
- while(AD1674_STS!=0);
- AD1674_12_8=1;//輸出格式為12位
- AD1674_RC=1;//讀信號有效
- temp1=AD1674_DATA1;
- temp2=(AD1674_DATA2)&0x0f;//12位數(shù)據(jù)的處理
- result=(temp2<<8)|temp1;
- AD1674_CS=1;//一個周期結束后,AD1674的CS端設置為高電平
- return result;//返回A/D轉換結果
- }
- /*延時子程序*/
- 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();//讀取溫度轉換的數(shù)字量
- tt=dd*100/2007;//計算溫度值,根據(jù)LM35的特性,溫度每變化1°C對應的輸出電壓為10mV
- //LM35輸出的信號經(jīng)過放大電路放大了4.9倍,經(jīng)過AD1674進行A/D轉換得到
- //數(shù)字量tt。所以由tt可得到溫度值=數(shù)字量tt/409.5/4.9*100
- if(tt>=50)//溫度高于50°C,蜂鳴器報警
- {
- Buz=~Buz;
- Sleep(5);
- }
- else//否則蜂鳴器不報警
- Buz=1;
- }
- }
復制代碼
|