编辑: 元素吧里的召唤 | 2015-08-25 |
51 单片机的EA/VPP(31 脚) 是内部和外部程序存储器的选择管脚.当EA 保持高电平时,单片机访问内部程序存储器;
当EA 保持低电平时,则不管是否有内部程序存储器,只访问外部存储器. 对于现今的绝大部分单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器. 在本实验套件中,EA 管脚接到了VCC 上,只使用内部的程序存储器.这一点一定要注意,很多初学者常常将EA 管脚悬空,从而导致程序执行不正常. 4. P0 口外接上拉电阻
51 单片机的P0 端口为开漏输出,内部无上拉电阻(见图3).所以在当做普通I/O 输出数据时,由于V2 截止,输出级是漏极开路电路,要使
1 信号(即高电平)正常输出,必须外接上拉电阻. 图3 P0端口的1位结构 另外,避免输入时读取数据出错,也需外接上拉电阻.在这里简要的说下其原因:在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外.例如,当从内部总线输出低电平后,锁存器Q = 0, Q = 1,场效应管V1 开通,端口线呈低电平状态.此时无论端口线上外接的信号是低电平还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号.又如,当从内部总线输出高电平后,锁存器Q = 1, Q = 0,场效应管V1 截止.如外接引脚信号为低电平, 从引脚上读入的信号就与从锁存器读入的信号不同.所以当P0 口作为通用I/O 接口输入使用时,在输入数据前,应先向P0 口写
1 ,此时锁存器的Q 端为
0 ,使输出级的两个场效应管V
1、V2 均截止,引脚处于悬浮状态,才可作高阻输入. 总结来说:为了能使P0 口在输出时能驱动NMOS 电路和避免输入时读取数据出错,需外接上拉电阻.在本实验套件中采用的是外加一个10K 排阻.此外,51 单片机在对端口P0―P3 的输入操作上,为避免读错,应先向电路中的锁存器写入
1 ,使场效应管截止,以避免锁存器为
0 状态时对引脚读入的干扰. 5. LED 驱动电路 细心的读者可能已经发现,在最小系统中,发光二极管(LED)的接法是采取了电源接到二极管正极再经过1K 电阻接到单片机I/O 口上的(见图4 中的接法1).为什么这么接呢?首先我们要知道LED 的发光工作条件,不同的LED 其额定电压和额定电流不同,一般而言,红或绿颜色的LED 的工作电压为1.7V~2.4V,蓝或白颜色的LED 工作电压为2.7~4.2V, 直径为3mm LED 的工作电流2mA~10mA.在这里采用红色的3mm 的LED.其次,51 单片机(如本实验板中所使用的STC89C52单片机)的I/O 口作为输出口时,拉电流(向外输出电流)的能力是μA 级别,是不足以点亮一个发光二极管的.而灌电流(往内输入电流)的方式可高达20mA,故采用灌电流的方式驱动发光二极管.当然,现今的一些增强型单片机,是采用拉电流输出(接法2)的,只要单片机的输出电流能力足够强即可.另外,图4 中的电阻为1K 阻值,是为了限制电流,让发光二极管的工作电流限定在2mA~10mA. 图4 LED的接法
四、程序设计 在单片机编程语言上,有C 语言和汇编两种选择.本系列教程采用C 语言编写程序,在此对C语言和汇编语言在进行单片机开发时进行下简单比较,汇编语言面向硬件,要求对硬件的特性如寄存器之类的比较熟悉,执行效率高,但可读性和移植性差,不同的单片机之间的程序不能通用,例如学会了51 单片机的汇编指令,却没法用到AVR 单片机上.C语言面向过程,可读性和移植性很好,效率要比汇编低一些.对于刚接触单片机的人来说,学习这两种语言是一样的,但在以后的开发效率上,C 语言的优势就体现出来了,其可以几乎完全不改动的情况下移植,大大提高了开发速度. 控制发光二极管D1 闪烁的C 语言源程序: 1. 程序详细说明 (1)头文件包含.程序接下来调用的P0_0 就是该头文件中定义好的一个寄存器地址.在对单片机内部的寄存器操作之前,应申明其来处,有兴趣的读者可以看看AT89X52.h 文件中的内容. (2)宏定义led, 便于直观理解也便于程序修改,将P0_0 口命名为led, 这样在程序中就可以用led代替P0_0 口进行操作. (3)延时函数声明.函数在调用之前必须进行声明,由于函数定义放在主函数之后,所以在主函数之前对延时函数进行了声明. (4)主函数入口.主函数不传递参数也不返回值. (5)死循环. (6)输出高电平,led 不亮. (7)延时一段时间,以便人眼能够直观看到. (8)输出低电平,led 点亮. (9)延时一段时间. (10)延时函数定义. (11)for 语句循环延时. 2. 程序流程图与实验现象 程序流程如图5 所示.经编译软件(keil)编译,生成单片机烧写文件,然后就可下载到单片机内部运行了,硬件电路板如图6 所示,本实验板上用的是STC89C52RC,可以用通过板载USB 转串口烧写程序.故将USB 线(本实验套件中有)连接电脑和实验板.供电电源可以从USB 取,也可以从外部电源取电.冷启动,即先点击下载,然后再上电.下载程序到单片机内运行后,可以看到实验板上P0_0 口外接的LED 灯(D1) 一亮一灭的闪烁. 图5 程序流程图 图6 硬件电路板图