单片机

结束语

我们的教程到此就划上了一个完美的句号了,不过对于初学者来说,从串口的内容到后面的知识都是需要慢慢消化掌握的,不可能通过看我们几篇教程就能领悟所有的知识的,尤其是指针和内存之间的关系。程序的执行顺序也是我们需要完全掌握的,特别在子函数特别多的时候,

温度传感器代码解析Ⅱ

1.小于0度的转换我们知道当测量的实际温度为0度以下时,temp没转换时的情况为下图所示我们已经知道高5位为1表示的是负数,那么-0.5度的时候为什么是1111111111111000。负数的计算涉及到补码的知识。首先0xFFF8,除去高5位那就是11111111000反码为00000000111而补

指向数组的指针

在串口章节和液晶屏章节的部分代码中总是看到“*str!='\0'”和“*str++”却一时难以理解意思,本节我们将简要讲解这两部分代码的含义,但前提需要大家有对指针方面的知识基础,建议先了解《手把手教你学51单片机》文档12.1节知识内容先。

呼吸灯

1.双定时器呼吸灯实现呼吸灯的实现原理就是让小灯的IO端口在一段时间里PWM由大到小变化的占空比输出,接着又由小到大的占空比输出,小灯显示效果就是时亮时暗地交替闪烁。首先我们用定时器0定时0.1ms,全局变量pwm在其中断函数里执行简单的从0到99的循环自加,这样周期就是10ms。

定时器&数码管扫描显示

1.定时器中断实现间隔切换在第六章第4讲的测试代码中提到过数码管微闪烁问题,这是由于三八译码器的IO端口切换的间隔时间不均匀导致,这部分的问题宋老师已经在《手把手教你学51单片机》文档6.4.2节有详细解释,并在6.5.2节里解决了这个问题。

数据类型强制转换

1.实用性改善为了使上一讲的功能更加完善,我们编写新的实用型的代码,效果是让数码管显示的数就是输入引脚高电平持续的微秒数,最高能捕获到999999微秒。如果高电平持续的时间超出这个取值范围,那么数码管不够显示,所以超出范围的话我们就让6个数码管显示FFFFFF。

输入捕获

1.捕获高电平时间我们利用定时器0的计数功能实现捕获外部引脚的高电平时间。定时器在不同用法里有不同称呼,比如我们这次是想得知某段过程持续了多长时间,用定时器的计数方式的话就叫做计数器。我们这次选用的外部引脚还是P1.6,初始时先让该引脚输出低电平。

代码参考

前面的篇章我们都是在普及知识,真正使用好定时器还是需要重新拟定新的书写方案的,我们参考了宋老师的书写方式,在他的代码基础上我们进行小修改成就实用的工程代码。1.代码解析voidConfigTimer0(unsignedintms){unsignedlongtmp;//临时变量tmp=11059200/

实践操作

上一讲的代码中,我们只需重点关注“UART_E2Write();”和“UART_E2Read();”,其他代码都与前几讲的“液晶屏与串口”的代码思路一样。1.写函数分析首先先分析“UART_E2Write();”。判断字符串的前部分是否为“E2Write:”然后读取出要在EEPROM哪个地址开始写入数

电位器控制舵机

1.题目要求为了使ADC的知识能配合其他模块实现不同功能,这里我们打算通过扭动电位器(滑动变阻器)来控制舵机桨的位置,如果我们顺时针扭一圈电位器,那么舵机桨也会跟着从一端旋转到另一端。2.main.c测试代码#include<reg52.h>#include<function.h>//详见第六章第8讲