周国运单片机原理及应用C语言.ppt_第1页
周国运单片机原理及应用C语言.ppt_第2页
周国运单片机原理及应用C语言.ppt_第3页
周国运单片机原理及应用C语言.ppt_第4页
周国运单片机原理及应用C语言.ppt_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用 C语言版 第9章单片机系统配置及接口 主编 周国运本章制作 鲁庆宾中国水利水电出版社 第9章单片机系统配置及接口 目录9 1键盘接口9 2LED显示接口9 3A D转换接口9 4D A转换接口9 5开关器件接口 本章要点单片机主要应用于测控系统中 应用系统通常需要人的干预 本章主要讲述键盘 显示器 A D转换器 D A转换器 开关器件等的工作原理及接口电路 第9章单片机系统配置及接口 图9 1单片机应用系统配置框图 9 1键盘接口 主要内容9 1 1键盘基本问题9 1 2键盘结构及处理程序9 1 3中断扫描方式 1 键的识别当按键K未被按下时 P1 0输入为高电平 当K闭合时 P1 0输入为低电平 9 1 1键盘基本问题 图9 2按键电路 9 1 1键盘基本问题 2 键的抖动由于机械触点的弹性作用 按键在闭合时不会马上稳定地接通 在断开时也不会一下子断开 在闭合及断开的瞬间均伴随有一连串的抖动 如图9 3所示 抖动时间一般为5 10ms 抖动会引起一次按键被误读多次 为确保CPU对键的一次闭合仅做一次处理 必须去除键抖动 9 1 1键盘基本问题 图9 3按键时的抖动 9 1 1键盘基本问题 一 独立式键盘独立式按键是指各按键相互独立地接通一条输入数据线 当任何一个键按下时 与之相连的输入数据线即可读入数据0 而没有按下时读入1 9 1 2键盘结构及处理程序 优点 电路简单 缺点 键数较多时 要占用较多的I O线 图9 4独立式键盘 键号01234567 10k 8 例9 1设计一个独立式按键的键盘接口 并编写键扫描程序 电路原理图如图9 4所示 键号从上到下分别为0 7 C语言程序清单 includevoidkey unsignedchark P1 0 xff 输入前P1口输出全1k P1 读取按键状态if k 0 xff return 无键按下 返回delay20ms 有键按下 延时去抖 9 1 2键盘结构及处理程序 k P1 if k 0 xff 确认键按下return 抖动引起 返回while P1 0 xff 等待键释放switch k 识别 执行按下的键 case 0 xfe 0号键按下时执行程序段break case 0 xfd 1号键按下时执行程序段break 9 1 2键盘结构及处理程序 2 6号键程序case 0 x7f 7号键按下时执行程序段break 汇编语言程序清单 KEY MOVP1 0FFH P1口为输入口MOVA P1 读取按键状态CPLA 取正逻辑JZEKEY 无键按下 返回 9 1 2键盘结构及处理程序 LCALLDELAY20MS 有键按下 去抖MOVA P1CPLAJZEKEY 抖动引起 返回MOVB A 存键值KEY1 MOVA P1 以下等待键释放CPLAJNZKEY1 未释放 等待MOVA B 取键值送AJBACC 0 PKEY0 0号按下转PKEY0JBACC 1 PKEY1 1号按下转PKEY1 9 1 2键盘结构及处理程序 JBACC 7 PKEY7 7号按下转PKEY7EKEY RETPKEY0 LCALLK0 K0命令处理程序RETPKEY1 LCALLK1 K1命令处理程序RET PKEY7 LCALLK7 K7命令处理程序RET 9 1 2键盘结构及处理程序 二 行列式键盘为了减少键盘与单片机接口时所占用I O线的数目 在键数较多时 通常都将键盘排列成行列矩阵形式 每一水平线 行线 与垂直线 列线 的交叉处通过一个按键来连通 利用这种结构只需N条行线和M条列线 即可组成具有N M个按键的键盘 9 1 2键盘结构及处理程序 图9 54 4矩阵键盘接口 9 1 2键盘结构及处理程序 1 行扫描法工作原理判别键盘中有无键按下 向行线输出全0 读入列线状态 如果有键按下 总有一列线被拉至低电平 从而使列输入不全为1 查找按下键所在的行 依次给各行线送低电平 查列线状态 全为1 则所按下的键不在此行 否则按下的键必在此行 查找按下键所在的列 在上面读入的列值从第0位开始逐位判断 找出为0的位号 即为按下键的列号 按键编码 编号 键号 键值 为了方便找到所按下按键及功能 对按键进行编码 即编号 键号 行首号 列号 行号 4 列号键号要与键名相区分 一般编号与键号相同 9 1 2键盘结构及处理程序 2 键盘扫描子程序C语言程序清单 includeunsignedcharkey void unsignedcharrow col 0 k 0 xff dd 定义行 列 返回值P1 0 xf0 各行输出0 各列输出1dd P1 从P1口输入if dd 0 xf0 returnk 无键按下 返回0 xffdelay5ms 3 延时15ms去抖动dd P1 各行输出0 各列输出1if dd 0 xf0 returnk 无键按下 返回0 xff 9 1 2键盘结构及处理程序 判断是否有键按下 判断是否有键按下 scan 0 xfe 行扫描码for row 0 row 1 break 跳出外层循环 scan scan 2 1 左移1位 returnk 返回键值 9 1 2键盘结构及处理程序 2 键盘扫描子程序C语言程序清单 includecharkey charrow col 0 k 1 定义行 列 返回值P1 0 xf0 各行全输出0if P1 0 xf0 returnk 无键按下 返回 1delay20ms 延时去抖if P1 0 xf0 returnk 抖动引起 返回 1 9 1 2键盘结构及处理程序 for row 0 row 4 row 行扫描 P1 1 row 扫描值送P1k P1 返回键值 9 1 2键盘结构及处理程序 汇编语言程序清单 返回键值 在累加器A中 KEY LCALLKS 判断是否有键按下JZEKEY 无键按下 返回LCALLDELAY20MS 延时去抖LCALLKSJZEKEY 抖动引起 返回SKEY MOVR0 0 行扫描计数器R0清0MOVR3 0FEH R3为行扫描字 R1存读取的列值 R2存计算出的键号SKEY1 MOVP1 R3 做行扫描 输出行扫描字 9 1 2键盘结构及处理程序 MOVA P1 读列值MOVR1 A 暂存列值CPLAANLA 0F0HJNZSKEY2 键在该行 转INCR0 行计数器R0加1MOVA R3 R3行扫描字RLAMOVR3 A 下一行扫描字CJNER0 4 SKEY1 行未扫描完转EKEY MOVA 0FFH 无键返回0FFHRET 9 1 2键盘结构及处理程序 SKEY2 MOVA R1 查找按键所在列JNBACC 4 SKEY3 在第0列JNBACC 5 SKEY4 在第1列JNBACC 6 SKEY5 在第2列JNBACC 7 SKEY6 在第3列SKEY3 MOVR2 0 存列号于R2SJMPDKEYSKEY4 MOVR2 1 存列号于R2SJMPDKEY 转去计算键号SKEY5 MOVR2 2 存2列号SJMPDKEY 9 1 2键盘结构及处理程序 SKEY6 MOVR2 3 存3列号SJMPDKEYDKEY MOVA R0 计算键号 行号送AMOVB 4MULABADDA R2 行号 4 列号 键值PUSHACCLK LCALLKS 等待键释放JNZLKPOPACCRET 9 1 2键盘结构及处理程序 是否有键按下子程序 有返回非0 无返回0KS MOVP1 0F0HMOVA P1CPLAANLA 0F0HRET 9 1 2键盘结构及处理程序 3 行列反转法识别按键判别键盘中有无键按下 方法同行扫描法 行列反转输出 输入各行输出0 各列输出1 只输入列值 或输入的各行清0 各列输出读入的值 各行输出1 只输入行值 或输入的各列清0 合并行列值 得到所按下键的唯一的行列值 由行列值查表确定其键值 9 1 2键盘结构及处理程序 行列不能独立操作 4 行列反转法识别按键子程序C语言程序代码 includeunsignedcharkey charcodekeycode 0 xee 0 xde 0 xbe 0 x7e 0 xed 0 xdd 0 xbd 0 x7d 0 xeb 0 xdb 0 xbb 0 x7b 0 xe7 0 xd7 0 xb7 0 x77 16个按键的键值与行列组合值的对应关系 9 1 2键盘结构及处理程序 unsignedcharrow col i k 0 xff 定义行 列 返回值 循环控制变量P1 0 xf0 if P1 读取行值 9 1 2键盘结构及处理程序 查找行列组合值在键盘表中位置row row col 把读入的行列值合并for i 0 i 16 i 查表if row keycode i 找到 i即为键值 k i break 对重复键 该方法 处理为无键按下P1 0 xf0 while P1 返回键值 9 1 2键盘结构及处理程序 9 1 3中断扫描方式 为了提高CPU的效率 可以采用中断扫描工作方式 即只有在键盘有键按下时才产生中断申请 CPU响应中断 进入中断服务程序进行键盘扫描 并做相应处理 也可以采用定时扫描方式 即系统每隔一定时间进行键盘扫描 并做相应处理 9 1 3中断扫描方式 74LS21 10k 4 9 2LED显示接口 主要内容9 2 1LED显示器结构与原理9 2 2LED显示器接口及显示方式9 2 3LED显示器与89C52接口及显示子程序 9 2 1LED显示器结构原理 单片机中通常使用7段LED构成字型为 8 且加一个小数点的数码管 以显示数字 符号及小数 常见数码管如下图 显示器有共阴极和共阳极两种 发光二极管的阳极连在一起的称为共阳极显示器 阴极连在一起的称为共阴极显示器 当在某段发光二极管上施加一定的正向电压时 该段笔划即亮 不加电压则暗 对共阴极发光二极管 某段的阳极加上正电压 则对应的段点亮 对共阳极发光二极管 某段的阴极接低电位 则对应的段点亮 9 2 1LED显示器结构原理 以共阴极显示器为例 当a b c三段送1时 数码管显示数字7 c 引脚配置外形图 b 共阳极 a 共阴极 9 2 1LED显示器结构原理 9 2 1LED显示器结构原理 fbec agd h 3F D7D6D5D4D3D2D1D0hgfedcba 06 5B 4F 66 6D 7D 07 6F bc be agd fbec ad 表9 1共阴极和共阳极7段LED显示字型编码表 以上为8段 8段最高位为小数点段 表中为小数点不点亮的段码 9 2 1LED显示器结构原理 9 2 2LED显示方式及接口 LED有静态显示和动态显示两种方式 1 LED静态显示方式静态显示 当显示器显示某个字符时 相应的段 发光二极管 恒定地导通或截止 直到显示另一个字符为止 共阴极 公共端K 接地 共阳极 公共端A 接 5V电源 每个数码管的段选线 a h 分别与一个8位锁存器的输出口相连 各显示位相互独立 优点 亮度较高 编程容易 管理简单 缺点 占用I O口线资源较多 2 LED动态显示方式所有位的段选线 并联在一起 由一个8位I O口控制 各位的公共端 分别由不同的I O线控制 实现各位的分时选通 图9 8为6位共阴极LED动态显示接口电路 9 2 2LED显示器接口及显示方式 图9 86位LED动态显示接口电路 9 2 2LED显示器接口及显示方式 段选 P0口 各位扫描显示 由于6位LED所有段选线皆由P0口控制 要想每位显示不同的字符 就必须采用扫描方法轮流点亮各位LED 在每一瞬间只使某一位显示字符 段选码 位选码控制 P0口输出相应字符段选码 P2口对该显示位送选通电平 保证该位显示相应字符 如此轮流 扫描延时 段选码 位选码每送一次后至少延时1ms 保证每位有一定亮度 因人眼的视觉暂留效应 看上去每个数码管总在亮 9 2 2LED显示器接口及显示方式 9 2 3显示器与89C52接口及显示子程序 下页图为89C52控制的6位共阴极LED动态显示接口电路 P0口输出段选码 P2口输出位选码 74LS245 是双向8位缓冲器 驱动器 逐位轮流点亮各个LED 每一位保持2 5ms 在15 20ms之内再一次点亮 重复不止 图9 9数码管动态显示接口 9 2 3显示器与89C52接口及显示子程序 2 4 5 C语言程序清单 includeunsignedcharcodeLED 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f unsignedcharbuf 6 定义字型码和显示缓冲区voiddisp unsignedchari scan 0 xdf for i 0 i 1 0 x80 9 2 3显示器与89C52接口及显示子程序 汇编语言程序清单 DISP MOVR0 DISPBUF R0指向显示缓冲区MOVR2 0DFH 位码送R2MOVR3 6 6位显示MOVDPTR TAB DPTR指向段码表LOOP MOVA R0 取显示数据MOVCA A DPTR 取出字型码MOVP0 A 送出显示MOVP2 R2 位码送P2口LCALLDELAY2MS 延时2ms 9 2 3显示器与89C52接口及显示子程序 INCR0 数据缓冲区地址加1MOVA R2RRA 位码循环右移一位MOVR2 ADJNZR3 LOOP 扫描到最左边显示位 RETTAB DB3FH 06H 5BH 4FH 66HDB6DH 7DH 07H 7FH 6FH 9 2 3显示器与89C52接口及显示子程序 9 3A D转换器及其接口 主要内容9 3 1串行接口A D转换器及其接口9 3 2并行接口A D转换器及其接口9 3 3单片机内部集成的A D转换器 模 数 A D 转换的方式 有很多种 例如 计数比较型 逐次逼近型 双积分型等 选择A D转换器件主要是从速度 精度和价格上考虑 A D转换器的接口方式 有串行 并行方式 并且有些增强型的单片机在片内集成有A D转换器 9 3A D转换接口 9 3 2串行接口A D芯片TLC2543及接口 本节主要内容 TLC2543的特点TLC2543的功能结构和引脚信号TLC2543的编程命令字TLC2543的接口方式TLC2543的操作时序TLC2543的应用编程 9 3 2串行接口A D芯片TLC2543及接口 TLC2543是TI公司生产的12位 逐次逼近式 CMOS工艺的串行接口A D转换器 它具有输入通道多 速度高 测量范围宽 体积小 接口方便等特点 由于这些特点 受到了系统开发工程师的青睐 得到越来越多的应用 本节主要讨论 TLC2543的特性 结构与引脚信号 命令字 时序 接口与控制编程 1 TLC2543的主要特性1 12位A D转换器 可8位 12位和16位输出2 转换时间 l0 s 高速3 11通道模拟量输入4 3种内建的自检模式5 片内采样 保持电路6 最大线性误差 1个数字量7 内置系统时钟8 有转换结束信号 9 3 2TLC2543及接口 9 单 双极性输出10 数据输出顺序可编程 高位或低位在前11 支持软件关机12 输出数据长度可编程控制13 SPI串行接口 2 TLC2543的内部结构及引脚信号 9 3 2TLC2543及接口 主要是7个部分 TLC2543的引脚信号 9 3 2TLC2543及接口 接口信号 参考电压 模拟信号 模拟信号 分4组 3 TLC2543的命令字TLC2543的每次转换都必须写入命令字 确定下次转换 选用的通道 输出数据位数 输出数据位序 数据极性 输入的命令字高位在前 命令字格式如下 9 3 2TLC2543及接口 数据极性 设置0为单极性 设置1为双极性 补码 数据顺序 设置0高位在前 设置1低位在前数据长度 设置01为8位 设置10或00为12位 设置11为16位 9 3 2TLC2543及接口 外部模拟信号 内部信号 4 TLC2543的接口时序 9 3 2TLC2543及接口 1次完整操作 低电平发送 高电平接收 传送完后开始转换 无效 数据无效 上次数据 转换中为低 对芯片操作期间应低电平 5 TLC2543与89C52的接口及编程 图9 12TLC2543和89C52的接口电路 9 3 2TLC2543及接口 根据TLC2543的接口时序 可以总结得出以下对TLC2543的操作过程与方法 1 使CS变低 一个操作过程开始 2 使CLK变低 从DIN发送1位命令 从高到低发送命令字 3 使CLK变高 从DOUT读取一位数据 4 重复 2 3 直到接收完数据 使CS变高 5 等待A D转换 或延时等待10 s 或查询EOC状态 或用EOC做中断请求 重复以上过程 实现A D转换 9 3 2TLC2543及接口 设TLC2543以8位方式作模数转换 选用AIN0通道 数据的高位在前 单极性信号 编写一函数 控制TLC2543实现模数转换 其命令字为 00000100b 0 x04 1 C语言程序 includesbitCLK P1 0 sbitDIN P1 1 sbitDOUT P1 2 sbitCS P1 3 SbitEOC P1 4 9 3 2TLC2543及接口 6 TLC2543的应用编程 unsignedintTLC2543 unsignedcharcom unsignedchari n unsignedintresult 0 n com 返回转换结果 9 3 2TLC2543及接口 2 汇编语言程序 CLKBIT90HDINBIT91HDOBIT92H 输入CSBIT93HEOCBIT94H 输入TLC2543 MOVA R7 控制字送ACLRCS 片选有效 选中2543JNBEOC EOC为低等待LP1 CLRCLK 时钟变低RLCA A带进位循环左移MOVDIN C 命令字最高位输出SETBCLK 时钟变高MOVC DO 读入1位送C中 9 3 2TLC2543及接口 SETBCLK 时钟变高MOVC DO 读入1位送C中MOVACC 0 C 读入值放ACC 0DJNZR5 LP1 下面判断是否为8位数据 是则返回 否则继续传输MOVR6 A 接收的高位数据送R6MOVA R7 读取参数 控制字ANLA 0CH 计算数据位数CLRCSUBBA 4JNZNT1 A不为0继续接收数据MOVA R6 MOVR7 A 从R7中返回8位数据MOVR6 0 RET 9 3 2TLC2543及接口 NT1 MOVR5 A 传送位数送R5CLRA A清0 继续接收LP2 CLRCLK 时钟变低RLCA A带进位循环左移MOVDIN C 命令字最高位输出SETBCLK 时钟变高MOVC DO 读入1位送C中MOVACC 0 C 读入值放ACC 0DJNZR5 LP2MOVR7 A 将转换的低位存入R7RET子程序执行完后 返回的转换数据在R6 R7中 R6中为高位 R7中为低位 9 3 2TLC2543及接口 TLC2543的引脚信号 20引脚AIN0 AIN10 模拟信号输入CS 片选信号DIN 串行数据输入DOUT 串行数据输出EOC 转换结束信号SCLK I OCLOCK 输入 输出同步时钟REF REF 转换参考电压输入VCC 电源GND 地 9 3 2TLC2543及接口 表9 2输入寄存器命令字格式 9 3 1多通道串行输出A D芯片TLC2543及接口 注 X表示无关项 9 3 1多通道串行输出A D芯片TLC2543及接口 4 TLC2543的SPI操作时序 9 3 1TLC2543及接口 低电平发送 高电平读数据位 123456781112 A11A10A9A8A7A6A5A4A1A0 9 3 2逐次逼近型并行接口A D转换器及接口 1 ADC0809的片内结构及引脚功能ADC0809是CMOS工艺 采用逐次逼近法的8位A D转换芯片 多路开关有8路模拟量输入端 最多允许8路模拟量分时输入 共用一个A D转换器进行转换 图9 13为ADC0809的内部逻辑结构图 它由8路模拟开关 8位A D转换器 三态输出锁存器以及地址锁存译码器等组成 图9 13ADC0809内部逻辑结构结构 9 3 2逐次逼近型并行输出A D转换器及接口 8 位 A D 转换器 8 位 三态 输出 锁存器 8 路 模拟量 开关 地址锁存 译码器 IN 0 IN 7 ADDA ADDB ADDC ALE START CLK EOC D 0 V cc GND V REF V REF OE D7 引脚功能说明如下 IN0 IN7 8个通道的模拟输入信号D0 D7 8位数字量输出信号START 启动信号ALE 地址锁存信号EOC 转换结束信号OE 输出允许控制信号CLOCK 时钟信号VCC电源电压VREF 和VREF A D转换器的参考电压应为模拟信号的最大范围值 如为10 0 5 0 5 5等 9 3 2逐次逼近型并行输出A D转换器及接口 8位模拟开关地址输入通道的关系见表9 3 模拟开关的作用和8选1的CD4051作用相同 表9 38位模拟开关功能表 9 3 2逐次逼近型并行输出A D转换器及接口 2 ADC0809与89C52接口ADC0809芯片的转换时间在最高时钟频率下为100 s左右 ADC0809与89C52连接可采用查询方式 也可采用中断方式 图9 14为中断方式连接电路图 由于ADC0809片内有三态输出锁存器 因此可直接与89C52接口 9 3 2逐次逼近型并行输出A D转换器及接口 图9 14ADC0809与89C52的连接 9 3 2逐次逼近型并行输出A D转换器及接口 这里将ADC0809作为外部扩展并行I O口 采用线选法寻址 ADC0809的ADDA ADDB和ADDC端由P0 0 P0 1 P0 2送出ADC0809的地址由P2 7控制 其他地址位与此无关 设为1 于是ADC0809地址为0 x7fff 其读 写地址均为0 x7fff 在图9 14所示的接口电路中 ADC0809与片外RAM统一编址 9 3 2逐次逼近型并行输出A D转换器及接口 启动ADC0809的工作过程是 执行向端口总线写命令 将通道地址从总线P0口 以数据身份送给0809的ADDA ADDB ADDC 由ALE信号锁存通道地址 同时START有效 启动A D转换 读取转换结果 A D转换完毕 EOC端发出一正脉冲 用其做请求中断 或对其状态查询 然后执行从端口读命令 使OE端有效 将8位数据读入到单片机中 9 3 2逐次逼近型并行输出A D转换器及接口 3 8路巡回检测系统例9 2某粮库或某冷冻厂需对8个温度测量点 8个冷冻室或8个粮仓 进行温度巡回检测 要求设计一个单片机巡回检测系统 使其能对各冷冻室或各粮仓的温度巡回检测并加以处理 设被测温度范围为 30 50 温度检测精度要求不大于 l 温度传感器可选用热电阻 热敏电阻 PN结或集成温度传感器AD590和SL134等芯片 使用0809做A D转换器 采样图9 14的单片机电路 9 3 2逐次逼近型并行输出A D转换器及接口 C语言程序清单 includeunsignedcharxdataADC0809 at 0 x7fff 定义0809地址unsignedcharxdatabuffer 8 at 0 x00a0 存放数据unsignedchardatai 0 voidmain IT1 1 边沿触发EX1 1 EA 1 ADC0809 i 启动0通道转换while 1 9 3 2逐次逼近型并行输出A D转换器及接口 voidint1 srv interrupt2 buffer i ADC0809 读数存放if i 8 最后一个通道没结束ADC0809 i 启动下一个通道转换 9 3 2逐次逼近型并行输出A D转换器及接口 汇编语言主程序 MAIN MOVR0 0A0H 数据暂存区首地址MOVR2 8 8路计数初值MOVR3 0 R3存放通道号SETBIT1 边沿触发SETBEX1SETBEA 开中断MOVDPTR 7FFFH 指向0809MOVA R3MOVX DPTR A 送通道号 启动转换SJMP 9 3 2逐次逼近型并行输出A D转换器及接口 中断服务程序 INT1 SERV MOVXA DPTR 读数MOVP2 0 存数高8位地址MOVX R0 A 存数INCR0 更新存放单元DJNZR2 DONERETIDONE INCR3 通道号加1MOVA R3 准备通道号MOVX DPTR A 送通道号启动转换RETI 9 3 2逐次逼近型并行输出A D转换器及接口 9 3 3单片机内部集成的A D转换器 目前 很多单片机片内集成有A D转换器 下面以STC89LE516AD X2为例 说明A D转换的使用方法 1 STC89LE516AD X2片内A D转换器特点STC89LE516AD X2的模拟量输入在P1口 有8位精度的高速A D转换器 P1 0 P1 7共8路 为电压输入型 可做按键扫描 电池电压检测 频谱检测等 2 特殊功能寄存器 1 功能 引脚 配置寄存器 P1 ADC ENP1 x作为A D转换输入通道允许特殊功能寄存器 地址为97H 复位值为00000000B 格式如下图所示 9 3 3单片机内部集成的A D转换器 2 转换结果寄存器 ADC DATA地址 0C6H 复位值 00000000B 转换值 255 Vin VCC 3 转换控制寄存器 ADC CONTR地址 0C5H 复位值 xxx00000B 格式如下所示 9 3 3单片机内部集成的A D转换器 相关位说明如下 1 ADC FLAG 模拟 数字转换结束标志位 当A D转换完成后 ADC FLAG 1 2 ADC START 模拟 数字转换 ADC 启动控制位 设置为 1 时 开始转换 3 CHS2 CHS1 CHS0 模拟输入通道选择 如表9 4所示 9 3 3单片机内部集成的A D转换器 表9 4模拟输入通道选择 9 3 3单片机内部集成的A D转换器 3 A D转换程序用P1 0为模拟量输入端进行A D转换 程序如下 includesfrP1 ADC EN 0 x97 定义A D功能 引脚 配置寄存器sfrADC CONTR 0 xC5 A D转换控制寄存器sfrADC DATA 0 xC6 A D转换结果寄存器 9 3 3单片机内部集成的A D转换器 延时函数voiddelay unsignedchardelay time unsignedinti while delay time for i 0 i 10000 i 9 3 3单片机内部集成的A D转换器 unsignedcharADC unsignedcharchan AD转换函数 delay 1 使输入电压达到稳定ADC CONTR 0 x08 chan 选择模拟通道 启动A D转换while ADC CONTR 返回转换结果 9 3 3单片机内部集成的A D转换器 9 4D A转换接口 主要内容9 4 18位并行D A转换器DAC0832接口技术9 4 2串行输入D A转换器TLC5615接口技术 9 4 1并行D A转换器DAC0832接口技术 1 DAC0832的结构原理 1 DAC0832的特性 具有两级输入数据寄存器的8位单片D A转换器 它能直接与单片机89C52相连接 具有两级缓冲功能 可以在输出的同时 传送下一个数据 从而提高转换速度 能够在多个转换器同时工作时 实现多通道D A的同步转换输出 主要的特性参数如下 分辨率为8位只需在满量程下调整其线性度可与所有的单片机或微处理器直接接口电流稳定时间为1 s可双缓冲 单缓冲或直通数据输入功耗低 约为200mW逻辑电平输入与TTL兼容单电源供电 5V 15V 9 4 18位并行D A转换器DAC0832接口技术 2 DAC0832的功能结构与引脚信号DAC0832的结构如下图所示 由8位锁存器 8位DAC寄存器和8位D A转换器构成 图9 17DAC0832结构 9 4 18位并行D A转换器DAC0832接口技术 DAC0832各引脚的功能 D0 D7 数字量数据输入引脚ILE 数据锁存允许信号 高电平有效 CS 输入寄存器选择信号 低电平有效 WR1 输入寄存器的 写 选通信号 低电平有效 WR2 DAC寄存器的 写 选通信号 低电平有效 XFER 数据传送信号 低电平有效 VREF 基准电压输入引脚 9 4 18位并行D A转换器DAC0832接口技术 RFB 反馈信号输入线 片内已有反馈电阻 IOUT1 IOUT2 转换的模拟电流输出引脚 二者和为常数 随DAC寄存器的数值线性变化 一般单极性输出时IOUT2接地 VCC 电源DGND 数字地AGND 模拟信号地 9 4 18位并行D A转换器DAC0832接口技术 2 DAC0832与单片机的接口 1 单缓冲器方式接口 DAC0832端口地址 因为P2 7必须为0 其它位为1 所以为0 x7fff 9 4 18位并行D A转换器DAC0832接口技术 C语言程序清单 includeunsignedcharxdataDAC0832 at 0 x7fff 定义DAC0832的端口地址 DAC0832 data1 输出数字量做转换 汇编语言程序清单 MOVDPTR 7FFFHMOVA DATA1MOVX DPTR A 9 4 18位并行D A转换器DAC0832接口技术 2 双缓冲器两路同步输出方式接口图9 19是一个二路同步输出的D A转换接口电路 89C52的P2 5和P2 6分别选择两路D A转换器的输入寄存器 控制输入锁存 P2 7连到两路D A转换器的XFER端控制同步转换输出 WR与所有的WR1 WR2端相连 在执行MOVX指令时 89C52自动输出WR信号 9 4 18位并行D A转换器DAC0832接口技术 图9 19DAC0832双缓冲方式接口 9 4 18位并行D A转换器DAC0832接口技术 IOUT1 IOUT1 0 xdfff 0 xbfff 0 x7fff 各个端口地址 1 DAC0832 1数据输入口地址因为P2 5必须为0 其它位为1 所以为0 xdfff 2 DAC0832 2数据输入口地址因为P2 6必须为0 其它位为1 所以为0 xbfff 3 两个DAC0832数据传输端口地址因为P2 7必须为0 其它位为1 所以为0 x7fff 9 4 18位并行D A转换器DAC0832接口技术 C语言程序清单 include 定义DAC0832的端口地址unsignedcharxdataDAC0832 1 at 0 xdfff unsignedcharxdataDAC0832 2 at 0 xbfff unsignedcharxdataDAC ALL at 0 x7fff 两路同步输出模拟量的方法DAC0832 1 data1 给DAC0832 1送数字量DAC0832 2 data2 给DAC0832 2送数字量DAC ALL 0 使两个XFER有效同时输出模拟量 9 4 18位并行D A转换器DAC0832接口技术 阶梯波是在一定的时间内每隔一段时间输出的幅值递增一个恒定值 如图9 20所示 每隔1ms输出增长一个定值n 经10ms后循环 用DAC0832的单缓冲方式就可以实现这样的波形 图9 20阶梯波波形 9 4 18位并行D A转换器DAC0832接口技术 3 DAC0832应用 锯齿波的产生 n C语言程序清单 n取值 1 25 设n 20 按图9 18 DAC0832的端口地址为0 x7fff include 定义DAC0832的端口地址unsignedcharxdataDAC0832 at 0 x7fff voidmain unsignedchari n 20 while 1 for i 0 i 10 i DAC0832 i n delayms 1 延时1ms 9 4 18位并行D A转换器DAC0832接口技术 9 4 2串行D A转换器TLC5615接口技术 数 模转换器从接口上可分为两大类 并行接口和串行接口 并行接口 引脚多 体积大 占用I O线多 串行接口 体积小 占用单片机的I O线少 1 TLC5615的结构原理TLC5615是具有3线串行接口的数 模转换器 其输出为电压型 最大输出电压是基准电压值的两倍 带有上电复位功能 TLC5615的性价比较高 1 TLC5615的特点10位CMOS模拟电压型输出5V单电源工作3线SPI串行接口最大输出电压是基准电压的2倍建立时间12 5 s内部上电复位低功耗 最高为l 75mW引脚与MAX515兼容 9 4 2串行输入D A转换器TLC5615接口技术 2 功能方框图 图9 21TLC5615功能方框图 9 4 2串行输入D A转换器TLC5615接口技术 3 引脚功能说明DIN 串行数据输入SCLK 串行时钟输入CS 芯片选择 低电平有效DOUT 用于菊花链 daisychaining 的串行数据输出 多个芯片级联AGND 模拟地REFIN 基准电压输入OUT DAC模拟电压输出VDD 电源 4 5 5 5V 9 4 2串行输入D A转换器TLC5615接口技术 4 TLC5615的输入 输出关系图9 23所示的D A输入 输出关系如表9 5所列 表9 5D A转换关系表 9 4 2串行输入D A转换器TLC5615接口技术 因为TLC5615芯片内的输入锁存器为12位宽 所以要在10位数字的低位后面再填以数字XX XX为不关心状态 串行传送的方向是先送出高位MSB 后送出低位LSB 如果有级联电路 则应使用16位的传送格式 即在最高位MSB的前面再加上4个虚位 被转换的10位数字在中间 9 4 2串行输入D A转换器TLC5615接口技术 TLC5615操作时序图 CS低 SCLK低时输出1位 SCLK变高5615读入数据位 9 4 2串行输入D A转换器TLC5615接口技术 2 TL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论