580 likes | 759 Views
项目一 发光二极管 LED 点亮控制. 教学目的. 了解单片机的内部结构与主要型号; 掌握单片机引脚功能; 掌握单片机 I/O 口的基本功能; 掌握用 I/O 口实现简单控制的方法; 利用单片机的 I/O 口实现 LED闪烁 的控制。. 工作模块一 点亮一个发光二极管. 工作任务 使用 AT89S52 单片机, P1.0 引脚接发光二极管( LED )的阴极,通过 C 语言程序控制,从 P1.0 引脚输出低电平,使发光二极管点亮。 . PROTEUS 简介.
E N D
教学目的 了解单片机的内部结构与主要型号; 掌握单片机引脚功能; 掌握单片机I/O口的基本功能; 掌握用I/O口实现简单控制的方法; 利用单片机的I/O口实现LED闪烁的控制。
工作模块一 点亮一个发光二极管 • 工作任务 • 使用AT89S52单片机,P1.0引脚接发光二极管(LED)的阴极,通过C语言程序控制,从P1.0引脚输出低电平,使发光二极管点亮。
PROTEUS简介 • PROTEUS是英国Labcenter Electronics公司开发的多功能EDA软件。PROTEUS不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,也是目前较先进的单片机和嵌入式系统的设计与仿真平台。 • 它实现了在计算机上完成从原理图与电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成PCB的完整的电子设计、研发过程。
LED控制电路 • 按照工作任务要求,点亮一个LED电路是由AT89S52单片机和1个LED电路构成。 • AT89S52单片机是美国ATMEL公司生产的低电压、高性能8位单片机,具有丰富的内部资源, 使用AT89S52单片机无须外部存储器。
用PROTEUS设计第一个LED控制电路 • 新建设计文件 • 保存设计文件 • 选取元器件 • 放置元器件 • 编辑元器件 • 放置终端 • 连线 • 属性设置 • 电气规则检测
工作过程 • P1.0引脚接发光二极管(LED)的阴极,P1.0引脚输出低电平时,发光二极管点亮。 • 问题: 为什么P1.0引脚输出低电平,发光二极管点亮? • 通过程序控制,使P1.0引脚输出低电平,使发光二极管点亮。 • 问题: 程序怎么使P1口的引脚输出低电平? 下面我们来看一下程序,就可以找到答案。
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 是德国Keil软件公司开发的基于8051 内核的微控制器软件开发平台,是51系列单片机C语言软件开发系统,是目前开发8051 内核单片机的主流工具。 • Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。μVision2 集成开发环境可以完成从工程建立和管理、编译、连接、目标代码的生成、软件仿真和硬件仿真等完整的开发流程。
用KEIL C51编写第一个C语言程序 • 建立第一个C程序项目 • 建立工程文件 • 建立源文件 • 加载源文件 • 设置工程的配置参数 • 进行编译和连接 • 进入调试模式 • 全速运行程序
用PROTEUS仿真运行调试 • 加载“点亮一个LED.hex ”目标代码文件 • 打开Proteus “点亮一个LED”电路。 • 双击单片机“AT89S52”,在弹出的“编辑元件”对话框中单击“Program File”栏的打开按钮,在弹出的“选择文件名”对话框找到前面编译生成的“点亮一个LED.hex ”HEX文件,单击“打开“按钮,完成“点亮一个LED.hex ”HEX文件加载。 • 将“Clock Frequency”栏中的频率设为12MHz,单击“确定”,即可完成加载目标代码文件。 • 仿真运行调试 • 单击仿真工具栏“运行”按钮,单片机全速运行程序。
T INT 定 时 器 / 计 数 器 中 断 系 统 并行I/O口 C P U 串行I/O口 P0-P3 TxD RxD 存 储 器 认识单片机 • 单片机实质上是一个芯片(P7)
单片机的发展 • 第一阶段(1974-1976年)为单片机初级阶段 • 由于受工艺及集成度的限制,单片机采用双片形式,且功能比较简单。 • 第二阶段(1976-1978年)为低性能单片机阶段 • 单片机采用单芯片形式,是“小而全”。 • 第三阶段(1978-1982年)为高性能单片机阶段,也是单片机普及阶段 • 第四阶段(1982年以后)为16位单片机阶段
单片机的特点 • 由于单片机是在一块芯片上集成了一台微型计算机所需的CPU、存储器、输入/输出部件和时钟电路等。因此它具有体积小,使用灵活、成本低、易于产品化、抗干扰能力强,可在各种恶劣环境下可靠地工作等特点。 • 体积小、重量轻,价格低、功能强,电源单一、功耗低,可靠性高、抗干扰能力强; • 使用方便灵活、通用性强; • 目前大多数单片机采用哈佛(Harvard)结构体系; • 突出控制功能的指令系统; • 较低的处理速度和较小的存储容量。
单片机的应用 • 单片机主要应用在以下几个方面: • 家用电器 • 智能卡 • 智能仪器仪表 • 网络与通信 • 工业控制
单片机的分类 • 单片机可分为通用型单片机和专用型单片机两大类。 • 通用型单片机是把可开发资源全部提供给使用者的微控制器。我们通常所说的单片机即指通用型单片机。 • 专用型单片机则是为过程控制、参数检测、信号处理等方面的特殊需要而设计的单片机。
按片内不同程序存储器的配置来分 • 片内带ROM、片内带EPROM型、片内无ROM • 按片内不同容量的存储器配置来分 • 51子系列型(是基本型)、52子系列型(是增强型) • 按芯片的半导体制造工艺上的不同来分 • HMOS工艺型、CHMOS工艺型(用“C”表示) • 按所能适应的环境温度范围,可划分为三个等级: • 0℃~70℃民用级、-40℃~+85℃工业级、-65℃~+125℃军用级。
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系列单片机 • AT89系列单片机不但具有一般MCS-51单片机的所有特性,而且其Flash程序存储器可以用电擦除方式瞬间擦除、改写, 写入单片机内的程序还可以进行加密。
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位的定时/计数器,实现定时或计数功能。 复位电路
中央处理器(CPU) • 中央处理器是单片机的核心,完成运算和控制功能。 • MCS-51的CPU能处理8位二进制数或代码。
内部数据存储器(内部RAM) • 芯片中共有256个RAM单元 • 前128单元,作为供用户使用的寄存器和用于存放可读写的数据; • 后128单元被专用寄存器占用。 • 通常所说的内部数据存储器就是指前128单元,简称内部RAM。
内部程序存储器(内部ROM) • 芯片中共有4 KB个ROM单元。 • 用于存放程序、原始数据或表格,因此,称之为程序存储器,简称内部ROM。
定时/计数器 • 两个16位的定时/计数器。 • 实现定时或计数功能,并以其定时或计数结果对计算机进行控制。
并行I/O口 • 4个8位的I/O口(P0、P1、P2、P3) • 实现数据的并行输入/输出
串行口 • 一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。 • 该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。
中断控制系统 • 5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。 • 全部中断分为高级和低级共两个优先级别。
AT89S52单片机结构 • 一个8位CPU; • 一个片内振荡器及时钟电路; • 8K字节可重复擦写的Flash闪速存储器 • 三级加密程序存储器; • 256×8字节内部RAM; • 3个16位定时器/计数器; • 32条可编程的I/O线(四个8位并行I/O端口); • 一个可编程全双工串行口; • 具有8个中断源、两个优先级嵌套中断结构。
AT89S52引脚功能(P11) • 电源线:VCC(+5V)、VSS(地) • 振荡电路:XTAL1、XTAL2 • 复位引脚:RST • 并行口:P0、P1、P2、P3 • EA:访问程序存储控制信号 • PSEN:外部ROM读选通信号 • ALE:地址锁存控制信号 • P3口线的第二功能
AT89S52引脚功能 • 电源引脚(2根) • VCC(40脚):电源端,接+5V电源。 • VSS(20脚):接地端。 • 时钟引脚(2根) • XTAL1(19脚):接外部晶振和微调电容的一端。 • XTAL2(18脚):接外部晶振和微调电容的另一端。
AT89S52引脚功能 • 控制引脚(4根) • RST/VPD(9脚):复位信号。 当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。 • ALE/PROG (30脚):地址锁存控制信号。 在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。 • EA/VPP(31脚):访问程序存储控制信号。 当信号为低电平时,对ROM的读操作限定在外部程序存储器;当信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。 • PSEN(29脚):片外ROM读选通信号端。 在读片外ROM时,PSEN有效,为低电平,以实现对片外ROM的读操作。
AT89S52引脚功能 • P0口 (引脚32-39)普通I/O口 • P1口 (引脚1-8) 普通I/O口 • P2口 (引脚21-28)普通I/O口 • P3口 (引脚10-17)普通I/O口,或作为其他第二功能口
最小单片机系统(P13) • 单片机 • 5V电源,接地 • 时钟电路(晶振) • 复位电路
时钟电路 • 时钟电路为单片机产生时钟脉冲序列。 • 系统允许的晶振频率一般为6 MHz和12 MHz,电容C1和C2取30 pF左右。 • 晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。
时序的概念 • 单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。 • 单片机的时序定时单位从小到大依次为:时钟周期、状态周期、机器周期和指令周期。 • 振荡周期是指晶体振荡器直接产生的振荡信号的周期,是振荡频率fosc的倒数,用P表示。 • 状态周期(或状态S)是振荡周期的两倍,它分为P1节拍和P2节拍。 • 1个机器周期是由6个状态构成。 • 执行一条指令所需的时间称为指令周期。
复位电路 • 单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。 • 常见的复位操作有上电自动复位和按键手动复位两种方式 。 • 上电自动复位是通过外部复位电路的电容充电来实现的。 • 按键手动复位是通过复位端经电阻与电源VCC接通而实现的,它兼备上电复位功能。
复位功能 • 复位是单片机的初始化操作。 • 是把PC初始化为0000H,使CPU从0000H单元开始执行程序; • 同时还对其他一些寄存器有影响,但内部RAM的数据是不变的。 • 除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。
技能训练1-1 • 单片机最小系统只是单片机能满足工作的最低要求,它不能对外完成控制任务,实现人机对话。 • 单片机最小系统应用—开关控制LED点亮 • 电路设计 • 程序设计
工作模块2-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(); } }
思考 • 把Delay()延时函数放在后面如何处理? • 提示:在程序开头加入说明行(即子程序头加分号),既定义在前,使用再后。
C语言程序的构成(P47) • C语言的程序是由一个或多个函数构成的,最简单的程序只有一个main函数 。 • 一个函数由两部份组成 • 函数的首部、即函数的第一行; 包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。 • 函数体,即函数首部下面的大括号“{}”内的部份。函数体一般包括: • 声明部份:定义所用到的变量,如void Delay()中的unsigned char i, j;。 • 执行部份:由若干个语句组成。
标识符 • C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 • 变量名、常数名、数组名、函数名、文件名与类型名等统称为标识符。 • 标识符分为预定义标识符和用户标识符。 • 说明: • C语言中大写字母与小写字母被认为是两个不同的字符。 • 标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。
关键字 • 关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符与关键字相同。在Keil C中的关键字除了有ANSI C标准的32个关键字外,还根据51单片机的特点扩展了相关的关键字。 • 在Keil C的文本编辑器中编写C程序,系统把保留字以不同颜色显示,缺省颜色为天蓝色。
C语言基本语句(P52) • C语言的程序是由一个或多个函数组成的,而函数又是由若干个语句组成的。语句是由一些基本字符和定义符按照C语言的语法规定组成的,每个语句以分号结束,分号是C语句的必要组成部份。C语言的语句可分为以下5种类型: • 表达式语句 • 函数调用语句 • 控制语句 • 复合语句 • 空语句
表达式语句 • 表达式语句是由一个表达式加一个分号构成一个语句,其作用是计算表达式的值或改变变量的值。它的一般形式是: 表达式; 即在表达式末尾加上分号,就变成了表达式语句。最典型的表达式语句是:在赋值表达式后加一个分号构成赋值语句。例如: • a=3 是一个赋值表达式 • a=3; 是一个赋值语句
函数调用语句 • 由一个函数调用加一个分号构成函数调用语句,其作用是完成特定的功能。它的一般形式是: 函数名(参数列表); • 例如 mDelay(100); //调用延时函数,参数是100
控制语句 • 控制语句用于完成一定的控制功能,以实现程序的各种结构方式。C语言有9种控制语句,可分为以下三类。 • 条件判断语句:if语句、switch语句。 • 循环语句:for语句、while语句、do-while语句。 • 转向语句:break语句、continue语句、goto语句、return语句。