求51单片机风扇转速监控程序 C语言

风扇每转发送2个周期的脉,要求速度低于1000转/分的时候会报警。你们爱怎么写就怎么写,我只是拿来参考。(要求C语言,我不懂汇编)以下是我的失败作品别模仿:#include#include#define uint unsigned int #define uchar unsigned char sbit D1=P3^1; //喇叭的端口sbit LED=P3^5; // 提示灯sbit FAN=P3^2; // 电压信号端uint num;uint bei;uint zhu;void delay2S(); //声明延时函数void delay(uint); //声明延时函数void main(){ EA=1; // 总开关 ET0=1; // TO开关 TMOD=0x05; // 模式 TR0=1; // 启动T0 TH0=0; //高8位 附0 TL0=0; //低8位 附0 FAN=1; //风扇的电压信号,条件不达成为1,不实行监控 LED=1; //监控提示灯 while(1) { if(FAN==0) //判断风扇电压是否达到(此信号由比较器提供) { LED=0; TH0=0; //附初值 TL0=0; //附初值 delay2S(); //延时2秒(为了取样) zhu=TL0; //把T0低8位的值附给 zhu bei=TH0; //把高8位附给 bei bei=(66*bei); // num=(zhu+bei); //把计数器的值附给num if(num>65) // 2000转/分钟的风扇,每转2个周期的脉冲输出,要求在某电压条件下达到1000转/分钟,2秒取样哟低于65报警 { D1=1; //喇叭不响 } else //实行报警 { uchar gld; for(gld=0;gld<6;gld++) d1="~D1;" th0="0;" tl0="0;" else="" led="1;" void="" unsigned="" char="" i="85;" j="13;" k="227;" do="" while="" uint="" uchar="" x="z;x">0;x--) for(y=20;y>0;y--); } void exter0() interrupt 1{ }

给你个我写的基于89c52的单片机测频率的程序,你参考下

#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P0
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_EN=P2^2;
sbit LCD_PSB=P2^3;
bit flag=0;
uint num1=0,num2=0,count=0;
void display();
void delayms(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++)
;
}
void write_cmd(uchar cmd)    //12864写命令函数
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P0=cmd;
delayms(5);
LCD_EN=1;
delayms(5);
LCD_EN=0;
}
void write_dat(uchar dat)  //12864写数据函数
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delayms(5);
LCD_EN=1;
delayms(5);
LCD_EN=0;
}
void lcd_pos(uchar X,uchar Y)    //12864写位置函数
{
uchar pos;
if(X==0)
X=0x80;
else if(X==1)
X=0x90;
else if(X==2)
X=0x88;
else if(X==3)
X=0x98;
pos=X+Y;
write_cmd(pos);
}
void lcd_init()  //12864初始化函数
{
LCD_PSB=1;
write_cmd(0x30);
delayms(5);
write_cmd(0x0c);
delayms(5);
write_cmd(0x01);
delayms(5);
}
void Time2_Init(void)    //T2定时器自动重装初值定时1s
{
EA=1;
ET2=1;
TR2=1;
RCAP2L=(65535-46083)%256;
RCAP2H=(65535-46083)/256;
}
void display()    //12864显示函数
{  
lcd_pos(0,0);
write_dat(num1/1000+'0'); 
write_dat(num1/100%10+'0');
write_dat(num1/10%10+'0');
write_dat(num1%10+'0');
lcd_pos(1,0);
write_dat(num2/1000+'0'); 
write_dat(num2/100%10+'0');
write_dat(num2/10%10+'0');
write_dat(num2%10+'0');
}
main()
{
lcd_init();
Time2_Init();
TMOD=0x55;
TR0=1;
TR1=1;
while(1)
{
TH0=0;
TL0=0;
TH1=0;
TL1=0;
flag=0;
while(!flag);
num1=TH0<<8|TL0; //num1为T0在1s内统计的下降沿次数,输入引脚为P3.4
num2=TH1<<8|TL1; //num2为T1在1s内统计的下降沿次数,输入引脚为P3.5
display(); 
}    
}
void Time2(void) interrupt 5    //T2定时器中断1s
{
TF2=0;
count++;
if(count==20)
{
flag=1;
count=0; 
}
}


温馨提示:内容为网友见解,仅供参考
无其他回答

求51单片机风扇转速监控程序 C语言
include <reg52.h>#include <intrins.h>#include <stdlib.h>#define uchar unsigned char#define uint unsigned int#define LCD_data P0sbit LCD_RS=P2^0;sbit LCD_RW=P2^1;sbit LCD_EN=P2^2;sbit LCD_PSB=P2^3;bit flag=0;uint num1=0,num2=0,count=0;void display();void delayms...

求51单片机控制步进电机,实现其间歇运动的程序,最好要有C语言的
include<reg52.h> \/\/#include"delay.h" \/\/在本文件中加入一个延时函数,或添加带有延时函数的.c文件 unsigned char code table1[]={0x00,0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};\/\/0x00表示停止转动 \/\/ \/\/bit flag;\/\/正反转标志 void delayus(unsigned int t) \/\/延时函数...

关于51单片机控制步进电机编程(c语言),求助
include <reg52.h> define uchar unsigned char define uint unsigned int uchar key_l,key,i;uchar code temp1[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};uchar code temp2[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};uchar code aa[16]=" :";uchar code smg[...

求一个51单片机C语言程序编程
要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb\/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,发送字符“C”给乙机,

51单片机控制直流电机。(c语言控制)
第一种,通过PWM脉宽调制输出方法控制转速,控制占空比的大小可以实现调速!第二种,通过AD转换的方法控制直流电机的电压 第三种,用xtr115程控电流源来控制直流电机(类似第二种方法)如果以上的驱动能力不够的话再加上一个电压跟随器!程序方面就是一个寄存器的配置问题了,你查一下单片机的技术手册上面...

这是个调速系统的C语言程序,谁能帮我注解一下各语句的主要功能_百度知 ...
呵呵,这个是一个单片机的问题,我可以给你解释,但是必须把分给我 include <reg51.h> 头文件包含 include <math.h> define uchar unsigned char 用Uchar 定义unsigned char define uint unsigned int define ON 0 \/\/电动机开关的宏 define OFF 1 sbit PWM=P3^5; \/\/与电动机通信的端口...

求大神在keil上帮写51单片机C语言程序
\/\/第一个实验:\/\/假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7\/\/假设K1按键在P2.3引脚#include<reg51.h>#include<intrins.h>sbit k1=P2^3;\/\/假设K1按键在P2.3引脚void main(){P0=0xfe;while(1){if(k1==0){while(k1==0);P0=_crol_(P0,1);}}}...

电风扇用到的程序编程有哪些
基于51单片机的温控遥控电风扇用c语言写程序,基于FLASH只读程序存储器,支持在线编程。兼容标准MCS一51指令系统及80C51引脚结构。

单片机c语言 毕业设计选择了这个方向,不知道做什么项目了,之前只学了...
可以增加模块:题目是:《智能健康电风扇》,基本思想是,电风扇的转速通过外界的温度自动调节,也就达到智能和健康要求了。当时只用了一个传感器检测温度,然后电机是采用51的两个定时器模拟的PWM输出控制的。你可以按照你的想法再增加些其他模块电路,比如遥控啊,定时啊,红外啊。等等等。

51单片机C语言程序
include <reg51.h> define uint unsigned int define uchar unsigned char uint a;void b1();void b2();sbit t = P1^0;sbit k = P3^5;sbit reg = P3^3;sbit bice = P3^2;void delay(uchar z){ uint x,y;for(x = z; x > 0; x--) for(y = 110; y > 0; ...

相似回答