健身操网,侦探,保险公司,斯诺克,管材

如何提高单片机的算法?

发布时间:

我在一个小公司里面主要做单片机的开发,感觉自己写的程序算法很简单,想要提高自己的代码算法能力,又没有其他人可以讨论和学习,这种情况下,如果提高自己的代码治量?

多做练习,如果你现在用的C语言开发单片机,想提高自己的算法能力,那建议你多看看C语言的常用算法,然后用单片机板子上的LCD,LED等来验证自己的算法程序。

举一些常用算法例子吧,你可以试试在单片机上实现。

算法就是为解决某一特定问题而采取的具体有限的操作。具有有穷性、确定性、可执行性、领个或多个输入以及一个或多个输出。

将一串数据使用冒泡法进行排序。

将排序后的数据按照从大到小或者从小到大的顺序在LCD液晶上显示出来。

检测字符串是否是回文字符串,如果是回文字符串,则点亮LED,如果不是,则蜂鸣器响一下。

程序中随意定义一个无符号整型数据N,然后计算出1*2*3*4*......*N的结果,通过液晶显示出来结果。

程序中随意定义一个无符号整型数据N,然后计算出1+2+3+4+......+N的结果,通过液晶显示出来结果。

用正弦函数,余弦函数,通过已知的斜边长度计算出两个直角边的长度,通过液晶显示出来。

程序中先定义一个排好序的数组,然后用随机数产生函数产生一个随机数,把这个转数组原有的排序方案插入到数组中,通过液晶显示该随机数位于数组的第几个元素。

程序中定义两个字符串,然后将它们拼接为一个字符串,通过液晶显示出来。

编写一个判断闰年的程序。

在一个现有字符串中查找另一个字符串,如果找到则点亮LED,否则蜂鸣器响。

所谓水仙花数,是指一个三位数,其各位数字立方和等于该数本身。

例如,153是一个水仙花数,因为153=1的3次方+5的3次方+3的3次方。

例如:编写程序计算2018年5月1日对应2018年的第几天。

例如:编写程序计算2018年5月对应的英文名称。

编写一个AD转换程序,分别使用下面的滤波算法实现滤波功能。

单片机控制大部分是面向硬件的,关于这些物理硬件的控制,最重要的就是调节速度和精度,表现在单片机内部算法上,我认为就是时间和空间的合理运用,而这些对算法的要求是什么呢,或者说作为单片机开发者来说,应该怎么样考虑自己的单片机程序呢?



第一,程序结构

我知道你肯定不会想去仔细研究数据结构,那太抽象了。在这里我直接告诉你,基于“状态机”的程序结构更加适合单片机,确切的说是有限状态机。状态机编程技术将直接促使你解决程序的时间问题,并且程序结构可大可小,普通状态机和层次式状态机能让你对绝大多数项目手到擒来。当然状态机编程技术也是需要学习的,但这比你直接去学数据结构要轻松的多。

第二,使用适合的算法

我们编程时要明白一个道理,再多复杂的算法也不能证明你的程序是一个好程序,那什么才是呢?是简洁明了和可靠稳定。大道至简放在编程上不是一句空话,同样一个冒泡排序算法,有的人写出来死板的很,有的人却能独具效率,这是对算法的理解高度不同。我认为与其学习更为复杂的控制算法,不如加深自己对现有算法的理解。通样的PID算法程序,有的人能加上积分分离,有的人能用上环境自适应,这里面差别不可谓不大啊。

最后希望你能早日从自己的工作中形成自己独到的理解,精益求精。

健身操网,侦探,保险公司,斯诺克,管材 Copyright @ 2011-2019 健身操网,侦探,保险公司,斯诺克,管材 All Rights Reserved. 版权所有