|
并伴有蜂鳴器報警功能,測試范圍為0~200mv,希望和大家交流學(xué)習(xí)!
仿真原理圖如下:
單片機(jī)源程序如下:
- #include <reg51.h>
- #include "LCD1602.h"
- #include "TLC2543.h"
- #include "delay.h"
- #include <intrins.h>
- #include <stdio.h>
- unsigned int zyx;
- unsigned int ADresult[1];
- unsigned int Freq=0;
- void Timer_Init();// 定時器聲明
- unsigned char cnt_t1=0;
- sbit fengming=P2^0;
- main(void)
- {
- unsigned char Vrms[4],Vmax[4],Freq_temp[5];
-
- LCD1602_Init();
- Timer_Init();
- LCD1602_SendString(1,0,"V=");
- LCD1602_SendString(1,8,"Vm=");
- LCD1602_SendString(2,0,"Freq=");
- LCD1602_SendString(1,5,"mV");
- LCD1602_SendString(1,14,"mV");
- LCD1602_SendString(2,9,"Hz");
-
- TR1=1;//開啟定時器T1
- TR0=1;//開啟計數(shù)器
- fengming=0;
- while(1)
- {
-
- zyx=ADresult[0]*1.221*1.414;
- ADresult[0]=getdata(0);
- if( zyx<=100 || zyx>=200)
- {
- fengming=1; }
-
- else
- {
- fengming=0;
- }
- sprintf(Vrms,"%f",ADresult[0]*1.221);
- Vrms[3]='\0';
- LCD1602_SendString(1,2,Vrms);
-
- sprintf(Vmax,"%f",ADresult[0]*1.221*1.414);
- Vmax[3]='\0';
- LCD1602_SendString(1,11,Vmax);
- sprintf(Freq_temp,"%d",Freq);
- Freq_temp[4]='\0';
- LCD1602_SendString(2,5,Freq_temp);
- TR1=1;//開啟定時器T1
- TR0=1;//開啟計數(shù)器T0
- }
- }
- /*------定時器的初始化--------*/
- void Timer_Init()
- {
- TMOD|=0x15;//T0為計數(shù)器方式1,T1為定時器方式1
- TH1=(65536-50000)/256; //重裝
- TL1=(65536-50000)%256;
- TH0=0;
- TL0=0;
- ET0=1;//開T0,T1中斷
- ET1=1;
- EA=1; //全局中斷
- }
- /*------定時器1中斷服務(wù)程序-------*/
- void Time1_ser() interrupt 3
- {
- unsigned int dat1,dat2;
- TH1=(65536-50000)/256; //重裝 50ms
- TL1=(65536-50000)%256;
- cnt_t1++;
- if(cnt_t1>=20)
- {
- TR1=0; //關(guān)定時
- TR0=0; //關(guān)計數(shù)
- cnt_t1=0;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
采用TLC2543設(shè)計的弱交流信號測試儀.zip
(97.83 KB, 下載次數(shù): 34)
2017-7-7 21:12 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|