版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机概述01重点介绍单片机的基本概念、开发步骤以及仿真环境搭建。01单片机概述123单片机的基本概念单片机的开发步骤单片机仿真开发环境搭建1.1单片机的基本概念一、单片机简介在一块芯片上集成:中央处理单元(CPU)、程序存储器(
ROM)、数据存储器(RAM)、输入/输出接口(I/O)、定时器/计数器、中断系统、系统时钟电路、系统总线以及各种外围功能部件。嵌入式控制器(EMCU)或微控制器(MCU)单片机(SCM)专用型通用型分类专门针对某些产品的特定用途而制作的单片机。内部可开发的资源全部提供给用户。简称国际国内单片机单片微型计算机的简称1.1单片机的基本概念二、单片机类型1、
51系列单片机
型号片内ROM片内RAMI/O口(位)定时器/计数器(个)中断(个)基本型8031无128B322580514KB128B62587514KB128B3225增强型8032无256B323680528KB256B323687528KB256B323表1-1MCS-51系列单片机的内部资源1.1单片机的基本概念表1-251系列单片机芯片厂商产品厂商产品ATMEL公司AT89C5x系列(89C51/89S51、89C52/89S52.
89C55等)Philipe
公司P89LPC7xx系列,P89LPC9xx系列,80C51、8xC552
系列Cygnal公司C80C51F系列高速SOC单片机LG公司GMS90/97系列低价高速单片机ADI公司ADμC8xx系列高精度单片机台湾华邦公司W78C54、W78C58、W78E54、W78E58等AMD公司
8-
515/535单片机Siemens公司C501-1R,C501-1E,C503-1R,SAB80512单片机STCSTC89C51RC,STC89C52RC,STC89C53RC,STC89LE51RC,STC89LE52RC,STC12C5412AD等1.1单片机的基本概念
字母或数字含义前缀AT厂家名称缩写型号8内核为80519内部含有Flash存储器S/C/LVS:含有串行下载的Flash存储器C:表示CMOS产品LV:表示低电压产品,可在25V电压下工作。5固定不变1/21:基本型2:增强型后缀12/16/20/24时钟频率为12
MHz/16
MHz/20
MHz/24
MHzP/D/Q/J/A/S双列直插DIP封装/陶瓷封装/PQFP封装/PLV封装/TQFP封装/SOIC封装C/I/A/MC:商业用产品,温度范围为0~℃
+
70℃
I:工业用产品,温度范围为-40℃
~
+85℃
A:汽车用产品,温度范围为-40℃~
+
125℃
M:军用产品,温度范围为-55℃~
+
150℃型号含义:AT89S52-12PI1.1单片机的基本概念2、其他系列单片机PIC系列单片机美国Microchip公司产品;精简指令集(RISC);
哈佛总线结构。低档型:PIC12CSxxx/
16C5x系列中档型:PIC12C/
PIC16C系列以及PIC18系列。高档型:PICI7C.xx
系列。AVR系列单片机STM32系列单片机ATMEL公司的产品;精简指令集(RISC)。
低档Tiny系列:Tiny11/12/13/15/26/28等中档AT90S系列:AT90S1200/2313/8515/8535高档ATmega系列:ATmega8/16/32/64/128STMicroelectronics公司产品;以ARM
Cortex®-M0,M0+,M3,M4和M7为内核。主流产品:STM32F0/STM32F3超低功耗产品:STM32L0/STM32L4/STM32L4+高性能产品:STM32F2/32F4/32F7/32H701单片机概述123单片机的基本概念单片机的开发步骤单片机仿真开发环境搭建1.2单片机的开发步骤图1-1单片机应用系统组成01.提出项目02.项目论证03.方案设计04.硬件设计07.脱机运行06.系统调试05.软件设计单片机应用系统开发的一般过程1.2单片机的开发步骤08.产品定型1.2单片机的开发步骤01单片机概述123单片机的基本概念单片机的开发步骤单片机仿真开发环境搭建1.3单片机仿真开发环境搭建0102KeilC51编译软件Proteus仿真软件1.3单片机仿真开发环境搭建仿真界面KeilC51的使用步骤1.3.11.创建工程2.添加用户源程序文件3.编写代码4.程序的编译KeilC51的使用步骤1.创建工程(1)单击菜单栏中的“Project/NewμVisionProject”
图1新建一个工程(2)在弹出“Create
New
Project"
窗口输入工程路径及名称
图2工程命名KeilC51的使用步骤1.创建工程(3)选择单片机:在弹出“Select
Device
for
Target”窗口中,选择“Atmel”目录下的“AT89C52”。
图3选择单片机型号KeilC51的使用步骤1.创建工程
图4启动代码选择(4)单击“OK”按钮,如果需要复制启动代码到新建的工程,单击“是”,否则,单击“否”。
图5工程文件的创建KeilC51的使用步骤2.添加用户源程序文件(1)新建文件:单击“File/New”,保存为**.c
图6新建文件
图7保存文件Proteus的的使用步骤1.3.21.新建工程2.绘制原理图3.添加Hex文件4.仿真运行Proteus的的使用步骤1.创建工程:点击“文件/新建工程”
图1Proteus工程命名界面
图2Proteus原理图模板选择
图3ProteusPCB模板选择Proteus的的使用步骤
图4Proteus原理图绘制界面Proteus的的使用步骤2.绘制原理图:(1)放置元器件:
图6元器件选择界面点击
图5选择按钮Proteus的的使用步骤
图7搜索元器件界面
图8放置元器件界面搜索元器件放置元器件Proteus的的使用步骤
图9放置其他元器件Proteus的的使用步骤(2)按电路图连接:
图10点亮LED原理图添加电源和地元件参数设置:双击器件连线
图11放置电源终端
图12修改参数Proteus的的使用步骤3.添加Hex文件:双击单片机,在弹出的对话框中“ProgramFile”选项后面的
,添加Hex文件
图13添加Hex文件Proteus的的使用步骤4.仿真运行:
图14运行效果本章小结
1.单片机就是单片微型计算机,在一片半导体硅片上集成中央处理单元(CPU)、存储器(RAM、ROM)、并行I/O、串行I/O、定时器/计数器、中断系统、系统时钟电路及系统总线等部件。
2.单片机按照其用途可分为通用型和专用型两大类。通用型单片机是将内部可开发的资源(如存储器、I/O等各种外围功能部件等)全部提供给用户。专用型单片机是专门针对某些产品的特定用途而制作的。
3.51系列单片机包括Intel
公司的MCS-51系列单片机以及以51为内核扩展出来的单片机,这类单片机的基本结构和指令系统都是兼容的。
4.单片机应用系统主要由硬件和软件两部分组成。
5.了解单片机的开发过程。
6.单片机仿真所需要的软件为:编程软件Keil
μVision的51版本;仿真软件采用Proteus平台。掌握这2个软件的安装及基本使用方法。AT89S52的硬件结构02介绍单片机引脚、最小系统、单片机执行指令的工作过程、单片机的存储结构以及C51语言的定义方式。02AT89S52的硬件结构01硬件组成050203存储器结构单片机的CPU单片机引脚04时钟电路与时序06单片机工作方式2.1AT89S52单片机的硬件组成图1AT89S52单片机片内结构AT89S52完全兼容AT89C51/AT89S51单片机,使用AT89C51/AT89S51单片机的系统,在保留原来软硬件的基础上,可用AT89S52直接代换。!02AT89S52的硬件结构01硬件组成050203存储器结构单片机的CPU单片机引脚04时钟电路与时序06单片机工作方式2.2AT89S52单片机的引脚
图1(a)DIP封装的引脚分布(b)PLCC封装的引脚分布!AT89S52与各种8051单片机的引脚兼容,不同封装引脚号不同,但功能和使用方法相同。本课程以40引脚DIP封装方式为例介绍各引脚功能。2.2AT89S52单片机的引脚序号分类引脚名称和标号引脚功能1电源引脚VCC(40脚)电源正极,接+5V电源VSS(20脚)电源负极,接数字地2时钟引脚XTAL1(19脚)片内时钟振荡器的反相放大器输入端XTAL2(18脚)片内时钟振荡器的反相放大器输出端3控制引脚RST(9脚)复位信号输入端,2个机器周期高电平复位外部ROM访问允许控制端/编程电压输入端地址锁存控制信号端/编程脉冲输入端访问片外ROM的读选通信号4I/O引脚P0口(39脚-32脚)漏极开路双向I/O口数据/地址(低8位)总线复用P1口(1脚-8脚)准双向I/O口/第二功能P2口(21脚-28脚)准双向I/O口/地址总线(高8位)P3口(10脚-17脚)准双向I/O口/第二功能表1引脚名称及功能2.2AT89S52单片机的引脚1、电源引脚VCC(40脚):+5V电源2、时钟引脚(XTAL1、XTAL2)图2内部时钟方式必须为单片机提供时钟信号VSS(20脚):数字地内部时钟方式和外部时钟方式外部时钟方式XTAL1接外部时钟振荡器XTAL2悬空常用内部时钟方式XTAL1、XTAL2外接晶振和微调电容2.2AT89S52单片机的引脚3、控制引脚
①复位引脚(RST,9脚)正常工作时,该引脚应保持低电平复位状态时,该引脚加上持续时间大于2个机器周期的高电平看门狗定时器溢出输出时,该引脚输出8个机器周期的高电平图3复位引脚常用连接2.2AT89S52单片机的引脚3、控制引脚
代码<8KB,读片内ROM(8KB,0x0000~0x1FFF)中的程序;代码>8KB,先读片内ROM
(8KB),再读片外ROM(0x2000~0xFFFF)只读片外ROM中程序(0x0000~0xFFFF)对片内ROM编程,接编程电压。ISP方式,不用该引脚编程。2.2AT89S52单片机的引脚3、控制引脚
正常工作时,该引脚持续输出1/6fosc的脉冲信号图5ALE脉冲信号可用作外部定时或触发信号通过检测该引脚的脉冲频率,测试单片机是否正常工作2.2AT89S52单片机的引脚3、控制引脚
正常工作时,该引脚持续输出1/6fosc的正脉冲信号扩展并行总线时,该引脚外接锁存器对片内ROM编程,为编程脉冲输入端。ISP方式,不用该引脚。图6并行总线扩展示意图2.2AT89S52单片机的引脚3、控制引脚
扩展片外并行程序存储器时需接该引脚,低电平有效。若不扩展片外程序存储器时,该引脚悬空。图7外扩程序存储器2.2AT89S52单片机的引脚4、并行I/O口(P0、P1、P2、P3)①P0口(P0.0~P0.7,39脚~32脚)扩展总线:地址总线(低8位)及数据总线分时复用通用I/O口:准双向口,输出外接上拉电阻,输入先写“1”图8并行总线扩展示意图2.2AT89S52单片机的引脚4、并行I/O口(P0、P1、P2、P3)②P1口(P1.0~P1.7,1脚~8脚)通用I/O口:准双向口,输出不用外接上拉电阻,输入先写“1”第二功能:序号引脚第二功能说明1P1.0T2T2的外部计数信号输入端2P1.1T2EXT2的捕捉/重新装载触发及方向控制端3P1.5MOSI对片内Flash存储器的串行编程和校验4P1.6MISO对片内Flash存储器的串行编程和校验5P1.7SCK对片内Flash编程和校验移位脉冲输入引脚AT89S52不用T2的P1.0和P1.1的复用功能时,AT89S51以及8051兼容机与AT89S52的引脚功能完全相同,它们的外部硬件接口电路也完全相同。!表2P1口的第二功能2.2AT89S52单片机的引脚4、并行I/O口(P0、P1、P2、P3)③P2口(P2.0~P2.7,21脚~28脚)扩展总线:地址总线(高8位)通用I/O口:准双向口,输出不用外接上拉电阻,输入先写“1”图9并行总线扩展示意图2.2AT89S52单片机的引脚4、并行I/O口(P0、P1、P2、P3)④P3口(P3.0~P3.7,10脚-17脚)第二功能:通用I/O口:准双向口,输出不用外接上拉电阻,输入先写“1”引脚第二功能说明引脚第二功能说明P3.0RXD串行数据接收端P3.4T0定时器T0外部计数输入端P3.1TXD串行数据发送端P3.5T1定时器T1外部计数输入端P3.2外部中断0输入端P3.6外部RAM的写选通控制端P3.3外部中断1输入端P3.7外部RAM的读选通控制端了解单片机40个引脚功能对应用系统硬件电路设计十分重要。!表3P3口的第二功能2.2AT89S52单片机的引脚单片机的最小系统
也称单片机最小应用系统,是指用最少的元件组成的单片机可以工作的系统,由电源、晶振、复位电路和程序存储器选择电路组成。图10单片机最小系统02AT89S52的硬件结构01硬件组成050203存储器结构单片机的CPU单片机引脚04时钟电路与时序06单片机工作方式2.3AT89S52单片机的CPU1、运算器1234算术逻辑运算单元(ALU):实现算术和逻辑两种运算位处理器:实现位操作累加器(A):8位特殊功能寄存器(SFR),字节地址为0xE0CPU中的数据传送大多通过累加器A完成;ALU进行运算时,其中一个数据大部分都来自累加器A;ALU运算结果的存放单元。作用寄存器(B):8位SFR,字节地址为0xF0,主要用于乘法和除法运算5程序状态字寄存器(PSW):8位SFR,字节地址为0xD0位号PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位地址0xD70xD60xD50xD40xD30xD20xD10xD0符号CYACF0RS1RS0OV-P2.3AT89S52单片机的CPU2、控制器功能:控制指令的读入、译码和执行,从而对各功能部件进行定时和逻辑控制。单片机执行指令的工作过程程序计数器PC的工作过程(PC)ROM指令寄存器定时控制电路各功能部件地址指令结果定时信号控制信号(PC)ROM(PC)+1指令译码器PC的内容:下一条要执行的指令在程序存储器中的地址PC是一个16位计数器寻址范
围是0x0000
~
0xFFFF02AT89S52的硬件结构01硬件组成050203存储器结构单片机的CPU单片机引脚04时钟电路与时序06单片机工作方式2.4时钟电路与时序1、时钟电路内部时钟电路(常用)外部时钟电路21晶振常选6MHz、12MHz或11.0592MHzC1和C2对频率有微调
作用晶振频率越高,单片机速度越快容值为10~40pF,通常可选择30pF瓷片电容用于多片单片机同时工作
振荡频率一般低于12MHz外部振荡器价格贵
图1内部时钟方式图2外部时钟方式2.4时钟电路与时序2、时序123振荡周期:最小时间单位。若晶振频率为fosc,振荡周期Tosc=1/fosc状态周期:振荡信号二分频信号,1个状态周期=2个振荡周期机器周期:CPU完成一个基本操作所需时间,1个机器周期=12个振荡周期指令周期:执行一条指令所需时间,1个机器周期=1或2或4个机器周期4图3单片机周期之间的关系02AT89S52的硬件结构01硬件组成050203存储器结构单片机的CPU单片机引脚04时钟电路与时序06单片机工作方式2.5单片机存储器结构1、程序存储器(ROM):存放单片机程序和一些固定常数下载程序(编程):编程器方式或在线编程(ISP)1图1编程器图2ISP下载方式2.5单片机存储器结构1、程序存储器(ROM):存放单片机程序和一些固定常数存储器容量:2片外可扩展为64KB,地址范围为0x0000~0xFFFFAT89S52片内ROM容量为8KB,地址范围0x0000~0x1FFF图
3单片机2.5单片机存储器结构1、程序存储器(ROM)3特殊程序存储器地址(7个)序号中断源入口地址(汇编语言用)中断类型号(C语言用)1INT00x000302T00x000B13INT10x001324T10x001B35串行口0x002346T20x002B5启动地址0x00007C51编程时,用户无须考虑起始地址和中断源在ROM中的存放地址,C51编译软件会按照上述规定,自动安排程序的存放地址。!2.5单片机存储器结构2、数据存储器(RAM):存放数据1片内数据存储器的结构划分:存储器容量为256B,0x00~0xFF(1)工作寄存器区(0x00H~0x1F)(2)位寻址区(0x20~0x2F)128个位地址,位地址范围为0x00~0x7F。RS1RS0工作寄存器区000区(0x00-0x07)011区(0x08-0x0F)102区(0x10H-0x17)
113区(0x18-0x1F)2.5单片机存储器结构2.5单片机存储器结构(3)通用RAM区(0x30~0xFF)可作为数据区或堆栈区域(后进先出)堆栈作用:保护断点(子程序、中断)和现场保护堆栈操作:入栈(PUSH)和出栈(POP)堆栈指针(SP):其内容指出堆栈顶部所在位置SP是一个SFR,地址为0x81单片机复位后,SP中的内容为0x07堆栈结构:向上生长型入栈:SP先加1,再把1字节数据压入堆栈;出栈:
1字节数据弹出堆栈后,SP再减1C51编程由编译软件自动分配堆栈区域,用户不用设置。2.5单片机存储器结构2、数据存储器(RAM)1片内数据存储器的结构划分:存储器容量为256B,0x00~0xFF2片外数据存储器:最多扩展64KB的RAM,地址范围0x0000~0xFFFF3、特殊功能寄存器(SFR)AT89S52的SFR共32个32个离散分布在该区域映射地址:80H~FFHSFR与片内RAM统一编址未使用单元无定义2.5单片机存储器结构3、特殊功能寄存器(SFR)表
SFR的名称和地址有12个特殊功能寄存器具有位地址和位名称,这里位名称和位地址等价!凡是可以进行位寻址的SFR,其字节地址的末位只能是0H或8H2.5单片机存储器的结构4、C51中的数据类型定义与存储器之间的关系单片机中能够存储数据的区域C51编译器完全支持52单片机的硬件结构,可访问52硬件系统的所有部分。该编译器通过将变量、常量定义成不同的数据、存储类型的方法,将它们定位在不同的存储区的单元中。2.5单片机存储器的结构4、C51中的变量定义与存储器之间的关系数据类型1常量(变量)数值大小不同,所占据的数据存储空间就不同变量定义:数据类型符变量名1[
=初值],变量名2[
=初值]…数据类型符字节数位数表示数的范围unsigned
char180~255signedchar18-128~127unsigned
int2160~65535signedint216-32768~32767unsigned
long432-2147483648~2147483647signedlong4320~4294967295float432±1.75494E-38~±3.402823E+38doublefloat864±1.75494E-38~±3.402823E+38bit
10或12.5单片机存储器的结构3、C51中的变量定义与数据存储器之间的关系数据类型1数据类型符字节数位数表示数的范围unsigned
char180~255signedchar18-128~127unsigned
int2160~65535signedint216-32768~32767bit
10或1unsignedchary=0x05;bit
x=1;【例】unsigned
int
z=0x0005;
这些变量具体存在单片机存储器哪些地址里?变量定义:数据类型符变量名1[
=初值],变量名2[
=初值]…【缩写形式】#defineucharunsignedchar#defineuintunsignedintuchary=0x05;uintz=0x0005;2.5单片机存储器的结构unsignedchary=0x05;bit
x=1;【例】unsigned
int
z=0x0005;
这些变量具体存在单片机片内存储器哪些地址里?注:定义变量只声明数据类型,没指定存储区域。由编译器自动分配存储区如何将变量定义到指定的片内位寻址或片外存储区域内?数据类型12.5单片机存储器的结构存储类型2uchardataa=0x05;ucharbdatab=0x05;ucharidatac=0x05;ucharpdatad=0x05;ucharxdatae=0x05;ucharcodetab[]={0x01,0x02,0x03,0x04};【例】这些变量具体存在单片机存储器哪些区域里?变量定义:数据类型符
[存储类型]
变量名1[=初值],变量名2[=初值],…;存储类型字节存储空间data1片内RAM0x00~0x7F直接寻址bdata1片内RAM0x20~0x2F位寻址区idata1片内RAM0x00~0xFF间接寻址pdata1片外RAM0x00~0xFFxdata2片外RAM的0x0000~0xFFFFcode2程序存储器区0x0000~0xFFFF2.5单片机存储器的结构存储类型2uchardataa=0x05;ucharbdatab=0x05;ucharidatac=0x05;ucharpdatad=0x05;ucharxdatae=0x05;ucharcodetab[]={0x01,0x02,0x03,0x04};【例】C51如何在代码中指定存储器的具体地址(绝对地址)?2.5单片机存储器的结构绝对地址访问3绝对宏:绝对宏命令在“absacc.h”#include<absacc.h>#define
NRAM
DBYTE[0x30]
#define
PORTA
XBYTE[0xFFF0]unsignedcharREAD_PORTA;voidmain(void){ while(1)
{
NRAM=0x01;
READ_PORTA
=PORTA;
}}【例】将0x01存入片内RAM0x30内并
读取片外0xFFF0地址的内容code区CBYTE(字节形式)CWORD(字形式)data区DBYTE
(字节形式)DWORD(字形式)xdata区pdata区XBYTE(字节形式)XWORD(字形式)PBYTE(字节形式)PWORD(字形式)(片外)(片外)(片内)#define变量名宏定义[绝对地址]
宏定义名称(ROM)2.5单片机存储器的结构绝对地址访问3_at_关键字#include<reg52.h>unsignedchardataNRAM
_at_0x50;voidmain(void){
NRAM=0x01;
while(1);}【例】将0x01存入片内RAM0x50里格式:地址常数:指定变量的绝对地址,必须位于有效的存储器空间内使用_at_定义的变量必须为全局变量bit类型的变量及函数不能使用_at_#include<reg52.h>unsignedcharxdatabuffer[8]_at_0x40;voidmain(void){unsignedcharj;for(j=0;j<8;j++){buffer[j]=0;}
while(1);}【例】片外RAM0x40开始的8个单元清0数据类型[存储类型]
变量名
_at_地址常数2.5单片机存储器的结构C51语言的特殊功能寄存器及位变量定义4特殊功能寄存器和特殊功能位使用前必须要先定义,才可以使用8位特殊功能寄存器的C51定义sfr
特殊功能寄存器名称=特殊功能寄存器地址;16位特殊功能寄存器的C51定义sfr16特殊功能寄存器名称=特殊功能寄存器地址;特殊功能位的C51定义sbit用户定义名称=特殊功能位名称;sfrP0=0x80;sfr16DPTR0=0x82;sbitLED0=P0^0;2.5单片机存储器的结构C51语言的特殊功能寄存器及位变量定义4为了用户编程方便,C51把52单片机常用的特殊功能寄器和可寻址的特殊功能位进行了定义,放在reg52.h头文件中。程序使用#include<re52.h>,可直接使用SFR名称和可寻址位名称P0~P3通用I/O口的特殊功能位在reg52.H文件没给出定义,需用户自定义#include<reg52.h>sbitLED0=P0^0;voidmain(void){
RS1=0;RS0=1;
while(1)
{
P1=0x01;LED0=0;}}02AT89S52的硬件结构01硬件组成050203存储器结构单片机的CPU单片机引脚04时钟电路与时序06单片机工作方式2.6单片机工作方式1、片内ROM编程(包括校验)方式下载程序(编程):编程器方式或在线编程(ISP)1图1编程器图2ISP下载方式4种工作方式:编程、复位、程序执行和低功耗方式。2.6单片机工作方式二、复位工作方式复位条件1:在RST(9脚)加上大于2个机器周期的高电平复位电路:2图3上电和按键复位电路复位作用:单片机启动时需要复位;当程序出错(如程序跑飞);操
作错误使系统处于死锁状态时,使AT89S52摆脱“跑飞”
或“死锁”状态而重新启动程序。2.6单片机工作方式2、复位工作方式复位后状态3PC指针被初始化为0000H片内RAM的内容保持不变SFR初值(SP)=07H(P0)=FFH(P1)=FFH(P2)=FFH(P3)=FFH(其他SFR)=FFH寄存器
复位状态
寄存器
复位状态Acc0x00DP1H0x00PSW0x00DP1L0x00B0x00TMOD0x00SP0x07TCON0x00DPTR0x0000TH0TL00x0000P0~P30xFFTH1TL10x0000IP0bxx000000SCON0x00IE0b0x000000SBUF0bxxxxxxxxDP0H0x00PCON0b0xxx0000DP0L0x00AUXR0bxxx00xx0WDTRST0bxxxxxxxxAUXR10bxxxxxxx02.6单片机工作方式2、复位工作方式看门狗定时器(WDT)的使用4程序“跑飞”或“死循环”,没有及时复位,采用“看门狗”技术看门狗部件包含1个14位看门狗定时器和看门狗复位寄存器
程序正常执行时,在16384μs内不断复位清“0”看门狗定时器。2.6单片机工作方式2、复位工作方式看门狗定时器(WDT)的使用5#include<reg52.h>sfrWDTRST=0xa6
//reg52.h中没有声明WDTRST特殊功能寄存器......voidmain(){
WDTRST=0x1e;//启动看门狗运行
WDTRST=0xe1;.....;
while(1)//无限循环
{
WDTRST=0x1e;//清0看门狗并启动运行
WDTRST=0xe1;
......;//执行时间必须小于16384μs(系统时钟为12MHz时)
}}2.6单片机工作方式3、程序执行方式单片机基本工作方式,即CPU依次从ROM读取指令执行程序的工作过程。四、低功耗工作方式2种工作模式:待机(空闲)模式和掉电保护模式IDL=1待机模式PD=1掉电保护模式GF1、GF0:用户标志位SMOD:串行通信波特率选择━:保留位CPU不工作振荡器仍然运行外围电路工作SFR、RAM保持之前状态路振荡器停止工作所有功能部件停止工作SFR、RAM保持之前状态2.6单片机工作方式4、低功耗工作方式待机(空闲)模式IDL=1CPU不工作;振荡器仍然运行;外围电路工作(中断、定时器、串口等);SFR、RAM保持之前状态。中断退出:任何中断被响应,IDL=0(硬件)退出待机模式,进入中断服务程序。1待机模式进入:待机模式退出:硬件复位退出;复位时,IDL=0,退出空闲模式,单片机从头开始执行程序。2.6单片机工作方式4、低功耗工作方式掉电保护模式PD=12掉电保护模式进入:振荡器停止工作;所有功能部件停止工作;SFR、RAM保持之前状态掉电保护模式退出:中断退出:中断使单片机退出掉电模式,程序从原来停止处继续运行。硬件复位退出:硬件复位使单片机退出掉电模式,程序从头开始运行。本章小结1.掌握单片机最小系统常用电路设计。由电源、晶振、复位电路和程序存储器选择电路组成。2.单片机的CPU由运算器和控制器构成。3.单片机的时序信号包括振荡周期、状态周期、机器周期和指令周期。掌握机器周期和振荡周期的关系。4.单片机的存储器结构包括4个独立的物理空间,片内RAM(256B)、片外RAM(64KB)、片内ROM(8KB)、片外ROM(64KB)。重点掌握片内RAM的空间分布。5.AT89S52单片机有32个SFR,C51编程中SFR以及特殊功能位必须通过关键字sfr、sbit定义才可使用。SFR的定义在头文件reg52.h里,使用时包含该头文件。但I/O口的特殊功能位需要自定义。6.掌握程序状态字PSW的各位功能。
7.了解C51中的数据与存储器之间的关系。8.了解单片机的工作方式。单片机输出显示控制03介绍单片机与常用的发光二极管、数码管、LED点阵显示屏、LCD液晶显示器的接口设计与软件编程。3单片机输出显示控制01单片机并行I/O端口的内部结构0203单片机控制数码管单片机控制发光二极管0405单片机控制液晶显示器LCD单片机控制LED点阵显示3.1单片机并行I/O端口的内部结构G1G20结论:P0口作为输出口使用,需需外接上拉电阻,一般为4.7KΩ或10KΩ1P0做通用输入输出口使用P0做输出口使用一、P0口3.1单片机并行I/O端口的内部结构一、P0口+5VG1G201P0做通用输入输出口使用结论:P0口作为输入口使用,需先写“1”P0做输入口使用准双向口:高电平、低电平3.1单片机并行I/O端口的内部结构G1G212P0做数据/地址总线使用一、P0口P0口地址总线低8位P0做地址总线输出使用控制线13.1单片机并行I/O端口的内部结构一、P0口G1G20P0做数据线输入使用2P0做数据/地址总线使用结论:P0口地址总线低8位P0口数据总线(8位)控制线0此时不能作为通用的I/O端口CPU写入1,下方场效应管截止上方场效应管截止高阻状态双向口:高电平、低电平、高阻3.1单片机并行I/O端口的内部结构二、P1口P1口做通用输入输出口使用结论:读锁存器内部总线读引脚DCLQ锁存器P1.XVccP1作为输入口使用,需先写“1”P1作为输出口使用,无需外接上拉电阻3.1单片机并行I/O端口的内部结构结论:1P2做通用输入输出口使用三、P2口DCLQ.锁存器MUXP2.x地址控制读锁存器内部总线读引脚VccP2作为输入口使用,需先写“1”P2作为输出口使用,无需外接上拉电阻3.1单片机并行I/O端口的内部结构结论:2P2做地址总线使用三、P2口DCLQ.锁存器MUXP2.x地址控制读锁存器内部总线读引脚VccP2口作为地址总线高8位,与P0口构成16位地址,寻址64KB地址空间P2做地址总线使用,就不能再做普通I/O口使用3.1单片机并行I/O端口的内部结构结论:1P3做通用输入输出口使用四、P3口P3作为输入口使用,需先写“1”P3作为输出口使用,无需外接上拉电阻读锁存器内部总线读引脚DCLQ锁存器P3.x第二功能输出端第二功能输入端Vcc13.1单片机并行I/O端口的内部结构P3第二功能四、P3口读锁存器内部总线读引脚DCLQ锁存器P3.x第二功能输出端第二功能输入端Vcc21
第二输出功能
D锁存自动置13.1单片机并行I/O端口的内部结构P3第二功能四、P3口读锁存器内部总线读引脚DCLQ锁存器P3.x第二功能输出端第二功能输入端Vcc21
第二输入功能
D锁存自动置1P3口第一功能与第二功能,究竟是使用哪个功能,完全是由单片机执行的指令控制来自动切换的,用户不需要进行任何设置。
第二功能输出端自动置113.1单片机并行I/O端口的内部结构1P0:通用I/O使用,每位可驱动8个LSTTL五、I/O驱动能力P0口的某位输出高电平时,可提供400μA的拉电流P0口某位为低电平(0.45V)时,可提供3.2mA的灌电流2P1~P3:通用I/O使用,每位可驱动4个LSTTL输出高电平,则输出的拉电流仅为数百微安输出低电平,灌电流从单片机外部流入内部,则将大大增加流过的灌电流值单片机任何一个端口要想获得较大的驱动能力,要采用低电平输出3单片机I/O口驱动能力不够,要外接驱动电路4三极管、ULN2003、L298N、L9110等驱动芯片3.1单片机并行I/O端口的内部结构P0口~P3口使用方法总结P0~P3作为通用I/O口时,为准双向口,只有高电平和低电平2个状态;P0~P3作为输入口使用时,要先向端口写“1”;123P0作为输出口使用时,漏极开路,要外接上拉电阻(1KΩ~10KΩ);45P1~P3作为输出口使用时,内部有上拉电阻,不用外接上拉电阻;67并行总线构成:P2口(高8位)和P0口(低8位)构成16位地址总线;P0口数据总线,P0在ALE引脚控制下分时复用。P0~P3只要作为第二功能使用,就不能再做通用I/O使用了。P0~P3的第一功能和第二功能,由单片机执行的指令控制自动切换,用户不需要进行任何设置。3单片机输出显示控制01单片机并行I/O端口的内部结构0203单片机控制数码管单片机控制发光二极管0405单片机控制液晶显示器LCD单片机控制LED点阵显示3.2单片机控制发光二极管一、发光二极管简介图1直插式LED图2贴片式LED图4LED驱动电路图3LED符号正向导通电压是1.7~2.2V;限流电阻阻值可选150Ω~3kΩ之间电流越大,烧坏的速度也就越快。在设计时需加限流电阻工作电流一般在1~20mA。!3.2单片机控制发光二极管二、单片机与LED的连接图6单片机P1~P3口与LED的连接图5单片机P0口与LED的连接上拉电阻:1~10kΩ之间选取。(a)LED亮单片机上电后现象(a)(b)(c)(d)(b)LED不亮限流电阻:150Ω~3kΩ之间P1~P3口如何连接LED??3.2单片机控制发光二极管三、点亮一个发光二极管仿真实例任务要求:控制1个发光二极管点亮。图7P0口与LED连接图8P1口与LED连接1硬件电路设计3.2单片机控制发光二极管三、点亮一个发光二极管仿真实例任务要求:控制1个发光二极管点亮。2软件设计#include<reg52.h>sbitLED=P0^0;voidmain(){
while(1)
{
LED=0;
}
}#include<reg52.h>sbitLED=P0^0;voidmain(){
LED=0;while(1){
;}}分析这2段代程序的运行过程。3.2单片机控制发光二极管三、点亮一个发光二极管仿真实例任务要求:控制1个发光二极管点亮。3仿真运行图9KeilC软件编译结果图10点亮LED运行效果图3.2单片机控制发光二极管三、点亮一个发光二极管仿真实例扩展任务要求:控制1个发光二极管闪烁。#include<reg52.h>#defineucharunsignedsbitLED=P0^0;voidmain() { while(1){uinti,j;
LED=0;
for(i=0;i<247;i++)for(j=0;j<100;j++);
LED=1;
for(i=0;i<247;i++)for(j=0;j<100;j++);
}}3.2单片机控制发光二极管三、点亮一个发光二极管仿真实例表1C
51延时程序设计方法序号设计方法例句说明1for循环结构for(i=0;i<100;i++);不精确定时2while循环结构i=250;while(i--);不精确定时3定时器定时TMOD=0x01;TH0=0xee;TL0=0x00;TR0=1精确定时4库函数_nop_();//一个机器周期的时间精确定时voiddelay(uint
xms)//ms延时函数{
uint
i,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}不带参数延时函数的写法voiddelay()//200ms延时函数{uinti,j;for(i=0;i<247;i++)for(j=0;j<100;j++);}12带参数延时函数的写法和调用扩展任务要求:控制1个发光二极管闪烁。#include<reg52.h>#defineuintunsignedintsbitLED=P0^0;voidmain() { while(1){uinti,j;
LED=0;
for(i=0;i<247;i++)for(j=0;j<100;j++);
LED=1;
for(i=0;i<247;i++)for(j=0;j<100;j++);
}}用延时函数改写这段程序?voiddelay(uint
xms){uint
i,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}#include<reg52.h>#defineuintunsignedintsbitLED=P0^0;voiddelay(uint
xms){uint
i,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}void
main() { while(1){LED=0;
delay(200);
LED=1;
delay(200);
}}#include<reg52.h>#defineuintunsignedintsbitLED=P0^0;voiddelay(uint
xms);void
main() { while(1){LED=0;
delay(200);
LED=1;
delay(200);
}}voiddelay(uint
xms){uint
i,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}3.2单片机控制发光二极管四、流水灯仿真实例任务要求:控制8个发光二极管按照一定的时间间隔依次轮流点亮。1硬件电路设计代码是否需要写8次特殊功能位定义语句?3.2单片机控制发光二极管四、流水灯仿真实例任务要求:控制8个发光二极管按照一定的时间间隔依次轮流点亮。2软件设计状态P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0编码1111111100xfe2111111010xfd3111110110xfb4111101110xf75111011110xef6110111110xdf7101111110xbf8011111110x7f表2流水灯的引脚电平状态移位(左移或右移)赋值数组:循环赋值C51逻辑运算:循环左移_crol_intrins.h库函数:左移“<<”右移“>>”循环右移_cror_依次赋值3.2单片机控制发光二极管四、流水灯仿真实例C51逻辑运算:循环左移_crol_intrins.h库函数:左移“<<”右移“>>”循环右移_cror_3.2单片机控制发光二极管四、流水灯仿真实例任务要求:控制8个发光二极管按照一定的时间间隔依次轮流点亮。2软件设计(1)基于库函数的流水灯程序设计#include<reg52.h>#include<intrins.h>
#defineucharunsignedchar#defineuintunsignedint voiddelayms(uinti);voidmain() { P2=0xfe;while(1){delay(500);
P2=_crol_(P2,1);}}#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint voiddelay(uinti);voidmain() { while(1){uchari,temp=0x01
;
for(i=0;i<8;i++){P2=~temp;
temp=temp<<1;
delay(500);}}}(2)基于逻辑运算符的流水灯程序设计3.2单片机控制发光二极管四、流水灯仿真实例任务要求:控制8个发光二极管按照一定的时间间隔依次轮流点亮。2软件设计(3)基于数组的流水灯程序设计#include<reg52.h>#defineucharunsignedchar #defineuintunsignedint ucharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddelayms(uinti);
voidmain() { while(1){uchari;for(i=0;i<8;i++){
P2=tab[i];delayms(500);} }}3单片机输出显示控制01单片机并行I/O端口的内部结构0203单片机控制数码管单片机控制发光二极管0405单片机控制液晶显示器LCD单片机控制LED点阵显示3.3单片机控制数码管一、单个数码管的显示原理共阳极数码管阳极连在一起LED点亮条件COM端接地段码端给高电平LED点亮条件共阴极数码管阴极连在一起图1数码管外形图1数码管引脚
(a)共阴极(b)共阳极COM端高电平段码端给低电平3.3单片机控制数码管七段共阳极数码管段码表数字dpgfedcba段码abcdefgdp
0110000000xC01111110010xF92101001000xA43101100000xB04100110010x995100100100x926100000100x827111110000xF88100000000x809100100000x90A100010000x88b100000110x83C110001100xC6d101000010xA1E100001100x86F100011100x8Eunsignedcharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳0-F3.3单片机控制数码管显示字符共阴极段码共阳极段码显示字符共阴极段码共阳极段码00x3F0xC080x7F0x8010x060xF990x6F0x9020x5B0xA4A0x770x8830x4F0xB0b0x7C0x8340x660x99C0x390xC650x6D0x92d0x5E0XA160x7D0x82E0x790x8670x070xF8F0x710x8E表3-5共阴、共阳数码管的段码表3.3单片机控制数码管二、一位数码管显示仿真实例任务要求:在1位共阳极数码管上循环显示“0~F”。1硬件电路设计3.3单片机控制数码管二、一位数码管显示仿真实例任务要求:在1位共阳极数码管上循环显示“0~F”。2软件设计共阳极数码管“0~F”的段码1234ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};数码管显示“0~F”中的一个P2=seg[i]构成16次循环:for语句字符之间要加一定的延时delay函数分析3.3单片机控制数码管二、一位数码管显示仿真实例任务要求:在1位共阳极数码管上循环显示“0~F”。2软件设计共阳极数码管“0~F”的段码1234ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};数码管显示“0~F”中的一个P2=seg[i]构成16次循环:for语句字符之间要加一定的延时delay函数分析#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voiddelay(uintxms);voidmain(){while(1){uchari;
for(i=0;i<16;i++){P2=seg[i];
delay(500);}}} 3.3单片机控制数码管三、多个数码管的显示原理单个数码管和单片机连接方法:多个数码管和单片机如何连接?公共端接地或高电平段码端与一个I/O口相连3.3单片机控制数码管三、多个数码管的显示原理01静态显示方式02动态显示方式公共端都连接在一起段码端分别与一个I/O口相连公共端分别与一个I/O引脚相连段码端都与一个I/O口相连同时显示,无闪烁依次显示,有闪烁3.3单片机控制数码管四、两位数码管静态显示仿真实例任务要求:在2位共阳数码管采用静态显示方式显示25。1硬件电路设计Seg1段码端接P0口Seg2段码端接P2口P0=0xa4;P2=0x92;ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳0-92软件设计#include<reg52.hvoidmain(void){
P0=0xa4;
P2=0x92;while(1);}3.3单片机控制数码管四、两位数码管静态显示仿真实例任务要求:在2位共阳数码管采用静态显示方式显示25。3仿真运行3.3单片机控制数码管五、四位数码管动态显示仿真实例任务要求:在4位共阳数码管采用动态显示方式稳定显示“3210”
实物图四位动态共阳数码管内部结构引脚图3.3单片机控制数码管五、四位数码管动态显示仿真实例任务要求:在4位共阳数码管采用动态显示方式稳定显示“3210”
P0abcdefgdpabcdefgdpabcdefgdpabcdefgdpP2.3P2.2P2.1P2.0
0001
0010
01
00
10
00w0=1;
P0=0xc0;delay(2)w0=0;P0=0xf9;delay(2)sbitw0=P2^0;sbitw1=P2^1;sbitw2=P2^2;sbitw3=P2^3;w1=1;w1=0ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};P0=0xff;P0=0xff;3.3单片机控制数码管五、四位数码管动态显示仿真实例任务要求:在4位共阳数码管采用动态显示方式稳定显示“3210”
P0abcdefgdpabcdefgdpabcdefgdpabcdefgdpP2.3P2.2P2.1P2.0P0=0xf9;delay(2)w1=1;w1=0P0=0xff;送段码送位选码延时消隐关闭位选码扫描率大于100Hz,整体扫描时间小于10ms,无闪烁。延时时间的计算整体扫描时间=单个数码管点亮时间*数码管个数数码管的消隐现象:有时会出现数码管不应该亮的段,似乎有微微的发亮。P0=0xff;消隐:单个数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024工程保洁合同范文
- 电工实践课程设计
- 2024虚拟办公室项目委托制作合同正规版样本
- 2024盘扣脚手架租赁合同
- 电子钟的设计课程设计
- 电子负载 课程设计
- 电子红外监控研究报告
- 电子科大雷达课程设计
- 电子电路课程设计
- 电子气压课程设计
- 第9章-行政机关的其他行为
- GB/T 44260-2024虚拟电厂资源配置与评估技术规范
- 口腔科无菌操作课件
- 休克与血流动力学监测课件
- 环保公司风险分析及防范措施
- 中国食物成分表2018年(标准版)第6版
- 中国心力衰竭诊断和治疗指南2024解读
- 浙江省五校联盟2023-2024学年高三下学期3月联考英语试题(解析版)
- 2024年江西省财投供应链金融有限公司招聘笔试参考题库附带答案详解
- (2024年)戴明环(PDCA循环)管理培训教材课件
- 2024年政府工作报告基础知识试题及答案(100题)
评论
0/150
提交评论