对于单片机的学习我一般不按照资料的顺序学习。我是照这个步骤将新知识掌握:
1.学习过程:阅读C语言程序,查看控制变量被赋予的值-->查看跟控制变量对应的相关的电路图-->被控制电路所接收到的输入信号会带来什么样的输出-->这样子的输出带来的电路显示效果。
2.根据1的学习过程我们知道了电路的显示效果跟输出信号的关系,被控电路输出信号与输入信号的关系,被控电路输入信号与C语言程序中控制变量赋值的关系,然后我们就可以改写C语言程序中的控制变量的值去重新控制电路的显示效果。
以上内容纯属个人观点,下面进入单片机数码管静态显示学习的过程。
当数码管应用于某一系统时,它们的“位选”是可被独立控制的,而“段选”是连接在一起的我们可以通过位选信号控制哪几个数码管亮,而在同一时刻,位选选通的所有数码管上显示的数字时钟都是一样的,因为它们是连在一起的,送入所有数码管的段选信号都是一样的,它们显示的数字会是一样的,数码管的这种显示方法叫静态显示。
位选:在多个数码管中选哪一个数码来显示数字。
段选:被选中的数码管将显示哪个数字(数码管的内部是发光二级管亮,可以选择哪些发光二极管被点亮来显示相应的数字)
在看单片机这类电路图时,编号相同的节点在实际中是连通的(不用线连接有简介的效果),如P2.3和CS3是连通的。
我们可以看到右图中COL系列线与左图中的P2系列是相连的,其实P2.0~P2.3给出的信号就是输入到右图CS1-CS3上的对应数码管的位选信号,当信号为真时,相应的数码管被选中。
同理,右图中的2-9号端分别与左图中P0.0-P0.7相连通,根据示例程序中透露:共阴极数码管输入端为低信号时,输出高电平。
为了简单,以下程序用来点亮CS1数码管,显示数字8。
#include
//选中单片机的P2.3,由dula代替需要的操作
sbit dula=P2^3;
void main()
{
//送入位选信号
dula = 1;
//送入段选信号
P0 = 0xFF;
dula = 0;
//程序停止在这里
while(1);
}
然后程序经过keil软件(或其他软件)编译链接生成可执行文件(*.hex文件)后,下载(根据前面所介绍的步骤)到单片机内,第一个数码管就会被点亮显示数字8.
只要由以上两个图成功的控制了一个数码管的数值显示之后,就可以改变程序中的位选和段选信号使选择0-4个数码管显示相同的数字(静态显示的限制)。
所以程序中的位选代码和段选代码成了核心控制信号,故做记录如下:
位选信号为高时,相应的数码管被选中。
给74HC53某位输入信号位为1时,输出也为1,且对应的数码管被点亮(共阴数码管)。