找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3999|回复: 5
收起左侧

基于51单片机转速测量程序设计与仿真

[复制链接]
ID:34643 发表于 2019-5-19 15:17 | 显示全部楼层 |阅读模式
基于51单片机转速测量程序设计与仿真,单片机采用51单片机,由1602液晶屏显示测量得到的转速,电路简单,程序注解详细,方便学习。


转速测量仿真.jpg

#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)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:544761 发表于 2019-5-22 16:12 | 显示全部楼层
怎么打不开
回复

使用道具 举报

ID:544761 发表于 2019-5-22 16:15 | 显示全部楼层
怎么打不开
回复

使用道具 举报

ID:566647 发表于 2019-6-19 12:25 | 显示全部楼层

请问可以用吗
回复

使用道具 举报

ID:566647 发表于 2019-6-19 12:26 | 显示全部楼层
积分不够,想要程序,大哭
回复

使用道具 举报

ID:555420 发表于 2020-5-23 21:15 | 显示全部楼层
wei0308 发表于 2019-6-19 12:26
积分不够,想要程序,大哭

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表