项目一 发光二极管
This presentation is the property of its rightful owner.
Sponsored Links
1 / 58

项目一 发光二极管 LED 点亮控制 PowerPoint PPT Presentation


  • 72 Views
  • Uploaded on
  • Presentation posted in: General

项目一 发光二极管 LED 点亮控制. 教学目的. 了解单片机的内部结构与主要型号; 掌握单片机引脚功能; 掌握单片机 I/O 口的基本功能; 掌握用 I/O 口实现简单控制的方法; 利用单片机的 I/O 口实现 LED闪烁 的控制。. 工作模块一 点亮一个发光二极管. 工作任务 使用 AT89S52 单片机, P1.0 引脚接发光二极管( LED )的阴极,通过 C 语言程序控制,从 P1.0 引脚输出低电平,使发光二极管点亮。 . PROTEUS 简介.

Download Presentation

项目一 发光二极管 LED 点亮控制

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Led

项目一 发光二极管LED点亮控制


Led

教学目的

了解单片机的内部结构与主要型号;

掌握单片机引脚功能;

掌握单片机I/O口的基本功能;

掌握用I/O口实现简单控制的方法;

利用单片机的I/O口实现LED闪烁的控制。


Led

工作模块一 点亮一个发光二极管

  • 工作任务

    • 使用AT89S52单片机,P1.0引脚接发光二极管(LED)的阴极,通过C语言程序控制,从P1.0引脚输出低电平,使发光二极管点亮。


Proteus

PROTEUS简介

  • PROTEUS是英国Labcenter Electronics公司开发的多功能EDA软件。PROTEUS不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,也是目前较先进的单片机和嵌入式系统的设计与仿真平台。

  • 它实现了在计算机上完成从原理图与电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成PCB的完整的电子设计、研发过程。


Led

LED控制电路

  • 按照工作任务要求,点亮一个LED电路是由AT89S52单片机和1个LED电路构成。

  • AT89S52单片机是美国ATMEL公司生产的低电压、高性能8位单片机,具有丰富的内部资源, 使用AT89S52单片机无须外部存储器。


Proteus led

用PROTEUS设计第一个LED控制电路

  • 新建设计文件

  • 保存设计文件

  • 选取元器件

  • 放置元器件

  • 编辑元器件

  • 放置终端

  • 连线

  • 属性设置

  • 电气规则检测


Led

工作过程

  • P1.0引脚接发光二极管(LED)的阴极,P1.0引脚输出低电平时,发光二极管点亮。

    • 问题:

      为什么P1.0引脚输出低电平,发光二极管点亮?

  • 通过程序控制,使P1.0引脚输出低电平,使发光二极管点亮。

    • 问题:

      程序怎么使P1口的引脚输出低电平?

      下面我们来看一下程序,就可以找到答案。


Led

LED点亮程序

  • #include <AT89X52.H> //包含AT89X52.H头文件

  • sbit LED=P1^0; //定义LED是P1.0引脚对应的变量名

  • void main (void)

  • {

  • LED=0; // P1.0=0,LED点亮

  • while(1);

  • }


Keil c51 p32

KEIL C51(P32)

  • Keil C51 是德国Keil软件公司开发的基于8051 内核的微控制器软件开发平台,是51系列单片机C语言软件开发系统,是目前开发8051 内核单片机的主流工具。

  • Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。μVision2 集成开发环境可以完成从工程建立和管理、编译、连接、目标代码的生成、软件仿真和硬件仿真等完整的开发流程。


Keil c51 c

用KEIL C51编写第一个C语言程序

  • 建立第一个C程序项目

    • 建立工程文件

    • 建立源文件

    • 加载源文件

    • 设置工程的配置参数

    • 进行编译和连接

    • 进入调试模式

    • 全速运行程序


Proteus1

用PROTEUS仿真运行调试

  • 加载“点亮一个LED.hex ”目标代码文件

    • 打开Proteus “点亮一个LED”电路。

    • 双击单片机“AT89S52”,在弹出的“编辑元件”对话框中单击“Program File”栏的打开按钮,在弹出的“选择文件名”对话框找到前面编译生成的“点亮一个LED.hex ”HEX文件,单击“打开“按钮,完成“点亮一个LED.hex ”HEX文件加载。

    • 将“Clock Frequency”栏中的频率设为12MHz,单击“确定”,即可完成加载目标代码文件。

  • 仿真运行调试

    • 单击仿真工具栏“运行”按钮,单片机全速运行程序。


Led

T

INT

定 时 器 / 计 数 器

中 断 系 统

并行I/O口

C P U

串行I/O口

P0-P3

TxD

RxD

存 储 器

认识单片机

  • 单片机实质上是一个芯片(P7)


Led

单片机的发展

  • 第一阶段(1974-1976年)为单片机初级阶段

    • 由于受工艺及集成度的限制,单片机采用双片形式,且功能比较简单。

  • 第二阶段(1976-1978年)为低性能单片机阶段

    • 单片机采用单芯片形式,是“小而全”。

  • 第三阶段(1978-1982年)为高性能单片机阶段,也是单片机普及阶段

  • 第四阶段(1982年以后)为16位单片机阶段


Led

单片机的特点

  • 由于单片机是在一块芯片上集成了一台微型计算机所需的CPU、存储器、输入/输出部件和时钟电路等。因此它具有体积小,使用灵活、成本低、易于产品化、抗干扰能力强,可在各种恶劣环境下可靠地工作等特点。

    • 体积小、重量轻,价格低、功能强,电源单一、功耗低,可靠性高、抗干扰能力强;

    • 使用方便灵活、通用性强;

    • 目前大多数单片机采用哈佛(Harvard)结构体系;

    • 突出控制功能的指令系统;

    • 较低的处理速度和较小的存储容量。


Led

单片机的应用

  • 单片机主要应用在以下几个方面:

    • 家用电器

    • 智能卡

    • 智能仪器仪表

    • 网络与通信

    • 工业控制


Led

单片机的分类

  • 单片机可分为通用型单片机和专用型单片机两大类。

    • 通用型单片机是把可开发资源全部提供给使用者的微控制器。我们通常所说的单片机即指通用型单片机。

    • 专用型单片机则是为过程控制、参数检测、信号处理等方面的特殊需要而设计的单片机。


Led

  • 按片内不同程序存储器的配置来分

    • 片内带ROM、片内带EPROM型、片内无ROM

  • 按片内不同容量的存储器配置来分

    • 51子系列型(是基本型)、52子系列型(是增强型)

  • 按芯片的半导体制造工艺上的不同来分

    • HMOS工艺型、CHMOS工艺型(用“C”表示)

  • 按所能适应的环境温度范围,可划分为三个等级:

    • 0℃~70℃民用级、-40℃~+85℃工业级、-65℃~+125℃军用级。


Mcs 51

MCS-51单片机

  • MCS-51是美国Intel公司的8位高档单片机系列,也是我国目前应用最为广泛的一种单片机系列。

  • 8051/80C51是整个MCS-51系列单片机的核心。

  • 51系列单片机源于Intel公司的MCS-51系列,在Intel公司将MCS-51系列单片机实行技术开放政策之后,许多公司都以MCS-51中的基础结构8051为基核推出了许多各具特色、具有优异性能的单片机,如Philips、Atmel等。这样,把这些厂家以8051为基核推出的各种型号的兼容型单片机统称为51系列单片机。


Atmel at89

Atmel公司的AT89系列单片机

  • AT89系列单片机不但具有一般MCS-51单片机的所有特性,而且其Flash程序存储器可以用电擦除方式瞬间擦除、改写, 写入单片机内的程序还可以进行加密。


Led

T0 T1

时钟电路

ROM

RAM

定时计数器

CPU

并行接口

串行接口

中断系统

TXD RXD

INT0 INT1

P0 P1 P2 P3

单片机硬件结构(P10)

  • 并行I/O口:4个8位的I/O口P0、P1、P2、P3。

  • 中央处理器CPU:8位,运算和控制功能

  • 内部ROM:4KB掩膜ROM,用于存放程序、原始数据和表格。

  • 中断控制系统:5个中断源(外中断2个,定时/计数中断2 个,串行中断1个)

  • 时钟电路:可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZ

  • 串行口:一个全双工串行口。

  • 内部RAM:共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。

  • 定时/计数器:两个16位的定时/计数器,实现定时或计数功能。

复位电路


Led

中央处理器(CPU)

  • 中央处理器是单片机的核心,完成运算和控制功能。

  • MCS-51的CPU能处理8位二进制数或代码。


Led

内部数据存储器(内部RAM)

  • 芯片中共有256个RAM单元

    • 前128单元,作为供用户使用的寄存器和用于存放可读写的数据;

    • 后128单元被专用寄存器占用。

  • 通常所说的内部数据存储器就是指前128单元,简称内部RAM。


Led

内部程序存储器(内部ROM)

  • 芯片中共有4 KB个ROM单元。

  • 用于存放程序、原始数据或表格,因此,称之为程序存储器,简称内部ROM。


Led

定时/计数器

  • 两个16位的定时/计数器。

  • 实现定时或计数功能,并以其定时或计数结果对计算机进行控制。


Led

并行I/O口

  • 4个8位的I/O口(P0、P1、P2、P3)

  • 实现数据的并行输入/输出


Led

串行口

  • 一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。

  • 该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。


Led

中断控制系统

  • 5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。

  • 全部中断分为高级和低级共两个优先级别。


At89s52

AT89S52单片机结构

  • 一个8位CPU;

  • 一个片内振荡器及时钟电路;

  • 8K字节可重复擦写的Flash闪速存储器

  • 三级加密程序存储器;

  • 256×8字节内部RAM;

  • 3个16位定时器/计数器;

  • 32条可编程的I/O线(四个8位并行I/O端口);

  • 一个可编程全双工串行口;

  • 具有8个中断源、两个优先级嵌套中断结构。


At89s52 p11

AT89S52引脚功能(P11)

  • 电源线:VCC(+5V)、VSS(地)

  • 振荡电路:XTAL1、XTAL2

  • 复位引脚:RST

  • 并行口:P0、P1、P2、P3

  • EA:访问程序存储控制信号

  • PSEN:外部ROM读选通信号

  • ALE:地址锁存控制信号

  • P3口线的第二功能


At89s521

AT89S52引脚功能

  • 电源引脚(2根)

    • VCC(40脚):电源端,接+5V电源。

    • VSS(20脚):接地端。

  • 时钟引脚(2根)

    • XTAL1(19脚):接外部晶振和微调电容的一端。

    • XTAL2(18脚):接外部晶振和微调电容的另一端。


At89s522

AT89S52引脚功能

  • 控制引脚(4根)

    • RST/VPD(9脚):复位信号。

      当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。

    • ALE/PROG (30脚):地址锁存控制信号。

      在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。

    • EA/VPP(31脚):访问程序存储控制信号。

      当信号为低电平时,对ROM的读操作限定在外部程序存储器;当信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。

    • PSEN(29脚):片外ROM读选通信号端。

      在读片外ROM时,PSEN有效,为低电平,以实现对片外ROM的读操作。


At89s523

AT89S52引脚功能

  • P0口 (引脚32-39)普通I/O口

  • P1口 (引脚1-8) 普通I/O口

  • P2口 (引脚21-28)普通I/O口

  • P3口 (引脚10-17)普通I/O口,或作为其他第二功能口


Led

P3口各引脚与第二功能表


Led

最小单片机系统(P13)

  • 单片机

  • 5V电源,接地

  • 时钟电路(晶振)

  • 复位电路


Led

时钟电路

  • 时钟电路为单片机产生时钟脉冲序列。

  • 系统允许的晶振频率一般为6 MHz和12 MHz,电容C1和C2取30 pF左右。

  • 晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。


Led

时序的概念

  • 单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。

  • 单片机的时序定时单位从小到大依次为:时钟周期、状态周期、机器周期和指令周期。

    • 振荡周期是指晶体振荡器直接产生的振荡信号的周期,是振荡频率fosc的倒数,用P表示。

    • 状态周期(或状态S)是振荡周期的两倍,它分为P1节拍和P2节拍。

    • 1个机器周期是由6个状态构成。

    • 执行一条指令所需的时间称为指令周期。


Led

各种周期的相互关系


Led

复位电路

  • 单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。

  • 常见的复位操作有上电自动复位和按键手动复位两种方式 。

    • 上电自动复位是通过外部复位电路的电容充电来实现的。

    • 按键手动复位是通过复位端经电阻与电源VCC接通而实现的,它兼备上电复位功能。


Led

复位功能

  • 复位是单片机的初始化操作。

    • 是把PC初始化为0000H,使CPU从0000H单元开始执行程序;

    • 同时还对其他一些寄存器有影响,但内部RAM的数据是不变的。

  • 除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。


Led

技能训练1-1

  • 单片机最小系统只是单片机能满足工作的最低要求,它不能对外完成控制任务,实现人机对话。

  • 单片机最小系统应用—开关控制LED点亮

    • 电路设计

    • 程序设计


2 led

工作模块2-LED闪烁

  • 分析

    • 软件实现思路:

      • 点亮发光二极管

      • 延时(延时子程序)

      • 关闭发光二极管

      • 延时

      • 重复上述动作(循环)

    • 电路设计和前面一样


Led

C语言程序

#include <AT89X52.h>

sbit LED = P1^0;

void Delay()

{

unsigned char i, j;

for (i=0;i<255;i++)

for (j=0;j<255;j++);

}

void main ()

{

while(1)

{

LED = 0;

Delay();

LED = 1;

Delay();

}

}


Led

思考

  • 把Delay()延时函数放在后面如何处理?

    • 提示:在程序开头加入说明行(即子程序头加分号),既定义在前,使用再后。


C p47

C语言程序的构成(P47)

  • C语言的程序是由一个或多个函数构成的,最简单的程序只有一个main函数 。

  • 一个函数由两部份组成

    • 函数的首部、即函数的第一行;

      包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。

    • 函数体,即函数首部下面的大括号“{}”内的部份。函数体一般包括:

      • 声明部份:定义所用到的变量,如void Delay()中的unsigned char i, j;。

      • 执行部份:由若干个语句组成。


Led

标识符

  • C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。

  • 变量名、常数名、数组名、函数名、文件名与类型名等统称为标识符。

  • 标识符分为预定义标识符和用户标识符。

  • 说明:

    • C语言中大写字母与小写字母被认为是两个不同的字符。

    • 标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。


Led

关键字

  • 关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符与关键字相同。在Keil C中的关键字除了有ANSI C标准的32个关键字外,还根据51单片机的特点扩展了相关的关键字。

  • 在Keil C的文本编辑器中编写C程序,系统把保留字以不同颜色显示,缺省颜色为天蓝色。


C p52

C语言基本语句(P52)

  • C语言的程序是由一个或多个函数组成的,而函数又是由若干个语句组成的。语句是由一些基本字符和定义符按照C语言的语法规定组成的,每个语句以分号结束,分号是C语句的必要组成部份。C语言的语句可分为以下5种类型:

    • 表达式语句

    • 函数调用语句

    • 控制语句

    • 复合语句

    • 空语句


Led

表达式语句

  • 表达式语句是由一个表达式加一个分号构成一个语句,其作用是计算表达式的值或改变变量的值。它的一般形式是:

    表达式;

    即在表达式末尾加上分号,就变成了表达式语句。最典型的表达式语句是:在赋值表达式后加一个分号构成赋值语句。例如:

    • a=3

      是一个赋值表达式

    • a=3;

      是一个赋值语句


Led

函数调用语句

  • 由一个函数调用加一个分号构成函数调用语句,其作用是完成特定的功能。它的一般形式是:

    函数名(参数列表);

  • 例如

    mDelay(100); //调用延时函数,参数是100


Led

控制语句

  • 控制语句用于完成一定的控制功能,以实现程序的各种结构方式。C语言有9种控制语句,可分为以下三类。

    • 条件判断语句:if语句、switch语句。

    • 循环语句:for语句、while语句、do-while语句。

    • 转向语句:break语句、continue语句、goto语句、return语句。


Led

复合语句

  • 复合语句是用一对大括号将若干条语句括起来的,也称为分程序,在语法上相当于一条语句。例如

    • main()

    • {……

    • {t=x;

    • x=y;

    • y=t;} //复合语句

    • }


Led

空语句

  • 只有一个分号的语句称为空语句。它的一般形式是:

    ;

    空语句是什么操作也不执行,常用于作为循环语句中的循环体,表示循环体什么也不做。


Led

注释

  • 注释内容可以单独写在一行上,也可以写在一个语句之后;

  • 可以用/*…..*/的形式为 C 程序的任何一部份作注释;

  • Keil C也支持 C++风格的注释,就是用“//”引导的后面的语句是注释,例:

    P1_0=!P1_0; //取反 P1.0

    • 这种风格的注释,只对本行有效,书写比较方便,所以在只需要一行注释的时候,我们往往采用这种格式。


Led

技能拓展-音频控制应用

  • 音频控制电路由单片机最小系统、放大滤波电路和扬声器构成。放大滤波电路由NPN三极管Q1、电阻R3、电容C4构成,Q1的基极经电阻R2接到P0.0引脚。


Led

音频控制流程图

  • 利用AT89S52端口输出脉冲方波,方波经放大滤波后,驱动扬声器发声,声音的频率高低由延时长短控制。


Led

音频控制程序

  • 音频控制程序和模块二LED闪烁程序基本一样,下面写出程序不同之处。

    • #include <AT89X52.H> //包含AT89X52.H头文件

    • sbit SPK=P0^0; //定义SPK是P0.0位对应的引用符号

    • ……

    • SPK = 0; // P0.0=0,输出低电平

    • Delay(); // 延时

    • SPK = 1; // P1.0=1,输出高电平

    • Delay();

    • ……


Led

技能训练1-2

  • 报警产生器

    • P1.7引脚接一个开关;

    • 用P0.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号。

  • 要求

    • 1KHz信号响100ms,500Hz信号响200ms,交替进行;

    • 当开关合上报警信号响,当开关断开报警信号停止。


Led

#include <AT89X52.H>

#include <INTRINS.H>

unsigned char count;

void dely500(void) //延时500us,即0.5ms

{

unsigned char i;

for(i=250;i>0;i--)

{

_nop_();

}

}

void main(void)

{ while(1)

{ if(P1_7==0)

{ for(count=200;count>0;count--)

{//1KHz信号响100ms

P1_0=~P1_0;

dely500();

}

for(count=200;count>0;count--)

{//500Hz信号响200ms

P1_0=~P1_0;

dely500();

dely500();

}

}

}

}

参考程序


  • Login