Download presentation
Presentation is loading. Please wait.
1
任务1: 点亮你的LED----初识单片机
2
如何实现 软件设计 硬件电路设计 功能要求 引出问题
3
预备知识 电平特性 2进制与16进制的表示及转换 二进制数的逻辑运算 8051单片机介绍 C51基础知识
4
关于电平特性 数字电路中只有两种电平:高和低 (本课程中)定义单片机为TTL电平 高 +5V 低 0V RS232电平:计算机的串口
所以计算机与单片机之间通讯时需要加电平转换芯片max232(实验板上左下角)。
5
二进制 数字电路中的两种电平特性决定了它
6
十进制中的0-15分别表示为十六进制的0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 熟练掌握二进制与十六进制之间的转换。
规律:一般把四个二进制数放在一起转换成一个十六进制数,转换时先把二进制数转换成十进制数,再把十进制数转换成十六进制数。 如:0001B -> 1 -> 1H B表示为二进制,H为十六进制 1001B -> 9 -> 9H 1010B -> 10 -> AH > 44 -> 2CH
7
各种进位制的对应关系 十进制 二进制 十六进制 9 1001 1 10 1010 A 2 11 1011 B 3 12 1100 C 4 100 13 1101 D 5 101 14 1110 E 6 110 15 1111 F 7 111 16 10000 8 1000
8
“与”运算是实现“有0必0”这种逻辑关系的一种运算。 运算符为“· ”, 其运算规则如下:
二进制数的逻辑运算 1. “与”运算 “与”运算是实现“有0必0”这种逻辑关系的一种运算。 运算符为“· ”, 其运算规则如下: 0·0=0, ·1=1·0=0, ·1=1
9
2. “或”运算 “或”运算是实现“有1必1”这种逻辑关系的一种运算, 其运算符为“+”。 “或”运算规则如下: 0+0=0, =1+0=1, 1+1=1
10
“非”运算是实现“求反”这种逻辑的一种运算,如变量A的“非”运算记作 。 其运算规则如下:
3. “非”运算 “非”运算是实现“求反”这种逻辑的一种运算,如变量A的“非”运算记作 。 其运算规则如下: A
11
4. “异或”运算 “异或”运算是实现“相同为0,相异为1 ”这种逻辑的一种运算, 运算符为“”。其运算规则是:
12
功能要求 设计一个单片机最小控制系统 设计一个彩灯点亮的单片机控制系统,即在单片机的P2端口上接8个发光二极管,使其点亮。
13
系统方案设计 硬件电路设计 硬件方案确定 总设计电路原理图(SCH)
14
系统方案设计 单 片 机 LED彩灯电路 复位电路 时钟电路 电源电路 图1.1 LED彩灯闪烁控制系统组成方框图
15
硬件方案确定 复位电路 接口电路 设计 硬件方案 时钟 电路 设计 电源选择 单片机
16
硬件方案确定 ––单片机的选择 常用单片机系列
目前单片机产品有60多个系列, 1000多种型号, 流行体系结构有30多个系列, 门类齐全, 能满足各种应用需求。 单片机的类型 众多的单片机可以从不同角度进行分类。 按单片机数据总线的位数, 可将单片机分为4位、 8位、 16位、 32位。 单片机还可以从编程方式上分为OTPROM型、 Flash型、 ISP型、 IAP型及JTAG接口型; 从制造工艺技术上可分为普通MOS型、 CMOS型、 HMOS型、 CHMOS型和HCMOS型; 从功耗上可分为普通型和低功耗型; 从性价比上可分为普通型和经济型等。
17
目前流行的51内核的8位单片机 目前, 在国内市场上流行的单片机不下十几种, 占据主导地位的仍是51内核及其兼容单片机。 这些单片机和MCS 51单片机的指令完全兼容, 资料和开发设备比较齐全, 价格也比较便宜。 另外, 从学习的角度来看, 有了51单片机的基础后, 再学习其他单片机时则非常容易。 1. MCS 51系列单片机 MCS 51系列单片机是Intel公司生产的功能比较强、 价格比较低, 较早应用的单片机, 目前仍被广泛应用。 2. ATMEL公司的89系列单片机 美国ATMEL公司的89系列单片机是以8051核构成的, 它和8051系列单片机是兼容的系列。
18
MCS-51系列单片机配置一览表 系列 片内存储器(字节) 定时器 计数器 并行 I/O 串行 中 断 源 片内ROM 片内 RAM 无 有ROM 有EPROM Intel 51 子系列 8031 80C31 8051 80C51 (4K字节) 8751 87C51 128 字节 2x16 4x8位 1 5 52 8032 80C32 8052 80C52 (8K字节) 8752 87C52 256 3x16 6 ATEML 89C系列 (常用型) 1051(1K)/2051(2K)/4051(4K) (20条引脚DIP封装) 128 2 15 1 5 89C51(4K)/89C52(8K) (40条引脚DIP封装) 128/256 2/3 32 5/6
19
单片机的基本概念---单片机硬件结构 中央处理器CPU:8位,运算和控制功能 CPU
并行I/O口:4个8位的I/O口P0、P1、P2、P3。 中央处理器CPU:8位,运算和控制功能 时钟电路 CPU ROM RAM T0 T1 中断系统 串行接口 并行接口 P0 P1 P2 P3 TXD RXD INT0 INT1 定时计数器 内部ROM:4KB掩膜ROM,用于存放程序、原始数据和表格。 串行口:一个全双工串行口。 中断控制系统:5个中断源(外中断2个,定时/计数中断 个,串行中断1个) 时钟电路:可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZ 内部RAM:共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。 定时/计数器:两个16位的定时/计数器,实现定时或计数功能。 结构框图
20
8051单片机的基本组成 中央处理器CPU:8位,运算和控制功能 内部RAM:共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。 内部ROM:4KB掩膜ROM,用于存放程序、原始数据和表格。 定时/计数器:两个16位的定时/计数器,实现定时或计数功能。 并行I/O口:4个8位的I/O口P0、P1、P2、P3。 串行口:一个全双工串行口。 中断控制系统:5个中断源(外中断2个,定时/计数中断2 个,串行中断1个) 时钟电路:可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZ
21
单片机内部资源的三大指标: 硬件方案确定 ––单片机的选择 1.FLASH (程序存储空间<ROM>) 2.RAM(内存)
3.SFR(特殊功能寄存器)
22
STC89C52: 8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源。 P89V51RD+: 64KFLASH、1024字节RAM、32个IO口、3个定时器、1个UART、8个中断源、1个SPI、PWM、并且支持与KEIL连机进行在线仿真。 单片机的选择
23
特点:单片机可以运行程序,是单片机控制系统的核心。
单片机最小系统 三要素:电源电路、复位电路、晶振电路。 特点:单片机可以运行程序,是单片机控制系统的核心。
24
硬件方案确定 ––电源选择 AT89S52单片机的主要电源特性:电压操作范围为:4.0~5.5V 依据 电源确定 选择+5V的电源
25
硬件方案确定 ––时钟电路(1) 单片机的连接引脚 连接方法 XTAL1、XTAL2 ; 内部时钟方式 外部时钟方式 内部机器频率
F=fosc/12 内部时钟方式 C1和C2的一般取值 20~30pF陶瓷电容 连接方法 外部时钟方式
26
硬件方案确定 ––复位电路(1) 单片机的连接引脚 RST ; 连接电路 复位电路设计
27
硬件方案确定 ––复位电路(2) 1、复位后内部寄存器状态 PC=0000H、SP=07H、P0~P3=0FFH、其他均为00H。
2、电路参数选择 RST引脚出现的高电平持续两个机器周期以上的时间 RC电路的充电时间为:τ=R*C 依据 电路参数 R、C器件值得选择 R*C 〉2*TCN (TCN为机器周期)
28
通常红色贴片LED:电压1.6V~2.4V,电流2到20mA,在2到5mA亮度有所变化,5mA以上亮度基本无变化。
(5-2)/r= 2ma (5-2)/R = 20ma K 单片机(MCU),最小控制单元。首先,我们用单片机来控制一个灯的亮灭。
29
硬件方案确定 ––LED彩灯接口电路设计 (5V-2V)/10mA=300Ω 拉电流
高电平输出时,一般是对负载提供电流,其提供电流的数值叫“拉电流”; 灌电流 低电平输出时,一般是要吸收负载的电流, 其吸收电流的数值叫“灌电流”; (5V-2V)/10mA=300Ω 电阻的选择
30
硬件方案确定 ––系统电路图
31
单片机系统的PROTUES交互式仿真 实时显示系统输出结果 实时显示元器件 引脚电平
32
软件设计
33
易于编写、调试、理解 为什么要使用C语言? 编程实现:4772+4071=? 汇编语言:(12A4H+0FE7H=?) C语言:
MOV A,#0A4H; 被加数低8位→A ADD A,#0E7H; 加数低8位E7H与之相加,A=8BH,CY=1 MOV 40H,A; A→(40H),存低8位结果 MOV A,#12H; 被加数高8位→AADDC ADD A,#0FH; 加数高8位+A+CY,A=22H MOV 41H,A; 存高8位运算结果 C语言: unsigned int ans = ;
34
C语言VS汇编语言 比较项目 C语言 汇编语言 可读性 高 低 硬件涉及度 可移植性 复杂算法 容易 难 开发效率 运行效率 学习难度
35
第一个程序 /*ex101.c-点亮LED. */ //注释 #include <reg51.h> //预处理命令(头文件包含)
void main( ) //程序入口(主函数) { //函数体开始 P2=0x00; //功能语句 } //函数体结束 So, when you click the Run button, the message you get is what’s shown on the right. What’s really happening is that the DEBUG… command causes the BASIC Stamp to Send that message to the BASIC Stamp Editor using the serial cable. Reset button thing.
36
/*… */:对C程序的任何一部分作为注释,从/*开始后,一直到*/为止中间的任何内容都为注释
①注释 /*… */或// C程序中的“/* … */”或//称为注释,是程序编写者给程序阅读者留下的一些说明(注释),以帮助阅读者理解程序。编译器不对注释进行编译,只将它们当作空白看待。 /*… */:对C程序的任何一部分作为注释,从/*开始后,一直到*/为止中间的任何内容都为注释 //:语句注释,只对本行有效
37
②库函数与头文件包含命令include 库函数:系统提供的标准函数,程序可直接使用,
使用库函数必须将其有关说明信息写入程序。为了用户方便,系统定义库函数时,把一类相关库函数的说明信息,分别写在一些文件中。本例中使用了51单片机I/O口 ,其有关说明信息写在文件reg51.h中。所以在程序的开始加入了#include <reg51.h> “头文件包含”(命令include):指一个文件将另一个文件的内容全部包含进来。 头文件一般在C:\KELL\C51\INC下,INC文件夹里面有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。 在单片机中用C语言编程时,往往第一行就是头文件或者其它的自定义头文件。 #include<XXXX.h>的预处理命令
38
C-51的包含的头文件 通常有:reg51.h reg52.h math.h intrins.h ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h reg52.h (定义特殊功能寄存器和位寄存器); math.h (定义常用数学运算);
39
③ main函数 void main( ) { P1=0x00; }
任何C程序都必须有且只能有一个主函数main(),它是程序的入口,也是程序的出口。其中,main是函数名,()内可以包含一些参数;{ }的内容称为函数体,其包含若干条C程序语句;不同语句之间用分号分隔;一般情况下,每个程序都由一至多个函数组成; 表示main函数没有返回值 函数名 函数体 语句 void main( ) { P1=0x00; } 演示ex101
40
④语句 P2=0x00; C语言的主函数体由一些语句组成。每个语句由一个分号结束。如本例中,主函数的一个语句: P2=0x00; 说明:
P2是单片机的I/ O口,该语句功能是将LED点亮(共阳极);
41
C基本语句 C语言的语句可分为以下四类: 表达式语句 空语句 复合语句 流程控制语句
42
2. 空语句 用一个分号表示,其一般形式为: 表达式语句就是一个表达式加上一个分号。 其一般形式如下: 表达式; 如:a++; x=1; ;
执行表达式语句就是计算表达式的值 如:a++; x=1; 2. 空语句 用一个分号表示,其一般形式为: ; 程序执行空语句时需要占用一条指令的执行时间,但是什么也 不做。在C51程序中常常把空语句作为循环体,用于消耗CPU 时间等待事件发生的场合。
43
复合语句 用一对花括号{ }将多条语句组合在一起,在语法上相当于一条语句。组合在一起形成具有一定功能的模块。 1、一般形式: {
[内部数据说明;] 语句1; …… 语句n; } 注意: (1)在复合语句中说明的变量,是局部变量, 仅在复合语句中有效。 (2)复合语句的 } 之后,不能有分号。 (3)复合语句之间用“{}”分隔,内部各语句以;结束。 (4) 复合语句允许嵌套。即{}中或嵌套{}。
44
int x=3; printf(“x=%d”, x); } printf(“x=%d”, x); } printf(“x=%d”, x);
复合语句(程序块) 示例【例3.3】 main( ) { int x=1; int x=2; int x=3; printf(“x=%d”, x); } printf(“x=%d”, x); } printf(“x=%d”, x); }
45
C语言程序结构小结: 一个C语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。每个C程序都必须有(且仅有)一个主函数main(),程序的执行总是从主函数开始,调用其他函数后返回主函数main(),不管函数的排列顺序如何,最后在主函数中结束整个程序。 C语言程序中可以有预处理命令,预处理命令通常放在源程序的最前面。 C语言程序使用“;”作为语句的结束符,一条语句可以多行书写,也可以一行书写多条语句。
46
#include <reg51.h> //预处理命令 void main( ) //程序入口(主函数) { //函数体开始
/*xxxx.c 文件说明. */ #include <reg51.h> //预处理命令 void main( ) //程序入口(主函数) { //函数体开始 ………; //功能语句 } //函数体结束
47
认识C语言 结构化语言 丰富的数据类型 便于维护管理 与汇编语言相比,C语言的优点如下:
不要求编程者详细了解单片机的指令系统,但需了解单片机的存储器结构; 寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理; 结构清晰,程序可读性强; 编译器提供了很多标准库函数,具有较强的数据处理能力。
48
1号: 2号: 3号: 4号: 5号: 6号: 7号: 8号: 9号: 10号: 11号: 12号:
49
汇编语言程序: ORG 0000H ;程序开始 MOV P2,#00H ;送显示初值 END ;程序结束
50
1、牢记发光二极管参数和限流电阻计算方法。 2、理解单片机基本外围电路,以及单片机的I/O的概念。
作业 1、牢记发光二极管参数和限流电阻计算方法。 2、理解单片机基本外围电路,以及单片机的I/O的概念。 3、熟悉单片机仿真软件的使用。 4、初步了解单片机C语言程序设计。
Similar presentations