- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章开关量输入输出通道和人机接口
当输入ABCD=1111(15)时,UCR=0。 驱动器输出10 mA电流,并有内部输出限流电阻,可直接与显示器相连接,故LED不需外加限流电阻。 MC14495输入、 输出及显示字符关系如表2-3所示。 表2-3 MC14495输入、输出及显示字符表 (2) MC14495与8031单片机和显示器接口:使用8片MC14495和8位7段LED显示器与8031单片机接口电路如图2-29所示。 由图2-29可见,8个7段LED采用共阴极接法。 用P1口的低4位输出BCD待显示的数字到A、B、C、D公共输入端。由P1口高4位P1.4~P1.7控制74LS138译码器的输出, Y0~Y7分别决定MC14495哪一个输入锁存器的LE有效。这样由P1口一次输出8位代码即可完成一位LED静态显示。 图2-29 使用MC14495的8位静态LED显示接口 图2-29的软件驱动显示程序如下:P1.7=1选中74LS138译码器有效,由P1.6、P1.5、P1.4控制LE端依次选中1#~8#LED之一。 然后根据表2-3由P1.0~P1.3写入BCD码,再使LE由0→1时锁存该数据并译码,驱动和显示。 若使1号LED显示0字符, 则P1口输出1000 0000B=80H, 用程序实现: MOV A,#80H ; 选中1号LED, 显示0字符 MOV P1, A ; 输出, Y0=0, ABCD=0000 其他位的选择和显示0~F字符可根据需要按上述规律编写。 4. 用软件译码的8位动态LED显示接口电路 在单片机人机联系中,显示器采用软件译码并不复杂, 而且软件译码逻辑可根据用户的要求任意编程设定,不受硬件译码器的逻辑限制,可以简化硬件接口电路结构。下面以一个8位7段动态LED显示用软件译码的设计为例加以说明。 (1) 软件译码的动态显示硬件接口设计: 8位7段LED显示器需要两个8位并行输出口,一个输出段选码,另一个输出8位位选码。用8031扩展一片8155 I/O接口可满足要求,用PB口输出段选码, PA口由动态扫描方式输出位选码,用74LS07作为驱动器, 实现上述功能的硬件接口电路如图2-30所示。 图2-30 通过8155扩展 I/O口控制的8位LED动态显示硬件接口电路 (2) 8位动态LED显示程序设计:动态显示程序设计要点有三方面。 · 8155初始化,设定PA口、PB口工作在输出状态,PC口工作在输入状态,且为ALT1方式,控制字为03H。 · 代码转换,从PB口输出段选码,应将待显示的字符0~9,A~F自动转换成段选码,为此,应在EPROM中开辟一个换码表,表中关系由表2-3决定,由指令查表取出段选码。 · 位选码的形成。显示从最左边第1位LED开始,位选码为7FH, 由PA口输出,然后右移一位选择左边第2位,依次轮流。 在两次输出之间延时1 ms,形成动态显示。 按上述要求编制的程序应在8031片内RAM区开辟一个显示缓冲区,存放要进行显示的十六进制数。需要8个单元,首地址为10H单元,存放送往最左边的LED数据,如图2-31所示。 根据上述分析, 8位动态LED显示子程序框图如图2-32所示。 图2-31 LED数字显示缓冲区 图2-32 8位动态LED显示子程序流程图 根据图2-32编写的程序清单如下: DIS: MOV A, #03H ; 8155命令字PA、 PB口基本输出 MOV DPTR,#7F00H ; 8155 I/O命令口地址 MOVX @DPTR,A ; 写入8155方式命令字 MOV R0,#10H ; 送片内显示缓冲区RAM首地址 MOV R3,#7FH ; 位选码, 最左一位先亮 MOV A,R3 ; 暂存于A中 LDO: MOV DPTR, #7F01H ; 指向PA口地址 MOVX @DPTR,A ; 从PA口输出位选码 MOV A,@R0 ; 取待显示数据送A MOV DPTR,#TABLE ; 指向换码表首地址 MOVC A, @A+DPTR ; 取出对应段选码 MOV DPTR, #7F02H ; 指向PB口地址 MOVX @DPTR, A ; 从PB口输出段选码 ACALL DLL ; 调用延时1 ms子程序 MOV A, R3 JNB ACC.0, LD1
文档评论(0)