单片机

按键猜想

当然按键的功能不是像前两讲的代码这么单调,前两讲的代码是认识到程序中寄存器位的值是可以受外部电路影响而改变的。这一讲我们要做的就是根据前两讲的知识不断探索按键的一些规律和原理。1.状态图可能我们理想中的按键过程图如下那我们不妨在这种猜想下用代码测试看看是什么效果。

中断的实验现象

1.卡顿的流水灯我们用一个实验现象来再一次理解中断函数。在主函数里我们使八盏灯不停地左右快速流水,此时若是被外部因素触发了中断函数的执行,我们就在中断函数里实现蜂鸣器响一下,看看此时主函数里的流水灯是什么现象。代码下载进去,我们随意按K4,观察流水灯。

第一阶段的总结

我们的第一阶段的单片机学习在这里就成为一个过渡了!我们虽然没有运用很多的C语言知识,都是用简单的基础知识反复运用加深印象。说到底,单片机终归还是偏重于软件多一点,怎样巧妙的编程还需要我们不停积累。所以在这里笔者建议初学者先放缓学单片机的步伐,

微调定时精确时间

1.定时器&蜂鸣器一般定时器中断函数里的内容最好是能够快速地去执行完,比如只执行几条简单的语句,这样与主函数配合才会使程序更加高效。前期教学里,我们只使用定时器中断负责某个IO引脚间隔跳变或者使一个变量间隔自加1的简单语句。比如我们现在要实现间隔50ms左右的时间让流水灯左右循环移动的同时,

数码管&LED

1.同时点亮猜想在本章第一节里说过要想点亮数码管,那么我们第一章学过的LED小灯就没有机会点亮了,硬件上的确是这样。不过我们软件上还是可以实现让一个数码管和一盏LED小灯同时点亮的,大家还记得我们之前举过一个这样的例子吗?#include<reg52.h>sbitLED2=P0^0;sbitADDR2

串口printf系列函数

1.printf系列的函数实现懂得了单片机通过串口传输数据给电脑端窗口查看,那么,有时我们需要发送字符串,有时需要发送一个变量的数值是多少,以及还要发送回车换行这三种情况。所以我们把这三个功能函数封装起来,方便后续的串口使用。首先笔者写的“voidprintf_str(u8*str)”函数就是专门用来

新按键程序

1.支持连按的书写对上一讲的知识我们再补充一下支持连按的代码以此加深理解。实验现象就是按着按键不放,那么“key=1;”出现的频率就会比不支持连按代码的时候多,所以就会有左右不断流水的现象,按键的功能代码大家自己去分析了。#include<reg52.h>#include<function.h>#de

温度传感器代码解析Ⅱ

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

流水灯的优化解说

1.题目为了更好地体现上一讲优化好的不支持连按代码的优势,我们来一道题目:用上7盏灯,左边6盏不停地流水,最右边1盏实现按键切换灯的打开和关闭,且按键动作不能干扰到流水灯的流速状态。实验现象状态模拟如下11111011//按键没按下11110111//按键没按下11101110//按键按下后抬起110

定时器工作模式2

1.工作模式2的使用这里我们顺便讲解一下定时器0的工作模式2,也就是使用“小试管”的方式,TMOD的初始化就为“TMOD=0x02;”。我们知道工作模式2的最长溢出时间仅为256*(12/11059200)=0.000277秒=277微秒。我们想实现间隔51ms的流水灯实验该怎么做,