《趣味电子产品设计与制作》教案Word文件下载.docx

上传人:b****8 文档编号:22536908 上传时间:2023-02-04 格式:DOCX 页数:34 大小:1.19MB
下载 相关 举报
《趣味电子产品设计与制作》教案Word文件下载.docx_第1页
第1页 / 共34页
《趣味电子产品设计与制作》教案Word文件下载.docx_第2页
第2页 / 共34页
《趣味电子产品设计与制作》教案Word文件下载.docx_第3页
第3页 / 共34页
《趣味电子产品设计与制作》教案Word文件下载.docx_第4页
第4页 / 共34页
《趣味电子产品设计与制作》教案Word文件下载.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

《趣味电子产品设计与制作》教案Word文件下载.docx

《《趣味电子产品设计与制作》教案Word文件下载.docx》由会员分享,可在线阅读,更多相关《《趣味电子产品设计与制作》教案Word文件下载.docx(34页珍藏版)》请在冰豆网上搜索。

《趣味电子产品设计与制作》教案Word文件下载.docx

《基于C语言编程MCS-51单片机原理与应用》

《Protel99高级应用》

李学礼

胡伟

张培仁

赵晶

电子工业出版社

2008.6

人民邮电出版社

2003

清华大学出版社

2000

授课教师

明显诚汪科

职称

工程师

单位

工程训练中心

授课时间

注:

表中()选项请打“√”

【理、工科】

第一章8051单片机基础结构与内部资源

一、教学目的和要求

通过对单片机的基础特点、内部结构、外部硬件扩展、指令系统和简单的程序介绍,让同学们对8051单片机有个基础了解,同时由浅入深,进一步学习运用8051内部资源的C语言实现,包括中断、定时器/计数器以及串口等等。

二、教学重点

2.18051的内部基础结构

2.28051的内部资源使用

三、教学难点

3.18051单片机独特的内部结构

3.28051中断、定时器/计数器和串行口的使用

1.18051的内部结构

单片机是在一块硅片上集成了各种部件的微型计算机,这些部件包括中央处理器CPU,数据存储器RAM,程序存贮器ROM,定时器/计数器和多种IO接口电路。

8051是MCS-51系列单片机的一个产品。

MCS-51系列单片机是Intel公司推出的通用型单片机。

它的基本型产品是8051、8031和8751.这三个产品只是片内程序存储器的制造工艺不同。

8051片内程序存储器为掩膜型,在制造芯片时已将应用程序固化进去了,使它具有某种专用功能;

8031片内无ROM,使用时需外接ROM,8751片内ROM是EPROM型的,固化的应用程序可以方便的改写。

8051单片机内部结构可划分为CPU、存贮器、并行口、串行口、定时器/计数器、中断逻辑几部分。

中央处理器核心单元,算术逻辑单元ALU(算术运算,逻辑运算),操作数存于累加器ACC或暂存器中。

控制器执行程序指令过程,程序存贮器中取指令,进入指令寄存器IR,指令译码器ID译码,微操作信号用于控制单片机各部分动作。

时钟包括内部时钟和外部时钟。

内部时钟,晶振和微调电容组成的并联谐振电路构成稳定自激振荡器。

外部时钟,引入外部脉冲信号。

基本时序周期,微操作信号在时间上有严格的先后次序。

振荡周期是振荡源周期;

时钟周期是振荡周期的2倍;

机器周期包括6个时钟周期;

而指令周期指完成一条指令所占用的全部时间。

指令部件包括程序计数器PC,指令寄存器IR,指令译码器ID,数据指针DPTR,16位地址寄存器,寻址外部RAM,也可寻址外部ROM中表格数据。

8051的存储器组织将程序存贮器和数据存贮器分开,并各自有寻址机构和寻址方式(哈佛型结构单片机)。

8051单片机物理上有4个存贮空间,片内ROM,片外ROM,片内RAM,片外RAM,可在片外扩展RAM和ROM,各有64Kb的寻址范围。

8051有256B数据存贮器RAM,4KB程序存贮器ROM。

4KB的ROM,片内ROM和片外ROM公用,地址为0000H-0FFFH,1000H-FFFFH地址为片外ROM专用。

控制信号EA=1时,先片内ROM(4KB),指令地址超过0FFFH,自动转向片外ROM。

EA=0,只从片外ROM取指令。

程序存储器ROM的某些单元仅供系统使用,0000H-0002H所有执行程序的入口地址,0003H-002AH均匀分为5段,5个中断服务程序的入口,用户不应进入上述区域。

RAM在地址上和ROM重叠,8051通过不同信号选通ROM,RAM。

从外部ROM取指令时用选通信号PSEN,而从外部RAM读写数据采用RD和WR选通。

8051内部256B的RAM字节,00H-7FH,真正的RAM区;

80H-FFH,专门用于特殊功能寄存器(SFR)。

低128字节分三个区域(00H-7FH),00H-1FH四组工作寄存器,每组占用8个RAM字节,记为R0-R7,某一时刻,CPU只能使用其中一组工作寄存器。

20H-2FH共16个字节,128位,除做一般RAM读写外,还可对每一个字节的每一位进行操作。

30H-7FH,80个字节,一般的用户RAM区域。

8051单片机特殊功能寄存器中包含有堆栈指针SP。

8051单片机复位后,堆栈指针SP总是初始化到内部RAM的07H位置。

8051堆栈属于向上生长型,数据压入堆栈,SP内容自动加1作为本次进栈的地址指针,然后存信息。

8051并行接口P0-P3,P0口采用总线复用技术,P2口作地址的高8位,P1口只作IO口,P0,P2,P3有第二功能。

8051的内部资源包括串行口,定时器/计数器,中断。

8051的工作方式包括复位方式,程序执行方式,单步执行方式,低功耗操作方式,EPROM编程和校验方式。

8051的系统扩展主要包括外部程序存储器的扩展和数据存储器的扩展。

8051的寻址方式,指令中给出的地址寻找真实操作数地址的方式。

8051包括7种寻址方式,寄存器寻址。

直接寻址、寄存器间接寻址、立即寻址、变址寻址、相对寻址和位寻址。

8051指令系统包括数据传输指令、转移指令、算术运算指令和逻辑运算指令等。

1.28051的内部资源

一、中断

8051有5个中断源,有两个中断优先级,每个中断优先级可以编程控制,中断允许受到CPU开中断和中断源开中断的两级控制。

5个中断源包括:

外部中断请求0、外部中断请求1、片内定时器/计数器0溢出中断请求、片内定时器/计数器溢出中断请求1、片内串口发送/接收中断请求。

为了了解每个中断源的是否产生了中断,中断系统对应设置多个中断请求触发器实现记忆。

这些触发器包括定时器/计数器控制寄存器TCON,串口控制寄存器SCON,中断优先级寄存器IP,中断允许寄存器IE。

中断响应,8051单片机的每个机器周期采样各中断源的中断请求标志位,如果没有下述阻止条件:

1.CPU正在处理同级或更高级的中断;

2.现行机器周期不是所执行指令的最后一个机器周期;

3.正在执行的是RETI或是访问IE或IP的指令。

将在下一个机器周期响应被激活了的最高级中断请求。

CPU在中断响应后完成如下操作:

1.硬件清除相应的中断请求标志;

2.执行一条硬件子程序,保护断点,并转向中断服务程序入口;

3.结束中断时执行RETI指令,恢复断点,返回主函数。

同一优先级设置时,优先级由高至低的顺序是:

INT0-T/C0-INT1-T/C1-Serial。

寄存器组切换,当一个特定的任务正在执行,可能有更紧急的任务需要CPU处理,在一个具有优先级的系统里,CPU不是等待第一个任务完成,而是假定前一个任务已经完成,立即处理新任务。

若程序流程立即转向新任务,新任务使用的各寄存器破坏了第一个任务使用的中间信息。

当第一个任务重新执行时,寄存器的值可引起错误发生,解决的方法每次发生任务变化时执行一些指令,被称为上下文切换。

高优先级的中断可以中断正在处理的低优先级程序,因而必须注意寄存器组。

最好给每个优先级程序分配不同的寄存器组。

因此,中断服务函数的完整语法如下:

返回值函数名(参数)[模式][重入]interruptn[usingn]

{

}

当调用中断函数时,SFR中的ACC、B、DPH、DPL、PSW入栈。

二、定时器/计数器(T/C)

8051系列单片机至少有两个16位内部定时器/计数器,8052有三个定时器/计数器,两个基本定时器/计数器是T/C0和T/C1。

它们既可以编程为定时器使用,也可以编程为计数器使用。

若做定时器用,计数内部晶振驱动时钟;

若做计数器使用,计数输入管脚的脉冲信号。

定时器实际上也是工作在计数方式下,只不过对固定脉冲计数,由计数值可计算出时间,有定时功能。

T/C作定时器用时,对振荡源12分频的脉冲计数,每个机器周期计数值加1,1/12fosc=计数率,每2us计数值加1。

T/C作计数器用时,计数脉冲来自外部脉冲输入管脚T0、T1,当T0/T1脚上出现负跳变时,计数值加1,识别管脚上的负跳变需要2个机器周期,24个振荡周期,可计数最高外部脉冲频率为1/24fosc。

高于此计数率,计数出错。

与T/C有关的特殊功能寄存器包括计数寄存器TH和TL,控制寄存器TCON,方式控制寄存器TMOD,定时器/计数器2控制寄存器(T/C2)。

定时器/计数器的工作方式如下:

1.方式0,为13位T/C,由TH提供高8位,TL提供低5位的计数器,满计数值为2

,但启动前可以预置计数初值;

2.方式1,方式1与方式0基本相同,唯一区别在于计数寄存器的位数是16位,由TH和TL寄存器各提供8位,满计数值为2

3.方式2,是8位可自动重装载的T/C,满计数值为2

4.方式3,只适用于T/C0,当T/C0工作在方式3时,TH0和TL0成为两个独立的8位计数器。

只有将T/C1用作串口的波特率发生器时,T/C0才能工作在方式3,相当于增加了一个定时器。

5.T/C2的工作方式,T/C2包含一个16位重装载方式,计数溢出后,自动在瞬间重装载。

T/C2还有捕获方式,它把瞬时计数值传到另外的CPU可读取的寄存器对。

定时器/计数器的初始化,包括编程TMOD,置初值TH和TL,编辑TE,启动T/C。

计数初值计算,定时器工作方式下:

T/C对机器周期脉冲进行计数,根据晶振频率算出机器周期,一个机器周期为12/fosc。

那么自然可算出需要的计数初值。

计数器工作方式下,由于计数器向上计数,所以可置负数。

三、串行口

8051单片机片上有UART(通用异步接收/发送)用于串行通信,发送时数据由TXD端送出,接收时数据由RXD端输入。

有两个缓冲器SBUF,一个作发送缓冲器,另一个作接收缓冲器。

它是可编程的全双工的串行口。

短距离的机间通信可使用UART的TTL电平,使用驱动芯片可接成RS232C和通用微机进行通信。

波特率时钟必须从内部定时器1或定时器2获得。

与串行口有关的SFR包括串口控制寄存器SCON和电源控制寄存器PCON。

串行口的工作方式包括:

1.方式0,为移位寄存器输入/输出方式,串行数据通过RXD输入输出,TXD则用于输出移位时钟脉冲;

2.方式1,是10位异步通信方式,1位起始位(0),8位数据位和1位停止位

(1),其中的起始位和停止位是在发送时自动插入;

3.方式2和方式3,都是11位异步接收/发送方式,不同在于波特率不同。

串行口的初始化包括,定时器1工作方式,T/C1置初值,T/C1启动,串行口控制SCON,开CPU中断和源中断。

第二章8051的C语言编程

要求学生通过本章学习,了解8051的编程语言,掌握C51的数据与运算、流程控制语句、构造数据类型、函数以及模块化程序设计。

2.18051编程语言和C51程序结构

2.2C51的数据以及运算

2.3C51的构造数据类型

2.4函数的使用和模块化程序设计

3.1C51的程序结构和相关的编写规则

2.1C51数据与运算

一、数据与数据类型

数据,具有一定格式的数字或数值叫做数据。

数据类型,数据的不同格式叫做数据类型。

数据结构,数据按一定的数据类型进行的排列、组合、架构称为数据类型。

数据类型分为基本类型、构造类型、指针类型和空类型。

基本类型分为位型、字符型、整型、长整型、浮点型和精度浮点型。

构造类型分为数组类型、结构体类型、共用体和枚举。

二、C51运算符、表达式以及规则

常量,在程序运行的过程中,其值不能改变的量。

与变量一样,常量也有不同的数据类型。

变量,在程序运行过程中,其值可以改变的量。

一变量主要由两部分组成,一是变量名,一是变量值。

每一个变量都有一个变量名,在内存中占据一定的存储空间,并在该内存单元存放该变量的值。

在程序编制中使用大量不必要的变量类型,会导致C编译器相应的增加所调用的库函数的数量,以处理大量增加的变量类型。

最终会使程序变得过于庞大,运行速度减慢,甚至会在连接时,出现因程序过大装不进代码区的情况。

通常使用的数据变量包括位变量、字符变量、整型变量、长整型变量、浮点型变量。

地址为00H-7FH的低128字节片内RAM区被划分为3个区域。

通用寄存器区,可位寻址区,用户RAM区。

通用寄存器区被划分为4组寄存器,0组(00H-07H),1组(08H-0FH),2组(10H-17H),3组(18H-1FH);

每组含8个通用寄存器R0-R7,共32个通用寄存器。

寻址采用寄存器名寻址;

字节地址寻址。

当用寄存器名来寻址时,程序状态字中的PSW的RS1和RS0两位的值来决定寄存器组。

RS1(PSW.4)

RS0(PSW.3)

3组

1

2组

1组

0组

可位寻址区包括20H-2FH;

用户RAM区30H-7FH;

编译器会通过将变量、常量定义为不同的存贮类型,将它们定位在不同的存贮区中。

data/bdata,定义常量和变量时,编译器会将它们定义在片内RAM区,片内RAM区存放临时性传递变量或使用频率较高的变量。

Code存贮数据类型时,编译器将其定位在ROM或EPROM中,这里存放指令代码或其它非易变信息。

如果定义数据和变量时缺省存贮类型标识符,编译器会自动选择默认的存贮类型,有SMALL、COMPACT和LARGE指令限定。

8051单片机片内有21个特殊功能寄存器(SFR),它们分散在片内RAM区的高128字节中,地址80H-0FFH,对SFR的操作,只能用直接寻址方式。

C51与标C不同之处之一在于引入关键字“sfr”

SfrSCON=0x98;

Sfr16T2=0xcc;

需经常单独访问SFR中的位时,使用关键字“sbit”。

8051单片机芯片内带有4个8位的并行口,共32根I/O口线。

每个口主要由4部分组成:

端口锁存器,即SFR中的P0口-P3口;

输入缓冲器;

输出缓冲器;

引致芯片外的端口引脚。

其中P1-P3口为准双向口,P0口为双向3态口。

8051单片机芯片引脚中没有专用的地址总线和数据总线,向外扩展存贮器和接口时,由P2口输出地址总线的高8位(A15-A8)。

由P0口输出地址总线的低8位(A7-A0);

同时对P0口采用总线复用技术,P0口又兼作8位双向数据数据总线D7-D0,即由P0分时输出低8位地址或输入输出8位数据。

在不做总线扩展时,P0口和P2口可以作为普通的IO口使用。

除8051芯片上的4个I/O口以外,还可以在片外扩展硬件I/O口。

8051没有专用的I/O指令,其口地址与数据存贮器地址是统一编址的,即把一个口当作数据存贮器中的一个单元来看待。

8051的内部口是可以位寻址的,而大部分外部口是字节寻址的。

在给口指定硬件扩展电路时,可以在内部口中设置I/O控制线和信号线,而将外部口定义为字节宽度I/O口,这样在编程时可大大简化寻址,并避免使用许多逻辑屏蔽位。

在使用C51进行编程时,8051片内I/O口与片外扩展的I/O口可以统一在头文件中定义,也可在程序中定义。

对于片外扩展I/O口,根据硬件译码地址,将其视为片外数据存贮器的一个单元,使用“#define”语句进行定义。

位变量的C51定义的语法和语义。

函数课包含类型为“bit”的参数,也可将其作为返回值。

位变量不能定义为一个指针,不存在位数组,在位定义中允许定义存贮类型,位变量都被放入一位段中。

但存贮类型被限制为data或idata。

可位寻址对象指可以字节或位寻址的对象,该对象应位于8051片内可位寻址的RAM区。

C51算术运算符包括+,-,×

,/,﹪。

乘除,求余运算符优先级大于加减。

可以用强制类型转换运算符改变运算优先级。

C51关系运算符包括<

,>

,<

=,>

=,==,!

=,前4个优先级相同大于后2个。

关系运算符低于算术运算符,高于赋值运算符。

C51逻辑运算符包括&

&

,||,!

C51位操作运算符,&

和|。

自增减运算符++i,--i,i++,i--。

2.2C51流程控制语句

一、C51程序的基本结构及流程图

C51程序基本架构包括顺序结构,选择结构,循环结构。

选择结构又包括串行多分支和并行多分支。

顺序结构是一种基本的,简单的编程结构。

这种结构中,程序由低地址向高地址顺序执行指令代码。

选择结构中,程序首先对一个条件语句进行测试。

当条件为“真”时,执行一个方向上的程序流程。

所有的分支结构都使程序流程一直向前执行而使用循环结构可使分支流程重复地执行。

二、选择语句

选择语句之一if语句的三种形式:

if(表达式){语句};

if(表达式){语句1}else{语句2};

if(表达式1){语句1}

elseif(表达式2){语句2}…else{语句m};

if语句嵌套:

if()

if(){语句1}

else{语句2}

else

if(){语句3}

else{语句4}

switch/case语句

switch()

{

case常量表达式1:

{语句1}break;

case常量表达式2:

{语句2}break;

Default:

{语句n}break;

三、循环语句

作为构成循环结构的循环语句,一般是由循环体及循环终止条件两部分组成。

一组被重复执行的语句成为循环体,能否继续执行下去取决于循环终止条件。

实体循环语句包括以下三种,while语句,do-while语句,for语句。

while语句的一般形式:

while(表达式)

{语句/循环体/}

do-while语句的格式:

do

{执行语句}/循环体/

While(表达式)

for循环语句的一般形式:

for(表达式1;

表达式2;

表达式3)

{执行语句}

2.3C51构造数据类型

一、数组

C语言具有使用户能够定义一组有序数据项的能力。

这组有序的数据即数组。

数组是一组具有固定数目和相同类型成分分量的有序集合。

其成分分量的类型为该数组的基本类型。

如整型变量的有序集合称为整型数组,字符型变量的有序集合称为字符型数组。

这些整型或字符型变量是各自所属数组的成分分量,称为数组元素。

一维数组的定义方式:

类型说明符,数组名[整型表达式]

例如intidataa[6]={};

二维数组的定义方式:

类型说明符,数组名[常量表达式1][常量表达式2]

存取方式,顺序,按行存取,先存取第一行,依次下来。

字符数组的存储两种方式:

一种方式例如:

chara[10]={‘B’,‘E’,‘I’,‘’,‘J’,‘I’,‘N’,‘G’,‘\O’};

另一种方式例如:

chara[10]={“BEIJING”};

C编译器会自动在字符末尾加上结束符‘\O’(NULL),因此,字符数组的元素数目一定要比字符多一个。

二维字符数组,第一下标是字符串个数,第二个下标是每个字符串长度。

如,ucharcodemsg[][17]={};

第二个下标个数必须指定。

二、指针

指针是C语言中的一个重要概念,也是C语言的重要特色之一。

C语言区别于其他高级设计语言的主要特点就是它在处理指针时所表现出的能力和灵活性。

使用指针可以有效地表示复杂的数据结构,有效而方便的使用数组;

动态的分配存贮器,直接处理内存地址,在调用函数时还能输入或返回多于1个的变量值。

使用指针可以使程序简洁、紧凑、高效。

为了了解指针的基本概念,必须了解数据在内存中是如何存贮和读取的。

一旦程序中定义了一个变量,C编译器在编译时就给这个变量在内存中分配相应的内存空间。

通常C语言系统对一个整型变量分配两个字节的内存空间单元,对一个字符型变量分配一个字节内存单元,一个浮点型变量分配4个字节内存单元。

对于变量需要区分变量名和变量值的概念。

前者是一个数据的符号,后者是一个数据的内容。

对于内存单元区分两个概念,一个是内存单元地址,一个是内存单元内容。

前者是内存对该单元的编号,它表示着该单元在整个内存中的位置。

后者指在该内存单元中存放着的数据。

在变量和内存单元的对应关系中,变量的变量名与内存单元的地址相对应,变量的变量值与内存单元的内容相对应。

内存中变量名a,b,c是不存在的,对于变量值的存取通过地址进行。

两种访问方式,直接访问和间接访问。

直接访问找地址,取变量值。

间接访问,找存放变量a的地址的内存单元的地址。

取出变量a的地址,然后从找到的a的地址中再取数据变量值。

对于指针弄清两个概念,变量的指针和指向变量的指针变量(指针变量)。

变量的指针就是变量的地址,指向变量的指针变量,一个变量专门用来存放另一个变量的地址。

指针变量的定义:

类型识别符*指针变量名

例如int*ap;

float*pointer

指针变量的赋值,指针变量的引用是通过取地址运算符&

来实现。

ap=&

a;

(ap为指针变量,a为变量,&

为取地址运算符)

通过指针和指针变量来对内存进行间接访问,就需要用到指针运算符“*”。

“*”在指针变量定义和指针运算所代表的含义不同。

当定义时,*ap中的“*”是指针变量类型说明符;

当x=*ap时,“*”是指针运算符。

例如:

int*ap,inta,ap=&

a;

*ap=a;

&

*ap=&

*&

a与a等价。

*ap++=a++。

uchardata*xdatazz,外部RAM指针指向内部RAM数据。

数组指针和指向数组的指针变量,数组的指针=数组的起始地址,指向数组的指针变量。

inta[10];

int*app;

app=&

a[0];

app=a(数组名a可以代表数组a[10]的首地址)。

合起来定义:

int*app=&

int*app=a;

当定义完后,app=&

a[0];

通用指针引用数组元素:

app=&

a[0],则app+i=a+i是数组元素a[i]的地址。

*(app+i)或*(a+i)是app+i或a+i所指向的数组元素,即a[i];

指针变量可带下标app[i]=*(app+i);

app+1是指向数组首地址的下一个元素。

指针变量的运算:

p++,p指向下一个单元

*p++=*(p++)

*p++,*++p

(*p)++,指向的元素值加1,而非指针变量加1。

指向多维数组的指针和指针变量:

p→a[3][4],p=a,p+1=a+1;

p+2=a+2;

指向第几行首址。

*(p+1)+3=&

a[1][3],指向a[1][3]的地址;

*(*(p+1)+3)=a[1][3],表示a[1][3]的值;

*(p+i)+j相当于&

a[i][j],第i行第j列地址;

*(*(p+i)+j)相当于a[i][j];

“基于存贮器的”指针和“一般”指针,两种类型

“基于存贮器的”指针以存贮器类型为参量,存贮器类型定义即可放在定义的开头,也可直接放在定义的对象名之前。

charxdata*datapdx

datacharxdata

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1