单片机测车轮速度,我把程序的思路写下来了,好多都不知道怎么实现,而且也不知道有的错怎么解决

#include<reg52.h>//定义方法voidinit();voidgetSignal();voidsc();//定义变量sbitsignal=P1^1;//霍尔... #include<reg52.h>
//定义方法
void init();
void getSignal();
void sc();
//定义变量
sbit signal=P1^1;//霍尔传感器的信号
unsigned int time=0;//已经经过的时间标志
unsigned int speed_flag=0;//判断霍尔传感器是否感应到信号,如果感应到信号(flag=1),圈数加一(speed++)
unsigned int speedNum=0;//圈数
unsigned int speed=0;//中断后计算出的转速
void main(void){
init();//初始化计数器
getSignal();//一直获取霍尔传感器的信号,计算转过的圈数
}
//一直获取霍尔传感器的信号,计算转过的圈数
void getSignal(void){
while(1){
speed_flag=(speed_flag+signal)%2;//(这里报错了,bad operand type,signal难道不是int类型的么)
if(speed_flag==1){
speedNum++;
}
}
}
//初始化计数器
void init (void){//初始化计数器(这些是对的么,我是按照百度上面设置的,编译也没有报错)
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;//设置计数器初始值
TMOD=0x01;//设置计数器工作方式为16位
ET0=0x01;//允许C/T0中断
EA=1;//全部中断允许
TR0=1;//启动C/T0
}
//中断函数,直到60s后中断
void Timer0IRQ(void) interrupt 1
{
TH0=(65536-50000)/256;//计数器高八位重新载入
TL0=(65536-50000)%6; //计数器低八位重新载入
if(time<100){//说明小于一分钟
time++;//加一,直到等于一分钟
}else{
speed=speedNum/60;//每秒的转速(当算出转速后,怎么停止运行,并将转速显示在液晶管)
}
}
//显示到液晶屏
void sc(void){

}
我想通过霍尔元件感应信号,通过单片机来处理,思路是霍尔元件每次感应到后记录一下,把程序中的变量加1。再通过计时器计算时间,到了一分钟后计算出转速,将转速显示到液晶屏,函数结束,各位帮我看看好么?
展开
 我来答
chenzilianggz
2016-05-05 · TA获得超过140个赞
知道答主
回答量:77
采纳率:0%
帮助的人:41.2万
展开全部
  1. 停止运行。在else后面加break //一分钟之后赋值并跳出循环

  2. 液晶显示。看是什么液晶显示器,找一个液晶函数,输入是speed。

程序:

speed=speedNum/60;  液晶函数(speed);break;

 

具体结果要调试一下

德晟智能
2024-09-04 广告
舵机应该如何选型?今天由我们德晟智能科技有限公司说到舵机,相信不少工程师都非常熟悉了,但是如果说到舵机的产品选型,可能不少工程师都是一知半解的,甚至大部分的人都是纯靠扭矩来进行舵机选型的。“舵机”,顾名思义就是用来控制舵面控制的伺服器,而随... 点击进入详情页
本回答由德晟智能提供
刁刁哥
2016-05-04 · 超过39用户采纳过TA的回答
知道答主
回答量:196
采纳率:0%
帮助的人:83万
展开全部
没啥意思,结构糟糕,写法烂
追问
要怎么改呢,这个功能还没有实现,可以讲解下怎么改呢,万分感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式