标题:
基于三相电源的频率检测程序
[打印本页]
作者:
luzhiwei666
时间:
2019-5-14 13:18
标题:
基于三相电源的频率检测程序
该程序能检测处理后的三相电源信号,希望有所帮助。
单片机源程序如下:
#include<reg52.h>
unsigned long fre;
unsigned char time;
unsigned int count;
unsigned char led[6];
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f}; //数码管0123456789显示
sbit swan=P2^0;
sbit wan =P2^1;
sbit qian=P2^2;
sbit bai =P2^3;
sbit shi =P2^4;
sbit ge=P2^5;
sbit ppp= P0^0 ;
void timer_init(); //函数声明
void display(unsigned long num);
void delay(unsigned int a);
void main()
{
// timer_init(); //定时/计数器初始化
while(1)
{ //display(fre); //数码管显示
P2 = 0x75;
P0 = 0x35;
}
}
void delay(unsigned int a) //延时约1ms(12Mhz晶振)
{
unsigned char i;
while(a--!=0)
for(i=125;i>0;i--);
}
void display(unsigned long num) //显示函数
{unsigned char sw,w,q,b,s,g;
P0 = 0x75;
//sw=num/100000;P0=table[sw];swan=0;delay(2);swan=1;
//w=num/10000%10;P0=table[w];wan=0;delay(2);wan=1;
//q=num/1000%10;P0=table[q];qian=0;delay(2);qian=1;
//b=num%1000/100;P0=table[b];bai=0;delay(2);bai=1;
//s=num%100/10;P0=table[s];shi=0;delay(2);shi=1;
//g=num%10;P0=table[g];ge=0;delay(2);ge=1;
}
void timer_init(void) //定时/计数器初始化
{ TMOD=0x06; //计数器0工作工作方式2,自动重装初值
TH0=0; //计数器初值为0
TL0=0;
TR0=1; //计数器开始计数
ET0=1; //打开计数器0中断
RCAP2H=(65536-62500)/256; //在程序初始化时给RCAP2L和RCAP2H赋值
RCAP2L=(65536-62500)%256; //TH2 和 TL2 将会在中断产生时自动使 TH2=RCAP2H,TL2=RCAP2L。
TH2=RCAP2H; //12M晶振下每次中断62.5ms
TL2=RCAP2L;
ET2=1; //打开定时器2中断
TR2=1; //定时器2开始计时
EA=1; //开总中断
}
void timer2(void) interrupt 5 //定时器2中断(62.5ms)
{
time++;
TF2=0;//定时器2的中断标志位TF2不能够由硬件清零,所以要在中断服务序中将其清零
if (time==16) //定时1s时间到
{
time=0; //计时清0
EA=0; //关中断
fre=7;
//fre=(long)count*256+TL0; //count*256强制转换成long型,否则将不产生进位
TL0=0; //清零计数器0计数
TH0=0;
count=0; //清零计数器0计数
EA=1; //开始中断
}
}
void timer0(void)interrupt 1//计数器0中断
{
count++;
}
复制代码
作者:
admin
时间:
2019-5-14 18:31
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
陈工_人士
时间:
2021-12-12 23:06
没有什么用
作者:
陈工_人士
时间:
2021-12-12 23:06
没有什么用
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1