标题: 基于51单片机转速测量程序设计与仿真 [打印本页]

作者: 51mcu    时间: 2019-5-19 15:17
标题: 基于51单片机转速测量程序设计与仿真
基于51单片机转速测量程序设计与仿真,单片机采用51单片机,由1602液晶屏显示测量得到的转速,电路简单,程序注解详细,方便学习。




#include <REGX52.H>
#include <stdio.h>
#include "LCD.H"
#include "delay.h"

unsigned char aa[16]={'Q','Q',':','1','2','1','1','7','1','6',' ',' ',' ',' ',' ',' ',};  //QQ:1211716         ,你自己可以改成你需要的,如你的学号:No:xxxxxxxxxxx        ,你的名字的汉语拼音等。        
unsigned char cc[]={'S','p','e','e','d',':',' ',' ',' ',' ','r','/','m','i','n'};           //Speed:       r/min
unsigned char z,n,cnt;
unsigned int r,m;

main()
{
        IE=0X8A;
        TMOD=0X51;                                        //T0为定时器,T1为16位计数器
        TH0=(65536-50000)/256;                 //定时50毫秒
        TL0=(65536-50000)%256;                 //定时50毫秒
        TH1=0;                                                //脉冲计数器高位清零
        TL1=0;                                                //脉冲计数器低位清零
        TR0=1;                                                  //启动内部定时器
        TR1=1;                                                //启动外部脉冲计数器
         init();                                                  //初始化液晶显示器
         LCD_Write_String(0,0,aa);          //显示第一行内容
        z=1;                                                 //检测结束标志初始化
        while(1)
        {
                   n=P1;                                           //读取测速光栅个数。
            if(z==1)                                //完成一次检测时进行显示处理
                {
                        if(r>9999)                        //测量值大于上限时显示 C C C C
                        {
                                cc[6]='C';
                                cc[7]='C';
                                cc[8]='C';
                                cc[9]='C';
                        }
                        else
                        {
                                cc[6]=r/1000+'0';
                                cc[7]=r/100%10+'0';
                                cc[8]=r/10%10+'0';
                                cc[9]=r%10+'0';
                        }
                        LCD_Write_String(1,1,cc);          //显示测量得到的结果
                        z=0;                                                  //显示结束时测量标志清零,为下一次测量做准备
                         TR0=1;                                                    //启动内部定时器
                        TR1=1;                                                  //启动外部脉冲计数器
                }
        }
}

void int0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        if(++cnt==20)                          //1秒计时到                          
        {
                 TR1=0;                                   //停止定时器工作
                TR0=0;                                   //停止计数器工作
                cnt=0;                                //1秒定时标志位清零
                m=(TH1*256+TL1);          //1秒钟测量得到的脉冲数。
                r=m*60/n;                          //n为测速光栅个数。s为转速:转/min 60是换算成1分钟的转速。
                TH1=0;                                //脉冲计数器高位清零
                TL1=0;                                //脉冲计数器低位清零
                z=1;                                 //检测结束时标志置1
        }
}

完整程序就自己下载附件。
基于51单片机转速测量程序设计与仿真.rar (86.18 KB, 下载次数: 93)

作者: 1614    时间: 2019-5-22 16:12
怎么打不开
作者: 1614    时间: 2019-5-22 16:15
怎么打不开
作者: wei0308    时间: 2019-6-19 12:25
1614 发表于 2019-5-22 16:12
怎么打不开

请问可以用吗
作者: wei0308    时间: 2019-6-19 12:26
积分不够,想要程序,大哭
作者: darksouls    时间: 2020-5-23 21:15
wei0308 发表于 2019-6-19 12:26
积分不够,想要程序,大哭

我也是,刚好不够了,难受




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1