51单片机学习之1-锁存器驱动led灯

发布者:MysticalWhisper最新更新时间:2015-06-24 来源: 51hei关键字:51单片机  锁存器  led灯 手机看文章 扫描二维码
随时随地手机看文章
第一集
    单片机的介绍以及学习必备的一些基础知识等。

 

第二集

一、单片机型号解析。

1、例子 AT89S5224PU

AT—生产商标志,表示该器件是ATMEL公司的产品。

89—ATMEL公司的产品89系列家族(内涵Flash存储器)。

S—表示可在线编程。 还有C表示是CMOS产品、LS表示低电压2.7V-4V、LV表示低电压2.7V-6V、LP表示低功耗单时钟周期指令。

52—表示存储器的容量是8K,还有53是12K、54是16K、55是20K,51是4K、2051是2K等。

24—表示芯片的最高时钟频率为24MHZ。还有33MHZ、20MHZ、16MHZ等。

P—表示DIP封装。还有 S表示SOIC封装、 Q表示PQFP封装、A表示TQFP封装、J表示PLCC封装、W表示裸芯片等。

U—表示芯片的产品等级为无铅工业产品,温度范围为-40至+85℃。还有C表示商业产品,温度范围为0至+70℃;I表示工业产品,温度范围为-40至+85℃;A表示汽车用产品,温度范围为-40至+125℃;M表示军用产品,温度范围为-55至+150℃。

 

 

二、51单片机内部结构

 

8位CPU、4K的ROM、128字节RAM、4个8位并行I/O口、一个全双工串行口,2个16位定时器/计数器,5个中断源

 

单片机为TTL电平:高电平+5V 低电平0V 如果要和计算机通讯,因为计算机高电平-12V 低电平+12V 所以计算机与单片机之间通讯需要加电平转换芯片MAX232。

 

三、二进制的运算

【与】:两者都为1(真)才为1真 例: 1&1=1  0&0=0  0&1=0  1&0=0

【或】:两者只要其中一个为1(真)则为真 例:1|0=1  0|1=1  1|1=1  0|0=0 

【非】: 1则0  0则1 例: !1=0  !0=1
 

 

第三集

一、C51数据类型

1、sfr:特殊功能寄存器声明   

C51已经为我们定义好的。如reg52.h文件里面的sfr TCON  = 0x88; 我们可以直接操作TCON就等于操作0x88这个地址的内容。

2、sfr16:sfr的16位数据声明

同上。

3、sbit:特殊功能位声明

C51已经为我们定义好的。如reg52.h文件里面的sbit TR1   = TCON^6; 我们可以直接将 TR1=1 就等于把TCON的第6位置1

4、bit:位变量声明

二、C51头文件

通常有:reg51.h  reg52.h  math.h  ctype.h stdio.h  stdlib.h  absacc.h

常用有:reg51.h  reg52.h 里面定义了特殊功能寄存器和位寄存器 

math.h 定义常用数学运算

三、宏定义

例:

#define uchar unsigned char

#define uint unsigned int

#define ulint unsigned long int

凡是程序源码中出现 uchar时,在我们编译的时候编译器会把uchar替换成unsigned char,uint 替换成 unsigned int,uling替换成 unsigned long int 方便我们使用。和C的含义一样。

四、C51运算符

与C语言基本相同

+  -  *  / (加 减 乘 除)

>  >=  <  <= (大于 大于等于 小于 小于等于)

==  != (测试等于 测试不等于)

&&  ||  !(逻辑与 逻辑或 逻辑非) 例:if(Led==0)printf(“Led等于0”);

>>  << (位右移 位左移)

&  | (按位与 按位或)

^  ~ (按位异或 按位取反)

五、C-51的基本语法

与C一样
 

 

第四集 

一、74HC573 锁存芯片(主要用来扩展单片机的IO口)





 

 

74HC573引脚说明:

OE:低电平有效,要使用这个芯片OE必须为低电平 芯片才会工作。

D0 — D7:为输入 一般接在单片机的IO口

Q0 — Q7:为输出 外围芯片、电机、led等

LE:锁存控制,当LE为高电平时 D引脚输入的电平状态会直接影响Q输出引脚的电平状态,相当于单片机的IO口可以直接操控Q输出引脚,即单片机IO==Q==D。当LE为低电平时,无论D引脚的电平状态怎么变动,Q的电平状态仍维持不变。相当于Q输出引脚与单片机的IO口隔离。[page]
真值表



这表格分成两个部分:INPUTS(输入)、OUTPUT(输出)。
L:表示低电平 在INPUTS表示输入低电平 在OUTPUT表示输出低电平。
H:表示高电平 在INPUTS表示输入高电平 在OUTPUT表示输出高电平。
X:表示无所谓是高电平还是低电平。
Q0:表示维持原来的状态不变。
Z:高阻态 (接的是高电平则是高电平,接的是低电平则是低电平) 当输出高阻态时,说明芯片没有工作。

INPUTS(输入):
OE:OE上面有一条横杠代表低电平有效。
LE:锁存控制。
D:输入端 即 D0 — D7

OUTPUT(输出):
Q:输出端 即 Q0 — Q7

真值表解释:
第三行:OE=L    LE=H    D=H    Q=H 
        表示OE为低电平时,LE为高电平即不锁存,那么D是高电平则Q也是高电平。
第四行:OE=L    LE=H    D=L    Q=L
        表示OE为低电平时,LE为高电平即不锁存,那么D是低电平则Q也是低电平。
第五行:OE=L    LE=L    D=X    Q=Q0
        表示OE为低电平时,LE为低电平即锁存,那么无论D是什么状态,Q仍保持上一次的状态。
第六行:OE=H    LE=X    D=X    Q=Z
        表示OE为高电平即停用芯片,LE无论是什么状态,D无论是什么状态,Q保持高阻态即不起作用。 

 
 

 

 

二、电路图



 

单片机的一组P0口要控制8个Led灯,首先需要将LE引脚置1,让74HC573 的Q输出端与D输入端关联起来。这样P0口的电平状态会传递给D输入端进而改变Q的电平状态。

8个Led的正极接在1k的排阻。相当于每个Led串入一个1k的电阻。这里的电阻起限流作用,硅发光二极管的发光压降是0.7V;其发光的电流一般为3—10mA,而单片机(控制芯片)的I/O口有一个灌入电流一般为20mA左右(超过这个电流时,单片机内部PN节会被击穿)。所以加一个1k电阻限流,避免流过Led的电流过大而烧毁Led。

 

(单片机(控制芯片)的I/O口有一个灌入电流一般为20mA左右;超过这个电流时,单片机内部PN节会被击穿。一般的继电器驱动电流在40、50—120mA;一般常用9012的PNP(9013、NPN)三极管作为开关三极管,该三极管的驱动电流可以达到200mA左右,可以用来驱动继电器。达林顿反向驱动器:ULN2001A—ULN2002A(ST)驱动电流500mA;(给低电平输出高电平,给高电平输出低电平))

 

电阻的取值:

当Led点亮后,Led会有一个电压。一般情况下红色直插LED应该是1.7V,剩下3.3V的电压会加在电阻上。Led需要的电流是3.3ma(0.0033A) 电压除于电流 3.3V/0.0033A = 1000 欧 = 1K 。(不同的厂家生产的LED的电压和电流可能略有差别)

 

我们要让Led亮,那么首先要明确的是,单片机是TTL电平,高电平为+5V 低电平为0V ,单片机供电也是5V,所以电源正极VCC应该为+5V 负极为0V。Led的正极通过电阻接在VCC,Led的负极接在74HC573的Q输出端。当单片机的IO口给低电平时即0V,并且74HC573 LE为高电平,那么电流会从VCC→1K电阻→Led→74HC573 Q→74HC573 D→单片机的IO口,此时Led灯亮。

按照上面的电路图,程序代码应为:

 

#include 

 

sbit Led = P0^0;

sbit LE = P1^6;   // 由于51单片机上电,IO口默认为高电平所以这句可省略。

 

void main()

{

LE = 1;         // 由于51单片机上电,IO口默认为高电平所以这句可省略。

 

Led = 0;        // 直接操作P0的0端口 让第一个Led灯亮

//P0 = 0xFE;    // 操作P0一组IO口,0xFE== 11111110 ,P0的0端口置0 其余置1 效果和 Led=0 一样。不同的是前者操作了一组端口后者只操作了一个端口
 P0 = 0x00;     // P1端口全部置0 即让所有的LED灯亮。

 

while(1);       // 程序运行到这里的时候 一直无限循环。因为 Keil 编译后期产生的汇编代码中,结尾有一条 LJMP main,就是不同的执行main函数。加上这一条就可以阻止它重复执行上面的代码。

关键字:51单片机  锁存器  led灯 引用地址:51单片机学习之1-锁存器驱动led灯

上一篇:51单片机学习之3-步进电机
下一篇:基于51单片机的双人对战小游戏的实现

推荐阅读最新更新时间:2024-03-16 14:04

基于51单片机ADC0808自动数字电压表数码管显示
硬件设计 该设计是基于51单片机,ADC采用TI公司的ADC0808,自动数字电压测量表,显示器采用4位数码管,测量范围为0.5~10V,精度约为0.02。 仿真图如下: 程序源码: #include reg52.h unsigned char code dispbitcode ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char dispbuf ; unsigned int i; unsigned int j; unsigned int getdata; unsigned int temp; unsigned int temp1;
[单片机]
基于<font color='red'>51单片机</font>ADC0808自动数字电压表数码管显示
基于C语言51单片机电子密码锁的设计与仿真
  0、引言   电子密码锁是现代生活中常用的加密工具。它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是的智能电子密码锁;不仅具有电子密码锁的功能”还可引人智能化管理功能,从而使密码锁具有更离的安全性和可靠性。   电子密码锁通常使用ARM和单片机控制,单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。用单片机控制的窖码锁常使用汇编语言编写程序,显示器多数用。而本文所介绍的电子密犸锁使用移植性及可读性强的高级语言C语言编写,便于修改和增减功能蚤同时采用显示清楚数码管,功率消耗小而且寿命长的 液晶显示器,显示更加直观,使用更加方便。从经济实用的角度出发,采用STC89C52单片机设计出一种具有密码设置、报
[单片机]
基于C语言<font color='red'>51单片机</font>电子密码锁的设计与仿真
51单片机心形流水和数码管同步效果显示仿真与程序
LED流水和数码管流水效果 独立 进行,实现方法包里有代码,互相交流。 仿真原理图: 单片机源程序如下: #include reg51.h #include intrins.h #define Number 50 //数码管数字长亮时间,t=Number*50ms=2500ms #define Speed 6 //数码管数字显示流动速度,t=Speed*50ms=300ms #define time100 100 //延时函数时间:t=time100=100ms #define time1000 1000 //延时函数时间:t=time1000=1000ms #define uchar unsigned
[单片机]
<font color='red'>51单片机</font>心形流水和数码管同步效果显示仿真与程序
简述LED灯条开关电源的基本构成与检测要点
关于LED灯条开关电源的基本构成 LED灯条 开关电源 的构成一般有LED二极管、IGBT和MOSFET这几部分。它由电路来控制开关管而进行高速的道通和截止,将直流电转化成高频交流电来给变换器进行变压,使其产生所需要的一组或多组电压,开关电源大体可以分为隔离和不隔离这两种,是隔离型的一定有开关电源变换器,而不隔离的未必一定有开关电源变换器。开关电源与传统直流电源相比具有体积小、重量轻、和效率高等优点。 关于LED灯条开关电源的检测要点 LED灯条 开关电源 是有电路来控制开关管而进行高速的道通和截止,是将直流电转化成高频交流电来给变换器进行变压,使其产生所需要的一组或多组电压,转化为高频交流电的道理是高频交流在变压器电路中的效率要
[电源管理]
基于51单片机的电子密码锁设计与应用
1.实验任务 根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。 2.电路原理图 图4.32.1 3.系统板上硬件连线 (1). 把“单片机系统”区域中的p0.0/ad0用导线连接到“音频放大模块”区域中的spk in端子上; (2). 把“音频放大模块”区域中的spk out端子接喇叭和; (3). 把“单片机系统”区域中的p2.0/a8-p2.7/a15用8芯排线连接到“四路静态数码显示”区域中的任一个abcd
[单片机]
基于<font color='red'>51单片机</font>的电子密码锁设计与应用
基于51单片机的CAN通讯协议C语言程序
//-----------------------函数声明,变量定义-------------------------------------------------------- #include reg52.h sbit int0 = P3^2; //-----------------------定义寻址的基址-------------------------------------------------------- #define base_Adr 0x00 //-----------------------定义总线定时寄存器的值-----------------------------------
[单片机]
51单片机万年历
可实现功能: 启动程序数码管按照××-××-××格式显示时分秒并走时 按下C1按钮后按照××-××-××格式显示年月日 按下C3调时模式按钮时分秒/年月日静止,指示灯亮起,进入调时模式 先按C2选位按钮再按下C0加一按钮,对应的位置改变 再次按下C3按钮退出调时模式,继续走时 #include reg51.h #define uChar unsigned char #define uInt unsigned int uChar a ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uChar b ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,
[单片机]
基于80C51单片机和CH375芯片实现打印机驱动系统的设计
引言 本课题来源于北京普析通用公司的一个项目。由于公司现有单机版光谱仪器产品(如1810、T6等)采用的是并行口打印技术,而随着USB打印机技术的逐渐普及,并行口打印机越来越不好买到,而且有些用户的打印机只是USB接口而非并行口,因此现有仪器产品对打印机的支持变得不能适应用户需要。为了实现能将公司的并行口仪器直接和USB打印机相连进行打印,决定设计开发一款LPT-USB打印机的驱动器,负责并口仪器和USB打印机的连接。 本文利用单片机和USB总线接口芯片实现LPT-USB打印机的驱动器设计。利用该设计将能够实现并行打印口数据可以在USB打印机上的直接打印工作,克服了有些并口仪器必须连接并口打印机才能打印的弊端,极大地方便了用户
[单片机]
基于80C<font color='red'>51单片机</font>和CH375芯片实现打印机驱动系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved