编辑: xiong447385 | 2015-08-25 |
当电流是20mA的时候,电阻值是150欧,也就是RES的取值范围是150~3000欧姆.这个电阻值大小的变化,直接可以限制整条通路的电流的大小,因此这个电阻我们通常称之为 限流电阻 .在图2-3中,我们用的电阻是1K,这条支路电流的大小,我想大家可以轻松计算出来了,而这个发光二极管在这里的作用,就是个电源指示灯,使用USB线将开发板和电脑连起来,这个灯就会亮了. 同理,我们在板子后级开关控制的地方,又添加了一个LED10发光二极管,作用就是当我们打开开关时,这个二极管才会亮起. 图2-5 USB供电电路 ? ? 大家注意,这里的开关虽然只有一个,但是是2路的,2路开关并联更能确保给后级提供更大的电流.电容C19和C10,都是隔离断开直流的,作用我们下节课介绍,这里大家可以忽略. 那么下面呢,我们把图2-4进行一下变化,把右侧的GND去掉,改成一个单片机的IO口,如图2-6所示. 图2-6 LED小灯电路(2) 图2-4由于电源从正极到负极有电压差,并且电路是导通的,所以就会有电流通过,LED小灯因为有了电流通过,所以就会直接发光.我们把右侧的原GND处接到单片机P0.0引脚上,那么如果我们单片机输出一个低电平,也就是跟GND一样的0V电压,就可以让LED小灯和图2-4一样发光. 因为我们的单片机是可以编程控制的,我们可以让P0.0这个引脚输出一个高电平,就是跟VCC一样的5V电压,那么这个时候,左侧VCC电压和右侧的P0.0的电压是一致的,那就没有电压差,没有电压差就不会产生电流,没有电流LED小灯就不会亮,也就是会处于熄灭状态.下面,我们就用我们的编程软件来实现控制小灯的亮和灭. 1.4 程序代码编写 这是我们第一个实验程序,因此大家还是得耐心点,先来了解一下一些51单片机特有的程序语法以及Keil软件的基本操作步骤. 1.4.1 特殊功能寄存器和位定义 ? ? 我们主要是用C语言来对单片机编程,有的单片机也有那么几条很特殊的独有的编程语句,51单片机就有,先介绍2条. ? ? 第一条语句是:??sfr??P0 = 0x80;
SFR这个关键字,是51单片机特有的,他的作用是定义一个单片机特殊功能寄存器(special function register).51单片机内部有很多个小模块,每个模块有8个开关.每个模块呢,都有一个房间和唯一的房间号.那么P0就是一个功能模块,就住在了0x80这个房间里,我们就是通过设置P0的内部这个模块的8个开关,来让单片机的P0这8个IO口输出高电平或者低电平的. ? ? 第二条语句是: sbit??LED = P0^0;
这个sbit,就是对刚才所说的SFR里边的8个开关其中的一个进行定义.经过上边第二条语句后,以后只要在程序里写LED,就代表了P0.0口( ^ 这个符号在数字键6上边),注意这个P必须大写,也就是说我们给P0.0又取了一个更形象的名字叫做LED. 了解了这两个语句后,我们来大概看一下单片机的特殊功能寄存器.注意,每个型号的单片机都会配有生产厂商所写的数据手册(Datasheet),所以我们来看一下STC89C52RC的数据手册,从21页到24页,全部是对特殊功能寄存器的介绍以 及地址映射列表.我们在使用这个寄存器之前,必须对这个寄存器的地址进行说明.是不是花花绿绿的太多了,记不住啊,这个没关系的,不需要你记住,了解一 下,后边大部分我会慢慢给大家解释,少部分需要用到的时候,自己过来查手册就可以了,做技术不是为了应付考试,你可以随时翻阅手册查找你需要的资料. 继续往下看,在22页最下边有一个表格 表2-1 IO口特殊功能寄存器 我们来看一下表2-1,其中P4口是扩展出来的功能,我们暂时先不看,只看前边的P0,P1,P2,P3这4个,每个Px口本身又有8个控制端口.大家可以结合我们的开发板原理图或者图2-1来看,那么这样就确定了我们的单片机一共有32个IO口(IO,Input和Output,分别是输入和输出). 其中P0口所在的地址是0x80,一共有从7到0这8个IO口控制位,后边有个Reset Value(复位值),这个很重要,我们看寄存器必看的一个参数,8个控制位复位值全部都是1.这里也就告诉了我们,这个单片机上电复位的时候,所有的引脚的值默认是高电平,我们在设计电路的时候也要充分的考虑这个问题. 那么上边那2条语句,我们写sfr的时候,必须要根据手........