51单片机学习总结(一)
最近在学习STM32单片机的过程中,经常联想到51单片机,一些知识点总是会拿来对比。发现STM32单片机比起51内核要复杂和强大的多,但同时也对51单片机的很多知识点有了进一步的认识。下面回顾下之前用51单片机做过的项目。包括点阵显示项目,智能台灯项目,蓝牙小车项目,频率计项目。
开发平台 :win10;
开发软件:Android Studio 2.1
今天在做频率计时候出现的问题。由于之前已经做出一块可以实现正常功能的板子,再做一块就没怎么注意细节。毕竟原理很简单,而且电路模块也不多。而出现的问题就是1602显示上面一排黑。这样的情况之前也有出现过。大概就是单片机没有给1602输出,或者输出有问题导致的。一般就是从单片机的P0口输出的电平的问题,比如两条线短路了。这样的问题之前是有出现过,然后用万用便检测一下,再重新焊接处理一下就可以解决这个问题。但是今天晚上的问题很明显不是这样的,因为可以说完全检查过这些连线,没有出现断路。甚至考虑了单片机的最小系统板没有工作,是不是晶振出问题之类的。
而问题出现的原因是排阻没有接对方向,刚好接反了。我自己没办法想到这个错误的原因是在上一次焊接时,队友说这个不分正负。而在出问题前做出的两块板都很巧合的连对了,所以让我没办法意识到这个错误的可能性。总之,就是因为排阻的问题导致了,1602没有正常显示。
排阻其实就是也不能说有正负,电阻没有正负。只是说排阻是有公共端的,如果接反了,阻值必然不对,这就会导致单片机对1602的输出电平有问题,1602无法接受正确的数据自然无法显示。
《第一行代码》第8章的中涉及的通知的基本用法处,由于Notificition已被弃用,所以代码出错。需要更新写法。下面列出的是可用的修正写法。同时,第九章P365页处用到的通知,也需要重新写。
交换两个数的值是比较基础也比较常用的算法,比如在冒泡排序法中,从第一数开始比较,如后一个数比其小则交换两数的值。
一般在交换两数的值是,最简单的方法适用的方法就是用中间变量暂存一个数。例如,要交换a,b的值,可使用中间变量c暂存其中的一个数。
核心代码如下:
1 | c=b; |
形成这个问题的原因应该是使用了代理,具体什么代理我也不知道,因为使用的代理有点多。所以造成了应用商店无法联网。也试过了很多的解决方案,但是都没有成功,最后是看到这个网页的解决方案才成功的。
win10 无法联网,错误代码0x80072EFD。