C51单片机基础学习教程(C语言)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
读引脚
图 1.6 P2 口的结构图 P2 口作为普通 I/O 口
CPU 发出控制电平“0” ,使多路开关 MUX 倒向锁存器输出 Q 端,构成一个 准双向口。其功能与 P1 相同。
地址
控制 C
VCC
读锁存器 R
内部总线 写锁存器
D
Q
P2.X
CL 锁存器
1 0 MUX
1 T
P2.X引脚
读引脚
图 1.7 P2 口作为地址总线图 在系统扩展片外程序存储器扩展数据存储器且容量超过 256B 时,CPU 发出控 制电平“1”,使多路开关 MUX 倒内部地址线。
2
误。
读锁存器
地址/数据
控制C &
1
内部总线 写锁存器
D
Q
CL
P0.X 锁存器
_ Q
1 0 MUX
VCC
T1 P0.X引脚
T2
器
地址/数据 1
控制C &
VCC
T1
内部总线
写锁存器
D
Q
P0.X CL 锁存器
_ Q
1 0 MUX
T2
P0.X引脚
第 1 章 初步了解单片机
1.189C51 的引脚封装
总线型
非总线型
图2 89C2051的引脚封装
图1 89C51的引脚封装
1.1 基本的 51 单片机结构
1.2 P0 口的结构
图 1.2 51 单片机结构图
1
下图为 P0 口的某位 P0.n(n=0~7)结构图,它由一个输出锁存器、一个转换开 关 MUX、两个三态输入缓冲器和输出驱动电路及控制电路组成。从图中可以看出 P0 口既可以作为 I/O 用,也可以作为地址/数据线用。
特点:无返回值,无参。
任何一个 C 程序有且仅有一个 main 函数,它是整个程序开始执行的入口。
例:void main()
{
总程序从这里开始执行;
其他语句;
}
2.2 数据类型
1.C-51 数据的存储类型
例:数据类型
变量名
char
miao;
bit
flag;
unsigned char code table[]={};
3
读锁存器
地址
控制 C
VCC
R
内部总线 写锁存器
D
Q
P2.X
CL 锁存器
1 0 MUX
1 T
P2.X引脚
读引脚
图 1.8 P2 口作为数据总线图 1.4 P1 口的内部结构
P1 口是 80C51 的唯一的单功能口,仅能用作数据输入输出口,它由一个输出 锁存器、两个三态输入缓冲器和输出驱动电路组成----准双向口。同 P2 口相同, 内部设有上拉电阻(约 30KΩ)。
目录 第 1 章 初步了解单片机.................................... 1 第 2 章 了解 uVision 3 与 Keil C ........................... 7 第 3 章 Proteus 入门及 IO 口 .............................. 16 第 4 章 数码管显示应用................................... 19 第 5 章 键盘的应用...................................... 29 第 6 章 定时/计数器...................................... 39 第 7 章 中断的应用 ...................................... 44 第 8 章 串行口应用 ...................................... 48 第 9 章 单片机学习板制作................................. 54 第 10 章 AD 转换器的应用 ................................. 57 第 11 章 DA 转换器的应用 ................................. 65 第 12 章 液晶的应用仿真.................................. 73
8
图 2.7 在 2 区输入程序,再点击 3 保存 图 2.8 将保存的 test1.c 加入工程
9
图 2.9 编译工程
图 2.10 调试运行程序 图 2.11 参数设置
10
图 2.12 选中 Create HEX 产生 HEX 文件
图 2.13 生成可烧写的 HEX 文件 2.2 Keil C 语言的基本结构 1.指定头文件 #include<reg52.h> //加载头文件 2.声明区 unsigned int [自定义名]
18 19 20
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL1 XTAL2 GND
AT89C52
VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA ALE PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
6
第 2 章 了解 uVision 3 与 Keil C
2.1 Keil uVision3 软件 1. Keil uVision3 软件操作步骤
图 2.1 打开 Keil uVision3 软件
图 2.2 建立新工程
7
图 2.3 建立一个 test 的工程 图 2.5 选择单片机的型号 AT89C52 图 2.6 点击图中的 1 新建一个文件
int
led;
注意:变量名不能用 C 语言中的关键字表示。
2.C-51 的数据类型扩充定义
sfr:特殊功能寄存器声明
sfr16:sfr 的 16 位数据声明
sbit:特殊功能位声明
bit:位变量声明
例:sfr SCON = 0X98;
sfr16 T2 = 0xCC;
sbit LED = P0^2;
表 1:数据的存储类型
&
R1
1
T1
内部总线 写锁存器
D
Q
P0.X CL 锁存器
_ Q
1 0 MUX
P0.X引脚 T2
读引脚
图 1.4 P0 口的结构图 1.3 P0 口作为普通 I/O 口(输出口)
CPU 发出控制电平“0”封锁“与”门,将输出上拉场效应管 T1 截止,同时 使多路开关 MUX 把锁存器与输出驱动场效应管 T2 栅极接通。故内部总线与 P0 口同通。由于输出驱动级是漏极开路电路,若驱动 NMOS 或其它拉电流负载时, 需要外接上拉电阻。P0 的输出级可驱动 8 个 LSTTL 负载。
地址/数据
控制C
VCC
读锁存器 &
1
T1
内部总线 写锁存器
D
Q
P0.X CL 锁存器
_ Q
1 0 MUX
P0.X引脚 T2
读引脚
图 1.3 P0 口的结构图 P0 口必须接上拉电阻;在读信号之前数据之前,先要向相应的锁存器做写 1 操作的 I/O 口称为准双向口。
地址/数据
控制C
VCC
VCC
读锁存器
作,晶振信号经 12 分频后形成机器周期。 当单片机的时钟系统工作正常的时候,在 ALE 引脚可以观察到稳定的脉冲
信号,其频率为:晶振频率/6。
机器周期TCY
S1 S2 S3 S4 S5 S6
振荡器
分 P1 频 80C51 器 P2
晶振周期
S状态
图 1.13 单片机工作的基本时序图 机器周期和指令周期
下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读 脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。 如果此时该端口的负载恰是一个晶体管基极,且原端口输出值为 1,那么导通了 的 PN 结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出 的“1”电平误读为“0”电平。现采用读输出锁存器代替读引脚,图中,上面的 三态缓冲器就为读锁存器 Q 端信号而设,读输出锁存器可避免上述可能发生的错
P3.0: RXD 串行口输入
4
P3.1: TXD 串行口输出 P3.2: INT0 外部中断 0 输入 P3.3: INT1 外部中断 1 输入 P3.4 T0 定时器 0 外部输入 P3.5: T1 定时器 1 外部输入 P3.6: WR 外部写控制 P3.7: RD 外部读控制 1.6 单片机最小系统
读锁存器
VCC
R
内部总线 写锁存器
D
Q
CL
P1.X 锁存器
_ Q
P1.X引脚 T
读引脚
图 1.9 P1 口的内部结构图 1.5 P3 口的内部结构
读锁存器
第二输出_功__能W___ (TXD、WR、RD)
VCC
R
内部总线 写锁存器
D
Q
P3.X
CL 锁存器
& T
P3.X引脚
读引脚
第二输入__功__能 ____ (RXD、INT0、INT1、T0、T1)
CON9
图 1.12 单片机最小系统原理图 晶振周期(即时钟周期)为最小时序单位,晶振信号经分频器后形成两相错 开的信号 P1 和 P2。 P1 和 P2 的周期也称为 S 状态,它是晶振周期的 2 倍。即一 个 S 状态包含两个晶振周期。CPU 以 P1 和 P2 为基本节拍指挥各个部件协调的工
5
//定义一个 0~65535 的整形变量 unsigned char [自定义名]
//定义一 个 0~255 的字符变量。 #define [代替名] [原名] 例:#define uint unsigned int
#define TA 0x25 3.Main 函数 格式:void main()
11
(4) 指令周期: 它是指 CPU 完成一条操作所需的全部时间。 每条指令执行 时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周 期指令和四周期指令。 1.7 思考题
1.STC89C52 单片机内部程序存储器与数据存储器的容量各为多少? 2.52 系列单片机比 51 系列单片机多出的功能是什么? 3.在 DIP40 封装的 52 系列单片机里,接地引脚、电源引脚、复位引脚和晶振 引脚分别是那几个引脚。 4.在 12MHz 时钟脉冲的 52 系列单片机系统里,一个机器周期是多长时间? 5.在 52 系列单片机,那个引脚是控制使用内部程序存储器,还是外部程序存 储器?
2.3 C-51 相比 ASM-51 的优点 对单片机的指令系统不要求了解,仅要求对 8051 的存贮器结构有初步了解;
寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;方便实现规
12
范结构的模块化编程,已编好程序可容易地移植;提供的库包含许多标准子程序, 具有较强的数据处理能力。 ctype.h 字符函数; stdio.h 标准 I/O 函数; string.h 字符串函数; stdlib.h 标准库函数; math.h 数学函数; absacc.h 绝对地址访问函数 intrins.h 内部函数; stdarg.h 变量函数表; setjmp.h 全程跳转函数 reg51.h reg52.h …… 标准寄存器定义表 AT89X51.h …… 不同系列芯片的特殊寄存器定义表
40 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P08 31 EA 30 ALE 29 PSE 28 P28 27 P27 26 P26 25 P25 24 P24 23 P23 22 P22 21 P21
J5
1 2 3 4 5 6 7 8 9
(1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的 周期.
(2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后 得到的。
(3) 机器周期: 一个机器周期包含 6 个状态周期 S1~S6, 也就是 12 个时 钟周期。 在一个机器周期内, CPU 可以完成一个独立的操作。
图 1.10 P3 口的内部结构图 作为通用 I/O 口与 P1 口类似----准双向口(W=1) P1 口是 80C51 的唯一的单 功能口,仅能用作数据输入输出口,它由一个输出锁存器、三个输入缓冲器、一 个与非门和输出驱动电路组成。同 P2 口相同,内部设有上拉电阻(约 30KΩ)。 P3 第二功能各引脚功能定义:
图 1.11 单片机最小系统原理图及元件实物
K2
4 3
42 31
R2 1k R1 10K
Vcc 2 1
+
C1 C8
C1 30P
JZ C2 11.0592
30P
Vcc
P11 1 P12 2 P13 3 P14 4 P15 5 P16 6 P17 7 P18 8
9 P30 10 P31 11 P32 12 P33 13 P34 14 P35 15 P36 16 P37 17