实例(1)-LED驱动

  • 格式:pdf
  • 大小:283.22 KB
  • 文档页数:4

三、程序设计
从原理图中可以看出要使 LED0 点亮,则要使单片机的 P0.0 口输出低电平。为实现闪 烁 效果,我们可以加入延时函数 delay_ms()。在主函数每隔一秒钟将 P0.0 口取反一次即可 实 现闪烁效果。 在程序中,sbit LED0 = P0^0; 这一句就是 51 单片机的位定义语句。有了这一句,我们 对 LED0 操作就相当于对 P0.0 口操作了。 快捷方便的位定义功能是 51 单片机的一个突出的 优点。
嵌入式学习——51 单片机篇
实验(1) LED 驱动
一、实验目的:
1、 常握单片机的 IO 口的输出操作。 2、 掌握 51 单片机的端口特性。
二、实验原理:
2.1、传统 51 单片机 IO 口简介
传统 MCS-51 系列单片机有 4 个 8 位并行输入/输出接口,P0、P1、P2、P3 口。这 4 个 口既可以并行输入或输出 8 位数据,又可以按位使用,即每一位均能独立作输入或输出用。 每个口虽功能有所不同,但都具有 1 个锁存器(即特殊功能寄存器 P0~P3)、1 个输出驱动器 和 2 个(P3 口为 3 个)三态缓冲器。传统 MCS-51 单片机的 P1、P2、P3 是准双向口,其高电 平输出能力十分有限,一般只有是几十到几百微安 (uA),也就只能推动几个 TTL 门。但其 低电平输出可达十几到二十毫安(mA)。因此,在 51 单片机系统中,一般的电流型驱动用低 电平驱动较为合适。 特别注意的是,P0 口的输出级是开漏(内部输出端场效应管漏极开路)结构,因此,要使 P0 口能正常输出高电平‘1’ ,必须外接上拉电阻。
2.2、新型 STC 51 单片机的 IO 口特点
新型的 STC 51 单片机(如 STC12C5A60S2 系列单片机)的 IO 口兼容传统 51 单片机的 IO 口,同时还新增一些功能特性。 STC12C5A60S2 系列单片机可由软件配置成 4 种工作类型之一,分别是准双向口/弱上 拉(标准 8051 输出模式)、强推挽输出/强上拉、仅为输入(高阻)、开漏输出。每个口由 2 个 控制寄存器中的相应位控制每个引脚工作类型。复位后为准双向口/弱上拉(传统 8051 的 IO 口)模式。新增的特殊功能寄存器(SFR)PxM1 与 PxM0 来设定 I/O 口的工作类型。下表以 P0 口为例说明。
2
嵌入式学习——51 单片机篇 实验代码如下: //QiYuan@SCUT 2010.12 #include "STC12C5A.h"//包含头文件 #include "intrins.h" #define ON 0 //开发板上的 LED 为低电平驱动 #define OFF 1 //高电平熄灭 #define FOSC 24000000L sbit LED0 = P0^0; //us 延时 void delay_us(unsigned int t) { while(t--) { _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); } } //延时函数(24M 晶振下延时 1ms) void delay_ms(unsigned int time) { //unsigned int t; for(;time>0;time--) { /*t = 1500; while(t--); */ delay_us(1000); } } //主函数 void main(void) { while(1) { LED0 = ON; delay_ms(500); LED0 = OFF; delay_ms(500); } } //打开 LED0 //延时 1S //关闭 LED0 //延时 1S //位定义
关于 IO 口更详细的内容,将在第四部分相关章节介绍。
1
嵌入式学习——51 单片机篇
2.3、硬件原理图
开发板上 LED 相关部分的硬件原理图如下。P0 口连接到 8 个 LED 的阴极,即单片机 用低电平来驱动 LED。由于使用的是 P0 口,我们在外部加了 1K 的上拉电阻,如图 P10 是 1K 的排阻。
ቤተ መጻሕፍቲ ባይዱ
3
嵌入式学习——51 单片机篇
四、最终效果图
4