找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4304|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机的直流电机测速代码

[复制链接]
跳转到指定楼层
楼主
ID:494791 发表于 2019-5-20 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需要用到测速模块(槽型光耦和霍尔传感器模块都可以)
用到了外部中断0和定时器1,用两个定时器,一个定时,一个计数,应该也可以,没试过

部分代码如下:

/*测速部分变量定义*/
uchar a,b,val,zhuan,cishu,num,r=5/*cm*/,c;//r为码盘半径(cm)
uint lucheng,endprice;//   元/米
uchar tablev[]="V:   m/s";
uchar tablejuli[]="juli:";
uchar circle,juli;


void Dist_INT (void)           //  外部中断0初始化
{  
    EX0 = 1;         //允许外部中断0中断
    IT0 = 1;         //1:下降沿触发  0低电平触发
    EA = 1;            //中断总开关
}
void Dist() interrupt 0//中断函数
{
    cishu++;       //被遮挡次数
    if(cishu>=4)  //码盘4格
    {
        cishu=0;   
        circle++;  //圈数+1
    }   
}
void T0_time() interrupt 1
{
  TH0=0x3c;      //50ms定时  
  TL0=0xb0;
  num++;
  if(num==20) //如果到了20次,说明1秒时间
  {  
   num=0;
   zhuan=circle;
   circle=0;
//   lcd_wcom(0x92+0x40);
//   lcd_wdat(zhuan/100+0x30);
//   lcd_wdat(zhuan%100/10+0x30);
//   lcd_wdat(zhuan%100%10+0x30);
   lucheng=(uint)(2*3.14*r*zhuan/100+lucheng);//lucheng 单位为米
   }
}  

最重要的部分已经给出,剩下的显示和定时器1的配置自己写吧,这部分程序是从我的一个大程序中摘出来的,所以代码没有写全

评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:118693 发表于 2019-5-22 20:30 | 只看该作者
感谢楼主的分享                           
回复

使用道具 举报

板凳
ID:1043656 发表于 2022-9-2 18:18 | 只看该作者
目前还是小白,先来点赞。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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