第三部分 8051扩展资源的C编程.ppt_第1页
第三部分 8051扩展资源的C编程.ppt_第2页
第三部分 8051扩展资源的C编程.ppt_第3页
第三部分 8051扩展资源的C编程.ppt_第4页
第三部分 8051扩展资源的C编程.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

教学基本要求 1 熟悉8255 8155接口的C编程 2 掌握DAC0832接口的C编程 3 掌握ADC0809接口的C编程 4 掌握键盘接口的C编程 5 掌握LED显示器接口的C编程 教学重点 1 键盘接口的C编程 2 LED显示器接口的C编程 教学难点 1 在Keil中调试各接口程序 第三部分8051扩展资源的C编程 一 8255应用的C编程 例 用8255控制打印机8255采用方式0 打印机忙时 BUSY 1 STB上升沿锁存时数据 假设高8位不用的地址线为0 低8位不用为1 则A口 B口 C口和命令口地址为 007CH 0000000001111100 B口为007DH C口为007EH 命令口为007FH 8EH 10001110 A口方式0输出 C口高为输入 C口低为输出 方式选择命令字为 向打印机输出字符串 WELCOME include include defineucharunsignedchar defineCOM8255XBYTE 0 x007f definePA8255XBYTE 0 x007c definePC8255XBYTE 0 x007e voidtoprn uchar p 打印字符串函数 while p 0 while 0 x80 voidmain void ucharidataprn WELCOME COM8255 0 x8e 输出方式选择命令字 COM8255 0 x01 toprn prn 打印字符串 8155应用的C编程 8155可直接与8051接口 8155的RAM和I O编址由IO M和ALE锁存地址决定 IO M 0 选择RAM 编址为00H 0FFH IO M 1 对8155的I O进行读写 编址如下 例 用8155控制打印机 下面是打印 北京SPRING1999 的程序 其中汉字 北京 在硬汉字库的标准机内代码为B1B1H和BEA9H 打印机与8051采用中断的方式联络 程序名prnbyte c include include defineucharunsignedchar defineCOM8155XBYTE 0 x7ff0 definePA8155XBYTE 0 x7ff1 definePC8155XBYTE 0 x7ff3 sbitBUSY P3 3 ucharcodetrb 17 0 xb1 0 xb1 0 xbe 0 xa9 0 x20 0 x53 0 x50 0 x52 0 x49 0 x4e 0 x47 0 x20 0 x31 0 x39 0 x39 0 x39 0 x0a 北京SPRING1999 uchart1 17 voidprt uchard 打印一字符函数 PA8155 d 送打印字代码 PC8155 0 x00 产生 STB低电平 PC8155 0 x01 产生 STB上升沿 while BUSY voidmain void COM8155 0 x0f 置命令字 prt 0 x1c 送中文打印方式命令字高字节 prt 0 x26 送中文打印方式命令字低字节 EA 1 开CPU中断 EX1 1 开外中断1 while 1 voidint1 inerrupt2using1 打印机中断服务函数 uchari EA 0 for i 0 i t1 i 打印一串字符 prt tab i EA 1 EX1 0 关打印机中断 二 DAC0832应用的C编程 例1 8051与DAC0832双缓冲接口的数据转换程序举例 两片DAC0832的输入寄存器地址分别为8FFFH和A7FFH 两芯片的DAC寄存器地址为2FFFH 将data1和data2数据同时转换为模拟量的C51程序如下 include include defineINPUTR1XBYTE 0 x8fff defineINPUTR2XBYTE 0 xa7ff defineDACRXBYTE 0 x2fff defineucharunsignedcharvoiddac2b data1 data2 uchardata1 data2 INPUTR1 data1 送数据到一片0832 INPUTR2 data2 送数据到另一片0832 DACR 0 启动两路D A同时转换 例2 8051与DAC0832单缓冲区接口的数据转换举例 根据片选线确定FFFEH为DAC0832的端口地址 使运行输出端输出一个锯齿波电压信号的C51程序如下 include include defineDA0832XBYTE 0 xfffe defineucharunsignedchar defineuintunsignedintvoidstair void uchari while 1 for i 0 i 255 i I 形成锯齿波输出值 最大值为255 DA0832 i D A转换输出 三 ADC0809应用的C编程 例 ADC0809与8051接口的数据采集程序举例 从ADC0809的8通道轮流采集一次数据 结果送数组ad 程序如下 include include defineucharunsignedchar defineIN0XBYTE 0 x7ff8 设置AD0809的通道0地址 sbitad busy P3 3 即EOC状态 voidad0809 ucharidata x 采样结果放指针中的A D采集函数 uchari ucharxdata ad adr ad adr IN0 for i 0 i 8 i 处理8通道 ad adr 0 启动转换 i i 延时 i i while ad busy 0 查询等待转换结束 x i ad adr 存转换结果 ad adr 下一通道 voidmain void staticucharidataad 10 ad0809 ad 采样AD0809通道的值 例 4 4键盘的扫描程序 四 键盘接口的C编程 扫描程序查询的内容为 1 查询是否有键按下 首先单片机向行扫描P1 0 P1 3输出全为 0 扫描码F0H 然后从列检查口P1 4 P1 7输入列扫描信号 只要有一列信号不为 1 即P1口不为F0H 则表示有键按下 接着要查出按下键所在的行 列位置 2 查询按下键所在的行列位置 单片机将得到的信号取反 P1 4 P1 7中的为1的位便是键所在的列 接下来要确定键所在的行 需要进行逐行扫描 单片机首先使P1 0为 0 P1 1 P1 7为 1 即向P1口发送扫描码FEH 接着输入列检查信号 若全为 1 表示不在第一行 接着使P1 1接地 其余为 1 再读入列信号 这样逐行发 0 扫描码 直到找到按下键所在的行 将该行扫描码取反保留 当各行都扫描以后仍没有找到 则放弃扫描 认为是键的误动作 3 对得到的行号和列号译码 得到键值 4 键的抖动处理 当用手按下一个键时 往往会出现所按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况 在释放一个键时 也会出现类似的情况 这就是键抖动 抖动的持续时间不一 通常不会大于10ms 若抖动问题不解决 就会引起对闭合键的多次读入 对于键抖动最方便的解决方法就是当发现有键按下后 不是立即进行逐行扫描 而是延时10ms后再进行 由于键按下的时间持续上百毫秒 延时后再也不迟 扫描函数的返回值为键特征码 若无键按下 返回值为0 程序如下 include defineucharunsignedchar defineuintunsignedintvoiddlms void voidkbscan void voidmain void ucharkey while 1 key kbscan dlms voiddlms void uchari for i 200 i 0 i ucharkbscan void 键扫描函数 ucharscode recode P1 0 xf0 if P1 0 xf0 0 xf0 若有键按下 dlms 延时去抖动 if P1 0 xf0 0 xf0 scode 0 xfe 逐行扫描初值 while scode 0 x10 0 P1 scode 输出扫描码 if P1 0 xf0 0 xf0 本行有键按下 recode P1 0 xf0 0 x0f return scode recode 返回特征字节码 elsescode scode 1 0 x01 行扫描左移一位 return 0 五 LED数码管显示器的C编程 例1 LED数码管显示器程序设计举例 8155片内4个端口地址如下 命令 状态口 FFF0H口A FFF1H口B FFF2H口C FFF3H6位待显示字符从左到右依次放在dis buf数组中 显示次序从右向左顺序进行 程序中的table为段选码表 表中段选码表存放的次序为0 F等 以下为循环动态显示6位字符的程序 8155命令字为07H include include defineucharunsignedchar defineCOM8155XBYTE 0 xfff0 definePA8155XBYTE 0 xfff1 definePB8155XBYTE 0 xfff2 definePC8155XBYTE 0 xfff3 ucharidatadis buf 6 2 4 6 8 10 12 ucharcodetable 18 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 0 x40 0 x00 voiddl ms uchard voiddisplay ucharidata p ucharsel i COM8155 0 x07 送命令字 sel 0 x01 选出右边的LED for i 0 i 6 i PB8155 table p 送段码 PA8155 sel 送位选码 dl ms 1 p 缓冲

温馨提示

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

评论

0/150

提交评论