第10章单片机键盘显示器接口讲述.ppt
文本预览下载声明
显示器设置的消隐、闪烁属性,均不影响键盘的使用。除非不用显示器,否则串联在DP及SA~SG引线上的200?电阻不可省去。 如果不使用键盘,图10-19所示的与键盘连接的10k?电阻和100k?电阻便可省去。如果使用键盘,电路中的100k?下拉电阻则不可省去。 HD7279A采用动态循环扫描方式,如果采用普通的LED数码管亮度不够,则可采用高亮度或超高亮度型号的LED数码管。 图10-19所示的3、5、26引脚悬空。 图10-19 AT89S51单片机与HD7279A的接口电路 (2)驱动程序设计 根据图10-19,编程实现当有按键按下时,单片机读取该按键的代码并将其显示在LED数码管上。 程序中使用单片机内RAM的29H和28H两个单元。29H单元位地址为48H~4FH;28H单元位地址为40H~47H。 ① 发送29H单元中的数据到HD7279A,高位在前。程序入口条件为 =1,CLK?=?0。 SETB P1.0 ; =1 CLR P1.1 ;CLK=0 SEND: MOV R2,#08H ;发送8位数据 CLR P1.0 ; =0 LCALL DELY1 ;延时50?s(T1) LOOP1:MOV C,4FH ;29H单元的D7位传至HD7279A MOV P1.2,C ;数据出现在DATA引脚上 SETB P1.1 ;置CLK为高电平, 数据写入HD7279A MOV A,29H ;待发数据左移1位 RL A MOV 29H,A LCALL DELY2 ;延时8?s(T2) CLR P1.1 ;置CLK为低电平 LCALL DELY2 ;延时8?s(T3) DJNZ R2,LOOP1 ;检测8位数据是否发送完毕 CLR P1.2 ;发送完毕, DATA为低电平(输出状态) RET ;返回 ② 读入的键码送到28H单元,高位在前。程序入口条件为 =?0, CLK?=?0。 CLR P1.0 ; =0 CLR P1.1 ;CLK=0 RESE: MOV R2,#08H ;接收8位数据 SETB P1.2 ;P1.2输出锁存器为高电平, 准备输入 LCALL DELY3 ;延时25?s(T5) LOOP2: SETB P1.1 ;置CLK为高电平,读出HD7279A数据 LCALL DELY2 ;延时8?s(T6和T7) MOV A,28H ;接收数据左移1位 RL A MOV 28H,A MOV C,P1.2 ;接收1位数据 MOV 40H,C ;读入数据存入28H的D0位 CLR P1.1 ;置P1.1为低电平 LCALL DELY2 ;延时8?s(T3) DJNZ R2,LOOP2 ;检测8位数据是否发送完毕 CLR P1.2 ;接收完毕,DATA引脚置低电平 RET ;返回 ③ 查询方式读键值并显示 MOV P1,#0F9H ; =1,KEY=1,CLK=0, ;DATA=0 LCALL DELY4 ;延时25ms MOV 29H,#0A4H ;复位命令 LCALL SEND SETB P1.0 ; = 1 MAIN: JB P1.3,MAIN ;检测键盘, 无按键下则等待 MOV 29H,#15H ;发读键盘命令 LCALL SEND ;写入HD7279A LCALL RESE ;读键值到28H单元 SETB P1.0 ; = 1 MOV B,#0AH ;十六进制键值转换成BCD码 MOV A,28H DIV AB MOV R1,A ;十位暂存于R1 MOV 29H,#81H ;按方式0译码显
显示全部