找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

这里面哪个单片机代码是获取霍尔元件的数据啊?

查看数: 3478 | 评论数: 8 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-5-16 19:30

正文摘要:

单片机源程序如下: #include <reg52.h> #define uchar unsigned char #define uint unsigned int void displaym(); sbit en=P2^5;                // ...

回复

ID:824490 发表于 2021-5-17 10:35
本帖最后由 名字不是重点 于 2021-5-17 10:39 编辑

1:
zheng=1;                                  //初始化电机正转动
fan=0;
这2 个互斥,可以只设一个就行了。
2:
write_data(zhuansu%10000%1000%100%10+0x30);
这个可以优化为:
write_data(zhuansu%10+0x30);
相同的还有 write_data(zhuansu%10000%1000%100/10+0x30)==>write_data(zhuansu%100/10+0x30)

等等
连续取模的,可只取最后一个。
3:
void int2()interrupt 1 中不要做display(); 建议做法是if(flag==200)插入一个标志update,在main()的while(1)中判断update,再决定是否刷显转速。
4:
按键扫描都是P1口,建议一次读入P1的值,再用switch来做分支处理。

认真找找,应该还有很多地方能做优化的。
ID:824490 发表于 2021-5-17 09:46
glinfei 发表于 2021-5-17 09:00
zhuansu这个变量保存的仅仅是计数,不能直接知道转数,要计算一段时间的zhuansu变量的差值,推算转数,

按你的电路图和代码,zhuansu这个变量是计数轮子转了多少圈,这个值*6.28*轮子半径就近似小车移动的距离
ID:844772 发表于 2021-5-17 09:00
suit8515 发表于 2021-5-16 20:48
那我如果想要在主函数的while循环中调用zhuansu该怎么调用啊,我直接在里面用zhaunsu表示不行

zhuansu这个变量保存的仅仅是计数,不能直接知道转数,要计算一段时间的zhuansu变量的差值,推算转数,
ID:236035 发表于 2021-5-17 08:44
suit8515 发表于 2021-5-16 20:48
那我如果想要在主函数的while循环中调用zhuansu该怎么调用啊,我直接在里面用zhaunsu表示不行

这是全局变量,在哪都可以调用。多学习下,否则到哪都是问题,都要问人,次数多了,人家就不愿意了。
ID:913176 发表于 2021-5-16 20:48
hhdsdy 发表于 2021-5-16 20:20
基础太差,电路图显示霍尔接在P3.3引脚,而P3.3是INT1,对应的就是第253行的void int1()interrupt 2        ...

那我如果想要在主函数的while循环中调用zhuansu该怎么调用啊,我直接在里面用zhaunsu表示不行
ID:342822 发表于 2021-5-16 20:46
懒惰不看程序。程序已注明:外部中断1脉冲计数记录电机的转速 电机转一圈zhuansu加1
ID:88256 发表于 2021-5-16 20:20
基础太差,电路图显示霍尔接在P3.3引脚,而P3.3是INT1,对应的就是第253行的void int1()interrupt 2                //外部中断1脉冲技术记录电机的转速 电机转一圈zhuansu加一    的整段程序
ID:390416 发表于 2021-5-16 19:52
霍尔传感器 是中断输入,中断号是2,建议观看 人人学会单片机的视频教程 彻底学好STC单片机中断

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

Powered by 单片机教程网

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