当前位置:
文档之家› C51单片机基础学习教程(C语言)
C51单片机基础学习教程(C语言)
读引脚
图 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 [自定义名]