51单片机编程,用4位8段单片机数码管显示示,74HC245控制段选,138控制位选。用按键可以调;时间的电子钟。麻烦大家

郭天祥十天学会单片机(附C语言编程)PPT_文档下载_文档资料库
当前位置: >>
郭天祥十天学会单片机(附C语言编程)PPT
第一讲? 学单片机需要什么基础? ? 什么是单片机、单片机能做什么、怎么开始 学习单片机。 ? 学单片机需要的一些预备知识 ? C51基础知识。 ? 了解TX-1C单片机学习板系统结构 ? 如何用TX-1C单片机学习板在短时间内掌握 51单片机和C语言编程。 ? KEIL工程建立详细介绍及KEIL软件使用方法 ? 从点亮实验板上的一个发光二极管开始 ? 学单片机需要什么基础? 1. 与以前所学的知识关联很少; 2. 只需要掌握很基本的数电模电知识,如 二进制、十进制、十六进制之间的转换, 与、或、非逻辑关系等; 3. 对各种器件的概念基本上是从0开始; 4. 如果要用C语言编程,需具备简单的C语 言基础; 5. 所有人都站在了同一起跑线上; 什么是单片机?◆单板机 将CPU芯片、存储器芯片、I/O接口芯片和 简单的I/O设备(小键盘、LED显示器)等装 配在一块印刷电路板上,再配上监控程序(固 化在ROM中),就构成了一台单板微型计算 机(简称单板机)。单板机 单板机的I/O设备简单,软件资 源少,使用不方便。早期主要用 于微型计算机原理的教学及简单 的测控系统,现在已很少使用。 ◆单片机 在一片集成电路芯片上集成微处理器、 存储器、I/O接口电路,从而构成了单芯片 微型计算机,即单片机。 Intel公司推出了 MCS-51系列单片机:集成 8位CPU、4K字 节ROM、128字节RAM、4个8位并口、1个 全双工串行口、2个16位定时/计数器。寻址 范围64K,并有控制功能较强的布尔处理器。单板机 单片机 单片机能做什么? ? 1. 2. 3. 4. ? 实物展示 用到单片机的项目经验介绍 手持粮库温度寻检设备 毕设答辩打分器 电话台灯 自动感应水龙头 凡是与控制或简单计算有关的电子设备都可以用 单片机来实现,再根据具体实际情况选择不同性 能的单片机,如:atmel,stc,pic,avr,凌阳,80C51, arm等 ? 工业自动化:数据采集、测控技术。 ? 智能仪器仪表:数字示波器、数字信号源、 数字万用表、感应电流表等。 ? 消费类电子产品:洗衣机、电冰箱、空调机、 电视机、微波炉、手机、IC卡、汽车电子设 备等。 ? 通讯方面:调制解调器、程控交换技术、手 机、小灵通等。 ? 武器装备:飞机、军舰、坦克、导弹、航天 飞机、鱼雷制导、智能武器等。 ? 等等….. 怎么开始学习?? 实践第一。 ? 补充必要的理论知识,即缺什么补什么。 ? 做工程项目积累经验。(可在网络上搜集题 目,也可自己有什么想法大胆的去试验) 预备知识? 电平特性 ? 2进制与16进制的表示及转换 ? 二进制数的逻辑运算 ? 8051单片机介绍 ? C51基础知识 关于电平特性? 数字电路中只有两种电平:高和低 ? (本课程中)定义单片机为TTL电平: 高 +5V 低 0V ? RS232电平:计算机的串口 高 -12V 低+12V 所以计算机与单片机之间通讯时需要加电 平转换芯片max232(实验板上左下角)。 二进制? 数字电路中的两种电平特性决定了它 0 0 6 110 1 1 7 111 2 10 8
11 1011 十六进制? 是二进制的简短表示形式。 十进制中的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 各种进位制的对应关系十进制 二进制 0 1 2 3 4 0 1 10 11 100 十六进制 0 1 2 3 4 十进制 二进制 9 10 11 12 13 11
十六进制 9 A B C D5 67 8101 110111 10005 67 814 151610000E F10 二进制数的逻辑运算1. “与”运算? “与”运算是实现“必须都有, 否则就没有”这种逻辑关系的一种运算。 运算符为“? ”, 其运算规则如下:? 0?0=0, 0?1=1?0=0, 1?1=1? 2. “或”运算?“或”运算是实现“只要其中之一有, 就有”这种逻辑关系的一种运算,其运算符为“+”。 “或”运算规则如下:?0+0=0,0+1=1+0=1, 1+1=1? 3. “非”运算?“非”运算是实现“求反”这种逻辑的一种运算,如变量A的“非”运算 记作 A 。 其运算规则如下:1 ? 0, 0 ? 1 4. “异或”运算?“异或”运算是实现“必须不同,否则就没有”这种逻辑的一种运算, 运 算符为“?”。其运算规则是: ?0 ? 0 ? 0,0 ? 1 ? 1,1 ? 0 ? 1,1 ? 1 ? 0 80C51系列介绍80C51是MCS-51系列中的一个典型品种; 其它厂商以8051为基核开发出的CMOS工艺 单片机产品统称为80C51系列。当前常用的 80C51系列单片机主要产品有:~ Intel的:80C31、80C51、87C51,80C32、 80C52、87C52等; ~ ATMEL的:89C51、89C52、89C2051等; ~ Philips、华邦、Dallas 、STC Siemens(Infineon)等公司的许多产品 。 补充:关于型号的介绍 80C51的引脚封装总线型P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST/VPD P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 XTAL1 VSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/VPP ALE/PROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0非总线型RST P3.0/RXD P3.1/TXD XTAL2 XTAL1 P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 GND 1 2 3 4 5 6 7 8 9 10 20 19 18 17 16 15 14 13 12 11 VCC P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1/AIN1 P1.0/AIN0 P3.780C51/89C51注:类似的还有Philips公司的 87LPC64,20引脚 8XC748/750/(751),24引脚 8X749(752),28引脚 8XC754,28引脚 等等89C2051 P3第二功能各引脚功能定义:P3.0:RXD串行口输入 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外部读控制
总线(BUS)是计算机各部件之间传送信 息的公共通道。微机中有内部总线和外部总 线两类。内部总线是CPU内部之间的连线。 外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data Bus), 地址总线 AB(Address Bus)和控制总线 CBControl Bus)。 ? CPU:由运算和控制逻辑组成,同时还包括 中断系统和部分外部特殊功能寄存器; ? RAM:用以存放可以读写的数据,如运算的 中间结果、最终结果以及欲显示的数据; ? ROM:用以存放程序、一些原始数据和表格; ? I/O口:四个8位并行I/O口,既可用作输入, 也可用作输出; ? T/C:两个定时/记数器,既可以工作在定时 模式,也可以工作在记数模式; ? 五个中断源的中断控制系统; ? 一个全双工UART(通用异步接收发送器) 的串行I/O口,用于实现单片机之间或单片机 与微机之间的串行通信; ? 片内振荡器和时钟产生电路,石英晶体和微 调电容需要外接。最高振荡频率取决于单片 机型号及性能。 C51知识? C语言是一种编译型程序设计语言,它兼顾 了多种高级语言的特点,并具备汇编语言的 功能。目前,使用C语言进行程序设计已经 成为软件开发的一个主流。用C语言开发系 统可以大大缩短开发周期,明显增强程序的 可读性,便于改进、扩充和移植。而针对 8051的C语言日趋成熟,成为了专业化的实 用高级语言。 C-51的特点C语言作为一种非常方便的语言而得到广泛 的支持,很多硬件开发都用C语言编程,如: 各种单片机、DSP、ARM等. C语言程序本身不依赖于机器硬件系统,基 本上不作修改就可将程序从不同的单片机中 移植过来。 C提供了很多数学函数并支持浮点运算,开 发效率高,故可缩短开发时间,增加程序可 读性和可维护性。 C-51与ASM-51相比,有如下优点:1. 对单片机的指令系统不要求了解,仅 要求对8051 的存贮器结构有初步了解;2. 寄存器分配、不同存贮器的寻址及数 据类型等细节可由编译器管理; 3. 程序有规范的结构,可分成不同的函 数,这种方式可使程序结构化; 4. 提供的库包含许多标准子程序,具有 较强的数据处理能力;5. 由于具有方便的模块化编程技术,使 已编好程序可容易地移植; C-51的数据类型基本数据类型类型 符号 有 整 型 无 有 实 型 有 字 有 符 型 无 关键字 (signed) int (signed) short (signed) long unsigned int unsigned short int unsigned long int float double char unsigned char 数的表示范围 所占位数 16 - 16 - 32 16 16 32 32 64 8 8 -~ 0~35 0~ 3.4e-38~3.4e38 1.7e-308~1.7e308 -128~127 0~255 C语言中的基本数据类型类型 符号 关键字 (signed) int (signed) short (signed) long 无 unsigned int unsigned short int unsigned long int float double char unsigned char 数的表示范围 所占位数 16 - 16 - 32 16 16 32 32 -~ 0~65535有整 型0~655350~ 3.4e-38~3.4e38 1.7e-308~1.7e308 -128~127 0~255有 实 型 有 字 有 符 型 无648 8 C-51的数据类型扩充定义sfr:特殊功能寄存器声明 sfr16:sfr的16位数据声明 sbit:特殊功能位声明 bit:位变量声明 例:sfr SCON = 0X98; sfr16 T2 = 0xCC; sbit OV = PSW^2; C-51数据的存储类型例:数据类型 变量名char var1; unsigned char vextor[10]; 注意:变量名不能用C语言中的关 键字表示。 C-51的包含的头文件通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h常用有:reg51.h reg52.h (定义特殊功能寄存器和位寄存器); math.h (定义常用数学运算); C-51的运算符与C语言基本相同: + & == && &= != || ! * & / (加 减 乘 除) &= (大于 大于等于 小于 小于等于)(测试等于 (逻辑与 测试不等于) 逻辑或 逻辑非 )&&& | ^ ~&&(位右移(按位与 (按位异或位左移)按位或) 按位取反) C-51的基本语句与标准C语言基本相同: if while for 选择语言 循环语言 循环语言switch/casedo-while多分支选择语言循环语言 中断服务程序函数名()interrupt n using m{函数内部实现 ….}I/O口定义 sbit beep=P2^3; 单片机主要掌握以下几点? 最小系统能够运行起来的必要条件。 1.电源 2.晶振3.复位电路 ? 对单片机任意IO口的随意操作 1.输出控制电平高低2.输出检测电平高低。 ? 定时器:重点掌握最常用的方式2 ? 中断:外部中断、定时器中断、串口中断 ? 串口通信:单片机之间、单片机与计算机间 KEIL的使用? 掌握KEIL工程的建立和软件的开发; ? 掌握KEIL中软件仿真的基本应用; ? 掌握用KEIL直接硬件仿真TX-1C单片机学习 板的方法 Main 函数 格式:void main() 特点:无返回值,无参。 任何一个C程序有且仅有一个main函 数,它是整个程序开始执行的入口。 例:void main() { 总程序从这里开始执行; 其他语句; }
课后练习? 对照TX-1C单片机学习板原理图写程序 ? 用位操作和总线操作两种方法完成以下题目 1.熟练建立KEIL工程 2.点亮第一个发光管. 3.点亮最后一个发光管 4.点亮1、3、5、7 5.点亮二、四、五、六 6.尝试让第一个发光管闪烁 7.尝试设计出流水灯程序 自己动手实践需要硬件材料? ? ? ? ? ? DIP40脚座一个。 杜邦线,单头带冒,40根。 单排针 两排。 小电路板一块。 DS12C887 一片(旧10元,新22元)。 焊锡、 单片机工作的基本时序? 机器周期和指令周期? ? (1) 振荡周期: 也称时钟周期, 是指为单片机提 供时钟脉冲信号的振荡源的周期,TX实验板上为 11.0592MHZ。 ? ? (2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。 ? ? (3) 机器周期: 一个机器周期包含 6 个状态周 期S1~S6, 也就是 12 个时钟周期。 在一个机器周 期内, CPU可以完成一个独立的操作。 ? ? (4) 指令周期: 它是指CPU完成一条操作所需 的全部时间。 每条指令执行时间都是有一个或几个 机器周期组成。MCS - 51 系统中, 有单周期指令、 双周期指令和四周期指令。 第二讲? ? ? ? ? ? ? ? 如何申请免费样片 简单延时程序 子程序调用 带参数子程序设计 C51库函数的方便调用 如何驱动蜂鸣器 如何驱动继电器 集电极开路的概念及应用。 While (表达式) {语句(内部也可为空)} 特点:先判断表达式,后执行语 句。 原则:若表达式不是0,即为真 ,那么执行语句。否则跳出while 语句。 For (表达式1;表达式2;表达式3) { 语句(内部可为空)} 执行过程: 1.求解一次表达式1. 2.求解表达式2,若其值为真(非0 即为真),则执行for中语句。然后 执行第3步。否则结束for 语句,直 接跳出,不再执行第3步。 3.求解表达式3. 4.跳到第2步重复执行。 集电极开路典型图VCCOUTPU TP0 iQ1 9013GND 课后练习1. 2. 第一个发光管以间隔200ms闪烁 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭 500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。 8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出 “滴滴”声。 用8个发光管演示出8位二进制数累加过程。 8个发光管间隔200ms由上至下,再由下至上,再重复一次 ,然后全部熄灭再以300ms间隔全部闪烁5次。重复此过程 。 间隔300ms第一次一个管亮流动一次,第二次两个管亮流动 ,依次到8个管亮,然后重复整个过程。 间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环 三次;两个分别从两边往中间流动三次;再从中间往两边流 动三次;8个全部闪烁3次;关闭发光管,程序停止。3.4. 5.6. 7. 第三讲? ? ? ? 数码管是如何显示出字符的 数码管静态显示与动态显示原理 中断概念 单片机的定时器应用 显示器及其接口单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7 段、米字型等)和点阵显示(5×8、8×8点阵等)。 g f GND a b a a f e d g b c dp b c d e f g dp a b c d e f g dp+5V?e d GND c dp(a)共阴极(b)共阳极使用LED显示器时,要注意区分这两种不同的接法。为了显 示数字或字符,必须对数字或字符进行编码。七段数码管加上一 个小数点,共计8段。因此为LED显示器提供的编码正好是一个字 节。TX实验板用共阴LED显示器,根据电路连接图显示16进制数的编码已列在下表。 共阴数码管码表? 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,? 0 1 2 3 4 5 ? 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c , ? 6 7 8 9 A B ? 0x39 , 0x5e , 0x79 , 0x71 , 0x00 ? C D E F 无显示 LED数码显示方式及电路静态显示方式LED显示器工作方式有两种:静态显示方式和动态显示 方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是 占用CPU时间少,显示便于监测和控制。缺点是硬件电路比 较复杂,成本较高。 动态显示动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。 选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻 时应略小于静态显示电路中的。 16 15 14 13 12 11 109R 1K5V U1 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 INT1 INT0 T1 T0 1 2 3 4 5 6 7 8 13 12 15 14 31 19 18 9 RD 1 7 W R 16 P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 INT1 INT0 T1 T0 EA/VP X1 X2 RESET RD WR P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 VC C GN D RX D TXD ALE/P PSEN 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 40 20 10 11 30 29 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7117 4 2 10 1a b c d e f a b f e g d b c dp f e89C52DPY a f e g d5 3g dp a g d b c dp f e a g d b c dp DPY 4 -LED12RX D TXD ALE PSENC0C2C3 9P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7c dpP0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 6 8 C4 P2 31 2 3 4 5 6 7 8LEDP2 0P2 1P2 2 U1P10 P11 P12 P13 P14 P15 P16 P17 1 2 3 4 5 6 7 8 13 12 15 14 31 19 18 9 17 16 P10 P11 P12 P13 P14 P15 P16 P17 IN T1 IN T0 T1 T0 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 VCC GND RXD TXD ALE/P PSEN 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 40 20 10 11 30 29K0P10K40 4 8 CP14K11 5 9 DP15K22 6 A EP16K33 7 B FP17K5K6K7P11 P12 P13K8K9K10K1189C52EA/VP X1 X2 RESET RD WRK12K13K14K15 中断系统 3.1 80C51的中断系统 3.1.1 80C51的中断系统结构 一、中断的概念 CPU在处理某一事件A时,发生了另一事件 B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B (中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事 件A被中断的地方继续处理事件A(中断返 回),这一过程称为中断 。 MCS-51单片机的中断系统结构主程序 中断响应中断请求执行主 程序断点 继续执行 主程序 执行 中断 处理 程序中断返回 主程序A断点返回RETI 中断服务程序B引起CPU中断的根源,称为中断源。中断源向CPU提出 的中断请求。CPU暂时中断原来的事务A,转去处理事件B。 对事件B处理完毕后,再回到原来被中断的地方(即断点), 称为中断返回。实现上述中断功能的部件称为中断系统(中 断机构)。??响应 随着计算机技术的应用,人们发现中断技 术不仅解决了快速主机与慢速I/O设备的数据 传送问题,而且还具有如下优点: ? 分时操作。CPU可以分时为多个I/O设备 服务,提高了计算机的利用率; ?实时响应。CPU能够及时处理应用系统的 随机事件,系统的实时性大大增强; ?可靠性高。CPU具有处理设备故障及掉电 等突发性事件能力,从而使系统可靠性提高。 80C51中断系统的结构80C51的中断系统有5个中断源(8052有 6 个) ,2个优先级,可实现二级中断嵌套 。TCONIT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 0 RI TI ES 1 ≥1 PS 1 0 0 PT1 1 0 自 然 优 先 级 中断源 低 级 0 EX1 1 PX1 1 EX0 1IEEA 1IPPX0 1 0 PT0 1 1硬件查询自 然 优 先 级 中断源 高 级INT0 T0 INT1 T1 RX TX中断入口中断入口SCON TCONIT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 EX0 1IEEA 1IPPX0 1 0 PT0 1 0 1硬件查询自 然 优 先 级 中断源 高 级INT0 T0 INT1 T1 RX TX中断入口EX1 1PX1 1 0 PT1 1 0 0 自 然 优 先 级 中断源低 级RI TIES 1 ≥1PS 1 0中断入口SCON1、(P3.2)可由IT0(TCON.0)选择其为低电平 有效还是下降沿有效。当CPU检测到P3.2引脚上 出现有效的中断信号时,中断标志IE0(TCON.1) 置1,向CPU申请中断。 TCONIT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 EX0 1IEEA 1IPPX0 1 0 PT0 1 0 1硬件查询自 然 优 先 级 中断源 高 级INT0 T0 INT1 T1 RX TX中断入口EX1 1PX1 1 0 PT1 1 0 0 自 然 优 先 级 中断源低 级RI TIES 1 ≥1PS 1 0中断入口SCON2、(P3.3)可由IT1(TCON.2)选择其为低电平 有效还是下降沿有效。当CPU检测到P3.3引脚上 出现有效的中断信号时,中断标志IE1(TCON.3) 置1,向CPU申请中断。 TCONIT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 EX0 1IEEA 1IPPX0 1 0 PT0 1 0 1硬件查询自 然 优 先 级 中断源 高 级INT0 T0 INT1 T1 RX TX中断入口EX1 1PX1 1 0 PT1 1 0 0 自 然 优 先 级 中断源低 级RI TIES 1 ≥1PS 1 0中断入口SCON3、TF0(TCON.5),片内定时/计数器T0 溢出中断请求标志。当定时/计数器T0发生 溢出时,置位TF0,并向CPU申请中断。 TCONIT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 EX0 1IEEA 1IPPX0 1 0 PT0 1 0 1硬件查询自 然 优 先 级 中断源 高 级INT0 T0 INT1 T1 RX TX中断入口EX1 1PX1 1 0 PT1 1 0 0 自 然 优 先 级 中断源低 级RI TIES 1 ≥1PS 1 0中断入口SCON4、TF1(TCON.7),片内定时/计数器T1 溢出中断请求标志。当定时/计数器T1发生 溢出时,置位TF1,并向CPU申请中断。 TCONIT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 EX0 1IEEA 1IPPX0 1 0 PT0 1 0 1硬件查询自 然 优 先 级 中断源 高 级INT0 T0 INT1 T1 RX TX中断入口EX1 1PX1 1 0 PT1 1 0 0 自 然 优 先 级 中断源低 级RI TIES 1 ≥1PS 1 0中断入口SCON5、RI(SCON.0)或TI(SCON.1),串行口 中断请求标志。当串行口接收完一帧串行数 据时置位RI或当串行口发送完一帧串行数据 时置位TI,向CPU申请中断。 二、中断请求标志1、TCON的中断标志IT0(TCON.0),外部中断0触发方式控制位。 当IT0=0时,为电平触发方式。 当IT0=1时,为边沿触发方式(下降沿有效)。 IE0(TCON.1),外部中断0中断请求标志位。 IT1(TCON.2),外部中断1触发方式控制位。 IE1(TCON.3),外部中断1中断请求标志位。 TF0(TCON.5),定时/计数器T0溢出中断请求标志位。 TF1(TCON.7),定时/计数器T1溢出中断请求标志位。 2、SCON的中断标志?RI(SCON.0),串行口接收中断标志位。当允 许串行口接收数据时,每接收完一个串行帧,由 硬件置位RI。注意,RI必须由软件清除。 ?TI(SCON.1),串行口发送中断标志位。当 CPU将一个发送数据写入串行口发送缓冲器时, 就启动了发送过程。每发送完一个串行帧,由硬 件置位TI。CPU响应中断时,不能自动清除TI, TI必须由软件清除。 3.1.3 80C51中断的控制一、中断允许控制CPU对中断系统所有中断以及某个中断源的开放和屏 蔽是由中断允许寄存器IE控制的。?EX0(IE.0),外部中断0允许位; ?ET0(IE.1),定时/计数器T0中断允许位; ?EX1(IE.2),外部中断0允许位; ?ET1(IE.3),定时/计数器T1中断允许位; ?ES(IE.4),串行口中断允许位; ?EA (IE.7), CPU中断允许(总允许)位。 二、中断优先级控制80C51单片机有两个中断优先级,即可实现二级 中断服务嵌套。每个中断源的中断优先级都是由中断 优先级寄存器IP中的相应位的状态来规定的 。?PX0(IP.0),外部中断0优先级设定位; ?PT0(IP.1),定时/计数器T0优先级设定位; ?PX1(IP.2),外部中断0优先级设定位; ?PT1(IP.3),定时/计数器T1优先级设定位; ?PS (IP.4),串行口优先级设定位; ?PT2 (IP.5) ,定时/计数器T2优先级设定位。 而80C52单片机有四个中断优先级,即可实现四级 中断服务嵌套。每个中断源的中断优先级由中断优 先级寄存器IP和IPH中的相应位的状态来规定的 。?PX0(IPH.0),外部中断0优先级设定位; ?PT0(IPH.1),定时/计数器T0优先级设定位; ?PX1(IPH.2),外部中断0优先级设定位; ?PT1(IPH.3),定时/计数器T1优先级设定位; ?PS (IPH.4),串行口优先级设定位; ?PT2 (IPH.5) ,定时/计数器T2优先级设定位。 同一优先级中的中断申请不止一个时,则有中 断优先权排队问题。同一优先级的中断优先权排队, 由中断系统硬件确定的自然优先级形成,其排列如 所示: ? 设置52单片机的4个中断源,使他们的优顺 序为T1,INT1,INT0,T0.IPH = 0X08; IP = 0X40; PT1 = 1; PX1 = 1; 80C51单片机的中断优先级有三条原则:?CPU同时接收到几个中断时,首先响应优先级别最 高的中断请求。 ?正在进行的中断过程不能被新的同级或低优先级的 中断请求所中断。 ?正在进行的低优先级中断服务,能被高优先级中断 请求所中断。 为了实现上述后两条原则,中断系统内部设有两 个用户不能寻址的优先级状态触发器。其中一个置1, 表示正在响应高优先级的中断,它将阻断后来所有 的中断请求;另一个置1,表示正在响应低优先级中 断,它将阻断后来所有的低优先级中断请求。 3.2 80C51单片机中断处理过程3.2.1 中断响应条件和时间中断响应条件? 中断源有中断请求; ? 此中断源的中断允许位为1; ? CPU开中断(即EA=1)。 以上三条同时满足时,CPU才有可能响应 中断。 3.3 80C51的定时/计数器实现定时功能,比较方便的办法是利用单 片机内部的定时/计数器。也可以采用下面三 种方法:?软件定时:软件定时不占用硬件资源,但占用了 CPU时间,降低了CPU的利用率。 ?采用时基电路定时:例如采用555电路,外接必要 的元器件(电阻和电容),即可构成硬件定时电路。 但在硬件连接好以后,定时值与定时范围不能由软 件进行控制和修改,即不可编程。 ?采用可编程芯片定时:这种定时芯片的定时值及定 时范围很容易用软件来确定和修改,此种芯片定时 功能强,使用灵活。在单片机的定时/计数器不够用 时,可以考虑进行扩展。 3.3.1 定时/计数器的结构和工作原理一、定时/计数器的结构 定时/计数器的实质是加1计数器(16位),由高8位和低8 位两个寄存器组成。TMOD是定时/计数器的工作方式寄存 器,确定工作方式和功能;TCON是控制寄存器,控制T0、 T1的启动和停止及设置溢出标志。T1引脚 T0引脚机器周 期脉冲TH1TL1TH0TL0内部总线GATE TF1 TR1 TF0 TR0 C/T C/T M1 M0 M1 M0TCONGATETMOD外部中断相关位T1方式T0方式 二、定时/计数器的工作原理加1计数器输入的计数脉冲有两个来源,一个是由 系统的时钟振荡器输出脉冲经12分频后送来;一个 是T0或T1引脚输入的外部脉冲源。每来一个脉冲 计数器加1,当加到计数器为全1时,再输入一个脉 冲就使计数器回零,且计数器的溢出使TCON中 TF0或TF1置1,向CPU发出中断请求(定时/计数 器中断允许时)。如果定时/计数器工作于定时模 式,则表示定时时间已到;如果工作于计数模式, 则表示计数值已满。 可见,由溢出时计数器的值减去计数初值才是加 1计数器的计数值。 ?设置为定时器模式时,加1计数器是对内部机器周期 计数(1个机器周期等于12个振荡周期,即计数频率 为晶振频率的1/12)。计数值N乘以机器周期Tcy就 是定时时间t 。 ?设置为计数器模式时,外部事件计数脉冲由T0或T1 引脚输入到计数器。在每个机器周期的S5P2期间采 样T0、T1引脚电平。当某周期采样到一高电平输入, 而下一周期又采样到一低电平时,则计数器加1,更 新的计数值在下一个机器周期的S3P1期间装入计数 器。由于检测一个从1到0的下降沿需要2个机器周期, 因此要求被采样的电平至少要维持一个机器周期。当 晶振频率为12MHz时,最高计数频率不超过1/2MHz, 即计数脉冲的周期要大于2 ?s。 3.3.2 定时/计数器的控制80C51单片机定时/计数器的工作由两个特殊功 能寄存器控制。TMOD用于设置其工作方式; TCON用于控制其启动和中断申请。 一、工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的 工作方式,低四位用于T0,高四位用于T1。其格式 如下: GATE:门控位。GATE=0时,只要用软件使TCON中的 TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时, 要用软件使TR0或TR1为1,同时外部中断引脚或也为高电 平时,才能启动定时/计数器工作。即此时定时器的启动多 了一条件。 C/T :定时/计数模式选择位。C/T =0为定时模式; =1 C/T 为计数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式, 由M1M0进行设置。 二、控制寄存器TCONTCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于 控制定时/计数器的启动和中断申请。其格式如下:?TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自 动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU 可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可 以用软件置1或清0,同硬件置1或清0的效果一样。 ?TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置 0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/ 计数器的启动与停止。 ?TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。 ?TR0(TCON.4):T0运行控制位,其功能与TR1类同。 3.3.3 定时/计数器的工作方式一、方式0方式0为13位计数,由TL0的低5位(高3位未用)和TH0 的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时, 置位TCON中的TF0标志,向CPU发出中断请求。TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出 TH0 8位 TL0 5位 &≥1TMOD T0引脚 1 1 0 0 0 M0 M1 C/T 机器周期 GATE M0 1 D0 INT0引脚 M1 C/T GATE D7 D0 定时器模式时有:N=t/ Tcy 计数初值计算的公式为: X=213 -N定时器的初值还可以采用计数个数直接取补法获得。计数模式时,计数脉冲是T0引脚上的外部脉冲。门控位GATE具有特殊的作用。当GATE=0时,经反相后使 或门输出为1,此时仅由TR0控制与门的开启,与门输出1 时,控制开关接通,计数开始;当GATE=1时,由外中断引 脚信号控制或门的输出,此时控制与门的开启由外中断引 脚信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚 的高电平启动计数,外中断引脚信号引脚的低电平停止计 数。这种方式常用来测量外中断引脚上正脉冲的宽度。 二、方式1方式1的计数位数是16位,由TL0作为低8位、TH0 作为高8位,组成了16位加1计数器 。TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出 1 TH0 8位 TL0 8位 &≥1TMOD T0引脚 1 0 M0 M1 C/T 0 机器周期 GATE M0 1 D0 INT0引脚 M1 C/T GATE D7 D0计数个数与计数初值的关系为: X=216 -N 三、方式2 方式2为自动重装初值的8位计数方式。TCON TF1 申请 中断 TR1 TF0 TR0 TH0 8位 D0 D7 溢出 1 TL0 &≥1TMOD T0引脚 0 1 M0 M1 C/T 0 机器周期 GATE M0 1 INT0引脚 M1 C/T GATE D7 D0X=28 -N 计数个数与计数初值的关系为:工作方式2特别适合于用作较精确的脉冲信号发生器。 四、方式3方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。溢出 申请 中断 申请 中断 TCON TF1 TR1 TF0 TR0 溢出 TH0 8位 T0引脚 1 TL0 8位 &≥1机器周期 TMOD 1 1 M0 M1 C/T 0 机器周期 GATE M0 1 M1 C/T GATE D7 D0D0INT0引脚工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。 3.3.4 定时/计数器应用举例初始化程序应完成如下工作:?对TMOD赋值,以确定T0和T1的工作方式。 ?计算初值,并将其写入TH0、TL0或TH1、TL1。 ?中断方式时,则对IE赋值,开放中断。 ?使TR0或TR1置位,启动定时/计数器定时或计数。 例 利用定时/计数器T1的方式1,产生10ms的定时, 并使P1.0引脚上输出周期为20ms的方波,采用中 断方式,设系统时钟频率为12 MHz。 解:1、计算计数初值X:由于晶振为12 MHz,所以机器周期Tcy为1 ?s。 所以: N=t/ Tcy =000 X=6=55536=D8F0H 即应将D8H送入TH0中,F0H送入TL0中 2、求T1的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制 字为01H; 1、利用定时/计数器T0从P1.0输出周期为1s的方波, 让发光二极管以1HZ闪烁,设晶振频率为12MHz。。 2、利用定时/计数器T1产生定时时钟,由P1口控制8 个发光二极管,使8个指示灯依次一个一个闪动,闪 动频率为10次/秒(8个灯依次亮一遍为一个周期),循 环。 3、同时用两个定时器控制蜂鸣器发声,定时器0控 制频率,定时器1控制同个频率持续的时间,间隔 300ms依次输出1,10,50,100,200,400,800, 1k(hz)的方波。 4、用定时器以间隔500MS在6位数码管上依次显示 0、1、2、3….C、D、E、F,重复。 动态显示动态显示的特点是将所有位数码管的段选线并联在 一起,由位选线控制是哪一位数码管有效。这样一来, 就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位 选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态 显示电路中的。 MCS-51单片机的中断系统结构主程序 中断响应中断请求执行主 程序断点 继续执行 主程序 执行 中断 处理 程序中断返回 4.180C51中断的控制一、中断允许控制CPU对中断系统所有中断以及某个中断源的开放和屏 蔽是由中断允许寄存器IE控制的。?EX0(IE.0),外部中断0允许位; ?ET0(IE.1),定时/计数器T0中断允许位; ?EX1(IE.2),外部中断0允许位; ?ET1(IE.3),定时/计数器T1中断允许位; ?ES(IE.4),串行口中断允许位; ?EA (IE.7), CPU中断允许(总允许)位。 同一优先级中的中断申请不止一个时,则有中 断优先权排队问题。同一优先级的中断优先权排队, 由中断系统硬件确定的自然优先级形成,其排列如 所示: 4.2 80C51单片机中断处理过程4.2.1 中断响应条件和时间中断响应条件? 中断源有中断请求; ? 此中断源的中断允许位为1; ? CPU开中断(即EA=1)。 以上三条同时满足时,CPU才有可能响应 中断。 定时/计数器的结构和工作原理一、定时/计数器的结构 定时/计数器的实质是加1计数器(16位),由高8位和低8 位两个寄存器组成。TMOD是定时/计数器的工作方式寄存 器,确定工作方式和功能;TCON是控制寄存器,控制T0、 T1的启动和停止及设置溢出标志。T1引脚 T0引脚机器周 期脉冲TH1TL1TH0TL0内部总线GATE TF1 TR1 TF0 TR0 C/T C/T M1 M0 M1 M0TCONGATETMOD外部中断相关位T1方式T0方式 4.2.2 定时/计数器的控制80C51单片机定时/计数器的工作由两个特殊功 能寄存器控制。TMOD用于设置其工作方式; TCON用于控制其启动和中断申请。 一、工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的 工作方式,低四位用于T0,高四位用于T1。其格式 如下: GATE:门控位。GATE=0时,只要用软件使TCON中的 TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时, 要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为 高电平时,才能启动定时/计数器工作。即此时定时器的启 动条件,加上了INT0/1引脚为高电平这一条件。 C/T :定时/计数模式选择位。C/T =0为定时模式; =1 C/T 为计数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式, 由M1M0进行设置。 二、控制寄存器TCONTCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于 控制定时/计数器的启动和中断申请。其格式如下:?TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自 动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU 可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可 以用软件置1或清0,同硬件置1或清0的效果一样。 ?TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置 0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/ 计数器的启动与停止。 ?TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。 ?TR0(TCON.4):T0运行控制位,其功能与TR1类同。 定时/计数器的工作方式一、方式0方式0为13位计数,由TL0的低5位(高3位未用)和TH0 的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时, 置位TCON中的TF0标志,向CPU发出中断请求。TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出 TH0 8位 TL0 5位 &≥1TMOD T0引脚 1 1 0 0 0 M0 M1 C/T 机器周期 GATE M0 1 D0 INT0引脚 M1 C/T GATE D7 D0 二、方式1方式1的计数位数是16位,由TL0作为低8位、TH0 作为高8位,组成了16位加1计数器 。TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出 1 TH0 8位 TL0 8位 &≥1TMOD T0引脚 1 0 M0 M1 C/T 0 机器周期 GATE M0 1 D0 INT0引脚 M1 C/T GATE D7 D0计数个数与计数初值的关系为: X=216 -N 第四课练习? 1.利用动态扫描方法在六位数码管上显示出稳 定的654321. ? 2.用动态扫描方法和定时器1在数码管的前三 位显示出秒表,精确到1%秒,即后两位显示 1%秒,一直循环下去。 ? 3.利用动态扫描和定时器1在数码管上显示出 从765432开始以1/10秒的速度往下递减直至 765398并保持显示此数,与此同时利用定时 器0以500MS速度进行流水灯从上至下移动, 当数码管上数减到停止时,实验板上流水灯也 停止然后全部开始闪烁,3秒后(用T0定时) 流水灯全部关闭、数码管上显示出“HELLO”。 到此保持住。 键盘的应用 ? 1、键盘的分类 ? 键盘分编码键盘和非编码键盘。键盘上 闭合键的识别由专用的硬件编码器实现,并 产生键编码号或键值的称为编码键盘,如计 算机键盘. ? 而靠软件编程来识别的称为非编码键盘; ? 在单片机组成的各种系统中,用的最多的是 非编码键盘。也有用到编码键盘的。 ? 非编码键盘有分为:独立键盘和行列式(又 称为矩阵式)键盘。
按键在闭合和断开时,触点会存在抖动现象:+5V无抖动理想波形 A 实际波形按下抖动B 稳定闭合释放抖动+5V有抖动 U1P10 P11 P12 P13 P14 P15 P16 P17 1 2 3 4 5 6 7 8 13 12 15 14 31 19 18 9 17 16 P10 P11 P12 P13 P14 P15 P16 P17 IN T1 IN T0 T1 T0 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 VCC GND RXD TXD ALE/P PSEN 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 40 20 10 11 30 29K0P10K40 4 8 CP14K11 5 9 DP15K22 6 A EP16K33 7 B FP17K5K6K7P11 P12 P13K8K9K10K1189C52EA/VP X1 X2 RESET RD WRK12K13K14K15
? 数码管前三位显示一个跑表,从000到 999之间以1%秒速度运行,当按下一个独 立键盘时跑表停止,松开手后跑表继续运 行。(用定时器设计表)。 ? 在上题的基础上,用另外三个独立键盘实 现按下第一个时计时停止,按下第二个时 计时开始,按下第三个是计数值清零从头 开始。 ? 按下16个矩阵键盘依次在数码管上显示116的平方。如按下第一个显示1,第二个 显示4... 第六讲D/A & A/D转换器及其与单片机接口 D/A 6.1 D/A转换器及其与单片机接口6.1.1 D/A转换器的原理及主要技术指标一、D/A转换器的基本原理及分类T型电阻网络D/A转换器I VREFI7 I7 R I6 2R 1 0 I6 R I5 2R 1 0 I5 R I4 2R 1 0 I4 R I3 2R 1 0:I3 R I2 2R 1 0 I2 R I1 2R 1 0 I1 R I0 2R 1 0 I02R 1 Rfb IO1 IO22R0+VOD7D6D5D4D3D2D1D0 输出电压 的大小与数字量具有对应的关系。 二、D/A转换器的主要性能指标1、分辨率 分辨率是指输入数字量的最低有效位(LSB)发生变化时, 所对应的输出模拟量(电压或电流)的变化量。它反映了 输出模拟量的最小变化值。 分辨率与输入数字量的位数有确定的关系,可以表示成FS / 2n 。FS表示满量程输入值,n为二进制位数。对于5V 的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV; 当采用12位的DAC时,分辨率则为5V/mV。显然, 位数越多分辨率就越高。 2、线性度 线性度(也称非线性误差)是实际转换特性曲线与理想 直线特性之间的最大偏差。常以相对于满量程的百分数 表示。如±1%是指实际输出值与理论值之差在满刻度 的±1%以内。 3、绝对精度和相对精度 ?绝对精度(简称精度)是指在整个刻度范围内,任 一输入数码所对应的模拟量实际输出值与理论值之 间的最大误差。绝对精度是由DAC的增益误差(当 输入数码为全1时,实际输出值与理想输出值之差)、 零点误差(数码输入为全0时,DAC的非零输出 值)、非线性误差和噪声等引起的。绝对精度(即 最大误差)应小于1个LSB。 ?相对精度与绝对精度表示同一含义,用最大误差相 对于满刻度的百分比表示。 4、建立时间 ?建立时间是指输入的数字量发生满刻度变化时, 输出模拟信号达到满刻度值的±1/2LSB所需的时 间。是描述D/A转换速率的一个动态指标。 电流输出型DAC的建立时间短。电压输出型DAC 的建立时间主要决定于运算放大器的响应时间。根 据建立时间的长短,可以将DAC分成超高速(< 1μS)、高速(10~1μS)、中速(100~10μS)、 低速(≥100μS)几档。 应当注意,精度和分辨率具有一定的联系,但 概念不同。DAC的位数多时,分辨率会提高,对 应于影响精度的量化误差会减小。但其它误差 (如温度漂移、线性不良等)的影响仍会使DAC 的精度变差。 6.1.2 DAC0832芯片及其与单片机接口DAC0832是使用非常普遍的8位D/A转换器,由于其片 内有输入数据寄存器,故可以直接与单片机接口。 DAC0832以电流形式输出,当需要转换为电压输出时,可 外接运算放大器。属于该系列的芯片还有DAC0830、 DAC0831,它们可以相互代换。DAC0832主要特性:?分辨率8位; ?电流建立时间1μ S; ?数据输入可采用双缓冲、单缓冲或直通方式; ?输出电流线性度可在满量程下调节; ?逻辑电平输入与TTL电平兼容; ?单一电源供电(+5V~+15V); ?低功耗,20mW。 一、DAC0832内部结构及引脚DI7~DI0 VREF输入 锁存器 DAC 寄存器 D/A 转换器IOUT2 IOUT1ILE & CS & WR1LE1 &LE2 RfbAGNDVCC WR2 XFER
二、DAC单片机的接口 1、单缓冲工作方式此方式适用于只有一路模拟量输出,或有几路模拟量输出 但并不要求同步的系统。P2.7CS XFER DI0 DI7DAC083280C51P0 WR VSSVCC ILE Rfb IOUT1 IOUT2+5V 1kΩ 1MΩWR1 WR2 DGND+VO 双极性模拟输出电压 :+5VDI02R2RVREFDAC0832偏移码DI7Rfb IOUT1 IOUT2AGNDA1 +RVDA2 +VOUTDGND双极性输出时的分辨率比单极性输出时降低 1/2,这是由于对双极性输出而言,最高位作为 符号位,只有7位数值位。 2、双缓冲工作方式多路D/A转换输出,如果要求同步进行,就应 该采用双缓冲器同步方式 。P2.7 P0 WRXFER DI0 DI7 WR1 WR2DAC0832(1)P2.5CS+5V VCC ILE ILE VCC80C51XFER DI0 DI7 WR1 WR2DAC0832(2)P2.6CS 3、直通工作方式 ?当DAC0832芯片的片选信号、写信号、 及传送控制信号的引脚全部接地,允许输 入锁存信号ILE引脚接+5V时,DAC0832 芯片就处于直通工作方式,数字量一旦输 入,就直接进入DAC寄存器,进行D/A转 换。 http://www. Alldatasheet .com/ 6.2 A/D转换器及其与单片机接口6.2.1 A/D转换器的原理及主要技术指标一、逐次逼近式ADC的转换原理VIN VN D/A转换器 VREF D7 D6 D5 D4 D3 D2 D1 D0 OESTART 控制 逻辑 EOC N位寄存器锁 存 缓 存 器 二、双积分式ADC的转换原理标准电压 - + 比较器 计 数 器 控制逻辑积分器输出VIN时钟T1 T T2t 三、A/D转换器的主要技术指标 1、分辨率 ?ADC的分辨率是指使输出数字量变化一个相 邻数码所需输入模拟电压的变化量。常用二 进制的位数表示。例如12位ADC的分辨率就 是12位,或者说分辨率为满刻度FS的1/ 。 一个10V满刻度的12位ADC能分辨输入电压 212 12 2 变化最小值是10V×1/ =2.4mV。 2、量化误差?ADC把模拟量变为数字量,用数字量近似表示模拟量,这个 过程称为量化。量化误差是ADC的有限位数对模拟量进行量 化而引起的误差。实际上,要准确表示模拟量,ADC的位数 需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特 性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。007 006 005 004 003 002 001 000 数字输出 007 006 005 004 003 002 001 000 数字输出模拟电压输入 1LSB模拟电压输入 1/2LSB 3、偏移误差?偏移误差是指输入信号为零时,输出信号不为零的 值,所以有时又称为零值误差。假定ADC没有非线 性误差,则其转换特性曲线各阶梯中点的连线必定 是直线,这条直线与横轴相交点所对应的输入电压 值就是偏移误差。4、满刻度误差 ?满刻度误差又称为增益误差。ADC的满刻度 误差是指满刻度输出数码所对应的实际输入电 压与理想输入电压之差。 5、线性度?线性度有时又称为非线性度,它是指转换器实际的 转换特性与理想直线的最大偏差。 6、绝对精度 ?在一个转换器中,任何数码所对应的实际模拟量输 入与理论模拟输入之差的最大值,称为绝对精度。对 于ADC而言,可以在每一个阶梯的水平中点进行测 量,它包括了所有的误差。 7、转换速率 ?ADC的转换速率是能够重复进行数据转换的速度, 即每秒转换的次数。而完成一次A/D转换所需的时间 (包括稳定时间),则是转换速率的倒数。 第七讲7.1 计算机串行通信基础7.2 80C51的串行口7.3 单片机串行口编程应用 举例 7.1 计算机串行通信基础?随着多微机系统的广泛应用和计算机网络技 术的普及,计算机的通信功能愈来愈显得重要。 计算机通信是指计算机与外部设备或计算机与 计算机之间的信息交换。 ?通信有并行通信和串行通信两种方式。在多 微机系统以及现代测控系统中信息的交换多采 用串行通信方式。 ?计算机通信是将计算机技术和通信技术的相结合, 完成计算机与外部设备或计算机与计算机之间的信 息交换 。可以分为两大类:并行通信与串行通信。 ?并行通信通常是将数据字节的各位用多条数据线同 时进行传送 。8位同时传送 接 收 设 备 询问 应答1 0 1 0 1 1 0 0发 送 设 备并行通信控制简单、传输速度快;由于传输线较多,长距离 传送时成本高且接收方的各位同时接收存在困难。 串行通信是将数据字节分成一位一位的形 式在一条传输线上逐个地传送。接 收 设 备D0 D78位顺次传送发 送 设 备串行通信的特点:传输线少,长距离传送时 成本低,且可以利用电话网等现成的设备, 但数据的传送控制比并行通信复杂。 7.1.1 串行通信的基本概念一、异步通信与同步通信1、异步通信 异步通信是指通信的发送与接收设备使用各自的时钟 控制数据的发送和接收过程。为使双方的收发协调,要求 发送和接收设备的时钟尽可能一致。间隙任意 接 收
设 备 异步通信是以字符(构成的帧)为 单位进行传输,字符与字符之间的间 隙(时间间隔)是任意的,但每个字 符中的各位是以固定的时间传送的, 即字符之间不一定有“位间隔”的整 数倍的关系,但同一字符内的各位之 间的距离均为“位间隔”的整数倍。 异步通信的数据格式 :一个字符帧 空 闲 起 始 位 数据位 校 验 位 停 止 位 空 闲下一字符 起始位LSBMSB异步通信的特点:不要求收发双方时钟的 严格一致,实现容易,设备开销较小,但 每个字符要附加2~3位用于起止位,各帧 之间还有间隔,因此传输效率不高。 2、同步通信同步通信时要建立发送方时钟对接收方时钟的直接控制, 使双方达到完全同步。此时,传输数据的位之间的距离均 为“位间隔”的整数倍,同时传送的字符间不留间隙,即 保持位同步关系,也保持字符同步关系。发送方对接收方 的同步可以通过两种方法实现。0 1 1 0 1数据 时钟计 算 机 甲时钟计 算 机 乙计 算 机 甲数据0 1 1 0 1数据+时钟计 算 机 乙外同步自同步 面向字符的同步格式 :SYN SYN SOH 标题 STX 数据块 ETB/ETX 块校验此时,传送的数据和控制信息都必须由规定的字符集 (如ASCII码)中的字符所组成。图中帧头为1个或2个同 步字符SYN(ASCII码为16H)。SOH为序始字符 (ASCII码为01H),表示标题的开始,标题中包含源地 址、目标地址和路由指示等信息。STX为文始字符 (ASCII码为02H),表示传送的数据块开始。数据块是 传送的正文内容,由多个字符组成。数据块后面是组终 字符ETB(ASCII码为17H)或文终字符ETX(ASCII码 为03H)。然后是校验码。典型的面向字符的同步规程 如IBM的二进制同步规程BSC。 面向位的同步格式 :8位 位 地址场 8位 控制场 ≥0位 信息场 16位 校验场 8位 此时,将数据块看作数据流,并用序列作为开始 和结束标志。为了避免在数据流中出现序列时引起 的混乱,发送方总是在其发送的数据流中每出现5个连续的1 就插入一个附加的0;接收方则每检测到5个连续的1并且其后 有一个0时,就删除该0。 典型的面向位的同步协议如ISO的高级数据链路控制规程 HDLC和IBM的同步数据链路控制规程SDLC。 同步通信的特点是以特定的位组合“”作为帧的 开始和结束标志,所传输的一帧数据可以是任意位。所以传 输的效率较高,但实现的硬件设备比异步通信复杂。 二、串行通信的传输方向1、单工 单工是指数据传输仅能沿一个方向,不能实现反向传输。 2、半双工 半双工是指数据传输可以沿两个方向,但需要分时进行。 3、全双工 全双工是指数据可以同时进行双向传输。发送 发送 接收 接收时间2 时间1接收 发送发送 接收接收 发送单工半双工全双工 三、信号的调制与解调利用调制器(Modulator)把数字信号转换成 模拟信号,然后送到通信线路上去,再由解调器 (Demodulator)把从通信线路上收到的模拟信 号转换成数字信号。由于通信是双向的,调制器 和解调器合并在一个装置中,这就是调制解调器 MODEM。RS-232C RS-232C电话网 DTE DCE DCE DTE 四、串行通信的错误校验1、奇偶校验 在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇 校验时,数据中“1”的个数与校验位“1”的个数之和应为奇 数;偶校验时,数据中“1”的个数与校验位“1”的个数之和 应为偶数。接收字符时,对“1”的个数进行校验,若发现不 一致,则说明传输数据过程中出现了差错。 2、代码和校验 代码和校验是发送方将所发数据块求和(或各字节异或), 产生一个字节的校验字符(校验和)附加到数据块末尾。接 收方接收数据同时对数据块(除校验字节外)求和(或各字 节异或),将所得的结果与发送方的“校验和”进行比较, 相符则无差错,否则即认为传送过程中出现了差错。 3、循环冗余校验 这种校验是通过某种数学运算实现有效信息与校验位之间的 循环校验,常用于对磁盘信息的传输、存储区的完整性校验 等。这种校验方法纠错能力强,广泛应用于同步通信中。 五、传输速率与传输距离 1、传输速率比特率是每秒钟传输二进制代码的位数,单位 是:位/秒(bps)。如每秒钟传送240个字 符,而每个字符格式包含10位(1个起始位、1 个停止位、8个数据位),这时的比特率为: 10位×240个/秒 = 2400 bps 2、传输距离与传输速率的关系串行接口或终端直接传送串行信息位流的 最大距离与传输速率及传输线的电气特性有 关。当传输线使用每0.3m(约1英尺)有 50PF电容的非平衡屏蔽双绞线时,传输距离 随传输速率的增加而减小。当比特率超过 1000 bps 时,最大传输距离迅速下降,如 9600 bps 时最大距离下降到只有76m(约 250英尺)。 7.1.2串行通信接口标准一、RS-232C接口RS-232C是EIA(美国电子工业协会)1969年修订RS232C标准。RS-232C定义了数据终端设备(DTE)与数据 通信设备(DCE)之间的物理接口标准。 1、机械特性 RS-232C接口规定使用25针连接器,连接器的尺寸及每个 插针的排列位置都有明确的定义。(阳头)1 13 1 5142569 2、功能特性 4、过程特性过程特性规定了信号之间的时序关系,以便正 确地接收和发送数据 。TXD 计 算 机 RXD RTS DSR TXD RXD RTS DSR 计 算 机M O D E M电话线M O D E M远程通信连接 TXD 计 RXD 算 机 甲TXD RXD 计 算 机 乙计 算 机 甲TXD RXD 4 5 6 20TXD RXD 4 计 5 算 6 机 20 乙近程通信连接 5、RS-232C电平与TTL电平转换驱动电路MC1488-12V1 2 4 3MC1489+12V2 1 6 5 14 3+5VTTL 电平5 9 10 12 138RS232 电平RS232 电平4 9 106TTL 电平81112 13 1177MC1488-12V1 2 4 5 9 10 12 13 3MC1489+12V2 14 3+5VTTL 电平6RS232 电平1 5 4TTL 电平689 10 811127地13117 6、采用RS-232C接口存在的问题1、传输距离短,传输速率低 RS-232C总线标准受电容允许值的约束,使用时传输距离 一般不要超过15米(线路条件好时也不超过几十米)。最高传 送速率为20Kbps。2、有电平偏移 RS-232C总线标准要求收发双方共地。通信距离较大时, 收发双方的地电位差别较大,在信号地上将有比较大的地电流 并产生压降。 3、抗干扰能力差 RS-232C在电平转换时采用单端输入输出,在传输过程中 当干扰和噪声混在正常的信号中。为了提高信噪比,RS-232C 总线标准不得不采用比较大的电压摆幅。 二、RS-422A接口SN75174 +5V SN75175 TTL 电平 TTL 电平+5V双向需4条线SN75175SN75174RS-422A输出驱动器为双端平衡驱动器。如果其中一条 线为逻辑“1”状态,另一条线就为逻辑“0”,比采用单端不 平衡驱动对电压的放大倍数大一倍。差分电路能从地线干扰 中拾取有效信号,差分接收器可以分辨200mV以上电位差。 若传输过程中混入了干扰和噪声,由于差分放大器的作用, 可使干扰和噪声相互抵消。因此可以避免或大大减弱地线干 扰和电磁干扰的影响。RS-422A传输速率(90Kbps)时, 传输距离可达1200米。 三、RS-485接口TTL 电平 TTL 电平双向仅需2条线RS-485是RS-422A的变型:RS-422A用于全双工,而 RS-485则用于半双工。RS-485是一种多发送器标准,在通 信线路上最多可以使用32 对差分驱动器/接收器。如果在一个 网络中连接的设备超过32个,还可以使用中继器。 RS-485的信号传输采用两线间的电压来表示逻辑1和逻辑 0。由于发送方需要两根传输线,接收方也需要两根传输线。 传输线采用差动信道,所以它的干扰抑制性极好,又因为它 的阻抗低,无接地问题,所以传输距离可达1200米,传输速 率可达1Mbps。 RS-485是一点对多点的通信接口,一般 采用双绞线的结构。普通的PC机一般不带 RS485接口,因此要使用RS-232C/RS-485转 换器。对于单片机可以通过芯片MAX485来 完成TTL/RS-485的电平转换。在计算机和单 片机组成的RS-485通信系统中,下位机由单 片机系统组成,上位机为普通的PC机,负责 监视下位机的运行状态,并对其状态信息进 行集中处理,以图文方式显示下位机的工作 状态以及工业现场被控设备的工作状况。系 统中各节点(包括上位机)的识别是通过设 置不同的站地址来实现的。 7.2 80C51的串行口7.2.1 80C51串行口的结构TXD SBUFTH1 TL1 1控制门 发送控制器÷16TI去串口中断≥1AT1溢出率÷20 SMOD接收控制器 移位寄存器RIRXD SBUF有两个物理上独立的接收、发送缓冲器SBUF,它们占 用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因 为发送时CPU是主动的,不会产生重叠错误。 7.2.280C51串行口的控制寄存器SCON 是一个特殊功能寄存器,用以设定串行口的工 作方式、接收/发送控制以及设置状态标志:SM0和SM1为工作方式选择位,可选择四种工作方式: ●SM2,多机通信控制位,主要用于方式2和方式3。 当接收机的SM2=1时可以利用收到的RB8来控制是否 激活RI(RB8=0时不激活RI,收到的信息丢弃; RB8=1时收到的数据进入SBUF,并激活RI,进而在 中断服务中将数据从SBUF读走)。当SM2=0时,不 论收到的RB8为0和1,均可以使收到的数据进入 SBUF,并激活RI(即此时RB8不具有控制RI激活的 功能)。通过控制SM2,可以实现多机通信。 在方式0时,SM2必须是0。在方式1时,若SM2=1, 则只有接收到有效停止位时,RI才置1。 ●REN,允许串行接收位。由软件置REN=1,则启动 串行口接收数据;若软件置REN=0,则禁止接收。 ●TB8,在方式2或方式3中,是发送数据的 第九位,可以用软件规定其作用。可以用作 数据的奇偶校验位,或在多机通信中,作为 地址帧/数据帧的标志位。 在方式0和方式1中,该位未用。 ●RB8,在方式2或方式3中,是接收到数据 的第九位,作为奇偶校验位或地址帧/数据帧 的标志位。在方式1时,若SM2=0,则RB8 是接收到的停止位。 ●TI,发送中断标志位。在方式0时,当串行 发送第8位数据结束时,或在其它方式,串 行发送停止位的开始时,由内部硬件使TI置1, 向CPU发中断申请。在中断服务程序中,必 须用软件将其清0,取消此中断申请。 ●RI,接收中断标志位。在方式0时,当串 行接收第8位数据结束时,或在其它方式, 串行接收停止位的中间时,由内部硬件使RI 置1,向CPU发中断申请。也必须在中断服 务程序中,用软件将其清0,取消此中断申 请。 PCON中只有一位SMOD与串行口工作有关 :SMOD(PCON.7) 波特率倍增位。在串行口方式1、 方式2、方式3时,波特率与SMOD有关,当SMOD=1时, 波特率提高一倍。复位时,SMOD=0。 7.2.3 80C51串行口的工作方式一、方式0 方式0时,串行口为同步移位寄存器的输入输出方式。主 要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚 输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发 送和接收均为8位数据,低位在先,高位在后。波特率固定 为fosc/12。 1、方式0输出写入SBUF RXD(数据) TXD(移位脉冲) TI(中断标志)D0 D1 D2 D3 D4 D5 D6 D7 2、方式0输入REN=1 RI=0 RXD(数据输入) D0 D1 D2 D3 D4 D5 D6 D7TXD(移位脉冲)方式0接收和发送电路RXD 80C51 TXDP1.0 A B CLK74LS164CLR GNDRXD 80C51 TXDP1.0Q74LS165CLK S/L GND 二、方式1方式1是10位数据的异步通信口。TXD为数据发送引脚, RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1 位起始位,8位数据位,1位停止位。空 闲 起 始 位 D0 LSB 1帧共10位 数据位8位 D7 MSB 停 止 位 空 闲1、方式1输出写入SBUF TXD TI(中断标志) 起始D0 D1 D2 D3 D4 D5 D6 D7停止位 2、方式1输入RXD 位采样脉冲 RI(中断标志) 起始D0 D1 D2 D3 D4 D5 D6 D7停止位用软件置REN为1时,接收器以所选择波特率的16倍速率采 样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则 说明起始位有效,将其移入输入移位寄存器,并开始接收这一 帧信息的其余位。接收过程中,数据从输入移位寄存器右边移 入,起始位移至输入移位寄存器最左边时,控制电路进行最后 一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时, 将接收到的9位数据的前8位数据装入接收SBUF,第9位(停 止位)进入RB8,并置RI=1,向CPU请求中断。 三、方式2和方式3方式2或方式3时为11位数据的异步通信口。TXD为数据发 送引脚,RXD为数据接收引脚起 始 位 D0 LSB。停 止 位 D7 MSB 空 闲1帧共11位 空 闲 数据位9位RB8/TB8方式2和方式3时起始位1位,数据9位(含1位附加的第9位, 发送时为SCON中的TB8,接收时为RB8),停止位1位,一 帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32, 方式3的波特率由定时器T1的溢出率决定。 1、方式2和方式3输出写入SBUF TXD TI(中断标志) 起始D0 D1 D2 D3 D4 D5 D6 D7 TB8停止位发送开始时,先把起始位0输出到TXD引脚,然后发送移 位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都 使输出移位寄存器的各位右移一位,并由TXD引脚输出。 第一次移位时,停止位“1”移入输出移位寄存器的第9位 上 ,以后每次移位,左边都移入0。当停止位移至输出位时, 左边其余位全为0,检测电路检测到这一条件时,使控制电 路进行最后一次移位,并置TI=1,向CPU请求中断。 2、方式2和方式3输入RXD 位采样脉冲 RI(中断标志) 起始D0 D1 D2 D3 D4 D5 D6 D7 RB8停止位接收时,数据从右边移入输入移位寄存器,在起 始位0移到最左边时,控制电路进行最后一次移位。 当RI=0,且SM2=0(或接收到的第9位数据为1)时, 接收到的数据装入接收缓冲器SBUF和RB8(接收数 据的第9位),置RI=1,向CPU请求中断。如果条件 不满足,则数据丢失,且不置位RI,继续搜索RXD 引脚的负跳变。 四、波特率的计算 在串行通信中,收发双方对发送或接收数据的 速率要有约定。通过软件可对单片机串行口编程为 四种工作方式,其中方式0和方式2的波特率是固 定的,而方式1和方式3的波特率是可变的,由定 时器T1的溢出率来决定。 串行口的四种工作方式对应三种波特率。由于 输入的移位时钟的来源不同,所以,各种方式的波 特率计算公式也不相同。 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64)?fosc 方式1的波特率 =(2SMOD/32)? (T1溢出率) 方式3的波特率 =(2SMOD/32)? (T1溢出率) 当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入 的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这 时溢出率取决于TH1中的计数值。 T1 溢出率 = fosc /{12×[256 -(TH1)]} 在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所 以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系 如表所示。 串行口工作之前,应对其进行初始化,主 要是设置产生波特率的定时器1、串行口控 制和中断控制。具体步骤如下:?确定T1的工作方式(编程TMOD寄存器); ?计算T1的初值,装载TH1、TL1; ?启动T1(编程TCON中的TR1位); ?确定串行口控制(编程SCON寄存器);串行口在中断方式工作时,要进行中断设置 (编程IE、IP寄存器)。 7.3 单片机串行口应用举例在计算机组成的测控系统中,经常要利用 串行通信方式进行数据传输。80C51单片机的 串行口为计算机间的通信提供了极为便利的条 件。利用单片机的串行口还可以方便地扩展键 盘和显示器,对于简单的应用非常便利。这里 仅介绍单片机串行口在通信方面的应用。 7.3.1 单片机与单片机的通信一、点对点的通信 1、硬件连接TXD RXD 80C51T1OUT MAX232A R2IN R2OUTT1INR1OUT GND MAX232A RT2IN 2IN T2OUTGNDR1INRXD TXD 80C51系统1GND系统2T2OUT 二、多机通信1、硬件连接 单片机构成的多机系统常采用总线型主从式结构。所谓主从 式,即在数个单片机中,有一个是主机,其余的是从机,从机 要服从主机的调度、支配。80C51单片机的串行口方式2和方 式3适于这种主从式的通信结构。当然采用不同的通信标准时, 还需进行相应的电平转换,有时还要对信号进行光电隔离。在 实际的多机应用系统中,常采用RS-485串行标准总线进行数 据传输。TXD RXD 主机 RXD TXD 1号从机 RXD TXD 2号从机 ? ? RXD TXD N号从机 2、通信协议?所有从机的SM2位置1,处于接收地址帧状态。 ?主机发送一地址帧,其中8位是地址,第9位为地址/ 数据的区分标志,该位置1表示该帧为地址帧。 ?所有从机收到地址帧后,都将接收的地址与本机的 地址比较。对于地址相符的从机,使自己的SM2位置 0(以接收主机随后发来的数据帧),并把本站地址 发回主机作为应答;对于地址不符的从机,仍保持 SM2=1,对主机随后发来的数据帧不予理睬。 ?从机发送数据结束后,要发送一帧校验和,并置第9 位(TB8)为1,作为从机数据传送结束的标志。 ?主机接收数据时先判断数据接收标志(RB8),若 RB8=1,表示数据传送结束,并比较此帧校验和,若 正确则回送正确信号00H,此信号命令该从机复位 (即重新等待地址帧);若校验和出错,则发送 0FFH,命令该从机重发数据。若接收帧的RB8=0, 则存数据到缓冲区,并准备接收下帧信息。 ?主机收到从机应答地址后,确认地址是否相符,如 果地址不符,发复位信号(数据帧中TB8=1);如果 地址相符,则清TB8,开始发送数据。 ?从机收到复位命令后回到监听地址状态(SM2=1)。 否则开始接收数据和命令。 3、应用程序?主机发送的地址联络信号为:00H,01H,02H ,… …(即从机设备地 址),地址FFH为命令各从机复位,即恢复SM2=1。 ?主机命令编码为:01H,主机命令从机接收数据;02H,主机命令从机发 送数据。其它都按02H对待。RRDY=1:表示从机准备好接收。 TRDY=1:表示从机准备好发送。 ERR=1: 表示从机接收的命令是非法的。 程序分为主机程序和从机程序。约定一次传递数据为16 个字节,以01H地址的从机为例。 ? 1.由上位机发送1给单片机时,蜂鸣器以400ms频率 发声,发2时以200ms频率发声,发3时以100ms频 率发声,发4时关闲蜂鸣器。 ? 1.以2400bps从计算机发送任一字节数据,当单片 机收到该数据后,在此数据前加上一序号然后连同 此数据一起发送至计算机,当序号超过255时归零。 ? 2.以16进制发送一个0-65536之间的任一数,当单 片机收到后在数码管上动态显示出来,波特率自定。 ? 3. 用AD以1HZ的频率采集模拟信号,然后转换成数 字量,再将其以1200bps发送到计算机,在计算机 上显示。 ? 4.按下矩阵键盘第一行时以1200bps发送,1,2,3, 4,第二行时以2400bps发送5,6,7,8,第三行 以4800bps发送,9,10,11,12,第四行以 9600pbs 发送,13,14,15,16. I2C串行总线的组成及工作原理 8.1 I2C串行总线的组成及工作原理?采用串行总线技术可以使系统的硬件设计大大简化 、系统的体积减小、可靠性提高。同时,系统的更改 和扩充极为容易。 ?常用的串行扩展总线有: I2C (Inter IC BUS)总 线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS等。 本课仅讨论I2C串行总线。 8.1.1I2C串行总线概述I2C总线是PHLIPS公司推出的一种串行总线,是具备多 主机系统所需的包括总线裁决和高低速器件同步功能的高 性能串行总线。I2C总线只有两根双向信号线。一根是数据线SDA,另 一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均 为高电平。连到总线上的任一器件输出的低电平,都将使总 线的信号变低,即各器件的SDA及SCL都是线“与”关系。 每个接到I2C总线上的器件都有唯一的地 址。主机与其它器件间的数据传送可以是 由主机发送数据到其它器件,这时主机即 为发送器。由总线上接收数据的器件则为 接收器。在多主机系统中,可能同时有几个主机企图启 动总线传送数据。为了避免混乱, I2C总线要通 过总线仲裁,以决定由哪一台主机控制总线。在80C51单片机应用系统的串行总线扩展中, 我们经常遇到的是以80C51单片机为主机,其它 接口器件为从机的单主机情况。 8.1.2I2C总线的数据传送一、数据位的有效性规定I2C总线进行数据传送时,时钟信号为高电平期间,数据 线上的数据必须保持稳定,只有在时钟线上的信号为低电 平期间,数据线上的高电平或低电平状态才允许变化。 二、起始和终止信号SCL线为高电平期间,SDA线由高电平向低电 平的变化表示起始信号;SCL线为高电平期间, SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生 后,总线就处于被占用的状态;在终止信号产生后,总线 就处于空闲状态。连接到I2C总线上的器件,若具有I2C总线的硬件接口,则 很容易检测到起始和终止信号。接收器件收到一个完整的数据字节后,有可能需要完成 一些其它工作,如处理内部中断服务等,可能无法立刻接收 下一个字节,这时接收器件可以将SCL线拉成低电平,从而 使主机处于等待状态。直到接收器件准备好接收下一个字节 时,再释放SCL线使之为高电平,从而使数据传送可以继续 进行。 三、数据传送格式 (1)字节传送与应答每一个字节必须保证是8位长度。数据传送时,先传 送最高位(MSB),每一个被传送的字节后面都必须跟 随一位应答位(即一帧共有9位)。 由于某种原因从机不对主机寻址信号应答时(如从机 正在进行实时性的处理工作而无法接收总线上的数据), 它必须将数据线置于高电平,而由主机产生一个终止信号 以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后 无法继续接收更多的数据时,从机可以通过对无法接收的 第一个数据字节的“非应答”通知主机,主机则应发出终 止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须 向从机发出一个结束传送的信号。这个信号是由对从机的 “非应答”来实现的。然后,从机释放SDA线,以允许主 机产生终止信号。 (2)数据帧格式 I2C总线上传送的数据信号是广义的,既包括地址 信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位), 第8位是数据的传送方向位(R/T),用“0”表示主 机发送数据(T),“1”表示主机接收数据(R)。 每次数据传送总是由主机产生的终止信号结束。但 是,若主机希望继续占用总线进行新的数据传送, 则可以不产生终止信号,马上再次发出起始信号对 另一从机进行寻址。 在总线的一次数据传送过程中,可以有以下几种 组合方式: a、主机向从机发送数据,数据传送方向在整 个传送过程中不变:注:有阴影部分表示数据由主机向从机传送,无阴影部分则 表示数据由从机向主机传送。 A表示应答, A非表示非应答(高电平)。S表示起始信号, P表示终止信号。。 b、主机在第一个字节后,立即从从机读数据c、在传送过程中,当需要改变传送方向时, 起始信号和从机地址都被重复产生一次,但 两次读/写方向位正好反相。 四、总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字 节(寻址字节是起始信号后的第一个字节)。 (1)寻址字节的位定义D7~D1位组成从机的地址。D0位是数据 传送方向位,为“0”时表示主机向从机写数 据,为“1”时表示主机由从机读数据。 ?主机发送地址时,总线上的每个从机都将这7 位地址码与自己的地址进行比较,如果相同, 则认为自己正被主机寻址,根据R/T位将自己 确定为发送器或接收器。 ?从机的地址由固定部分和可编程部分组成。 在一个系统中可能希望接入多个相同的从机, 从机地址中可编程部分决定了可接入总线该类 器件的最大数目。如一个从机的7位寻址位有 4位是固定位,3位是可编程位,这时仅能寻 址8个同样的器件,即可以有8个同样的器件 接入到该I2C总线系统中。 8.2 80C51单片机I2C串行总线器件的接口 8.2.1 总线数据传送的模拟主机可以采用不带I2C总线接口的单片机,如 80C51、AT89C2051等单片机,利用软件实现I2C 总线的数据传送,即软件与硬件结合的信号模拟。 一、典型信号模拟 为了保证数据传送的可靠性,标准的I2C总线的数 据传送有严格的时序要求。I2C总线的起始信号、终 止信号、发送“0”及发送“1”的模拟时序 :
二、典型信号模拟子程序(1)起始信号 Void T2CStart(void) { SDA = 1; SomeNop( ); SCL = 1; SomeNop( ); SDA = 0; SomeNop( ); } (2)终止信号 void I2cStop(void) { SDA = 0; SomeNop( ); SCL = 1; SomeNop( ); SDA = 1; SomeNop( ); } 8.2.2 I2C总线器件的扩展一、扩展电路 二、串行E2PROM的扩展(1)串行E2PROM典型产品ATMEL公司的AT24C系列:AT24C01:128字节(128×8位); AT24C02:256字节(256×8位); AT24C04:512字节(512×8位) AT24C08:1K字节(1K×8位); AT24C16:2K字节(2K×8位); (2)写入过程AT24C系列E2PROM芯片地址的固定部分为 1010,A2、A1、A0引脚接高、低电平后得到确定 的3位编码。形成的7位编码即为该器件的地址码。单片机进行写操作时,首先发送该器件的7位地 址码和写方向位“0”(共8位,即一个字节),发 送完后释放SDA线并在SCL线上产生第9个时钟信 号。被选中的存储器器件在确认是自己的地址后, 在SDA线上产生一个应答信号作为相应,单片机收 到应答后就可以传送数据了。 传送数据时,单片机首先发送一个字节的被写入器件的 存储区的首地址,收到存储器器件的应答后,单片机就逐个 发送各数据字节,但每发送一个字节后都要等待应答。 AT24C系列器件片内地址在接收到每一个数据字节地址后 自动加1,在芯片的“一次装载字节数”(不同芯片字节数不 同)限度内,只需输入首地址。装载字节数超过芯片的“一 次装载字节数”时,数据地址将“上卷”,前面的数据将被 覆盖。 当要写入的数据传送完后,单片机应发出终止信号以结束 写入操作。写入n个字节的数据格式 : (3)读出过程单片机先发送该器件的7位地址码和写方向位“0”(“伪 写”),发送完后释放SDA线并在SCL线上产生第9个时钟信 号。被选中的存储器器件在确认是自己的地址后,在SDA线 上产生一个应答信号作为回应。 然后,再发一个字节的要读出器件的存储区的首地址,收 到应答后,单片机要重复一次起始信号并发出器件地址和读 方向位(“1”),收到器件应答后就可以读出数据字节,每 读出一个字节,单片机都要回复应答信号。当最后一个字节 数据读完后,单片机应返回以“非应答”(高电平),并发 出终止信号以结束读出操作。 移位操作? 左移时最低位补0,最高位移入PSW的CY位 ? 右移时最高位保持原数,最低位移除。

我要回帖

更多关于 单片机数码管显示 的文章

 

随机推荐