MCS-51与键盘、显示器的接口.ppt
文本预览下载声明
第7章 MCS-51与键盘、显示器的接口 7.1 MCS-51单片机与键盘接口 7.2 MCS-51单片机与LED显示器接口 7.3 MCS-51单片机与行程开关、晶闸 管、继电器的接口 7.1 MCS-51单片机与键盘接口 7.2 MCS-51单片机与LED显示器接口 一、LED静态显示 例: 程序: DIR:PUSH ACC ;保护现场 PUSH DPH PUSH DPL MOV R2,#08H ;显示8个数 MOV R0,#30H ;显示缓冲区地址送入R0 DL0:MOV A,@R0 ;取要显示的数作查表偏移量 MOV DPTR,#TAB ;指向字形码表首 MOVC A,@A+DPTR ;查表得字形码 MOV SBUF,A ;发送显示 DL1:JNB TI,DL1 ;等待发送完一桢数据 CLR TI ;清标志,准备继续发送 INC R0 ;更新显示单元 DJNZ R2,DL0 ;重复显示所有数码管 POP DPL ;恢复现场 POP DPH POP ACC RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;0,1,2,3,4 DB 92H,82H,0F8H,80H,90H,88H ;5,6,7,8,9,A DB 83H,0C6H,0A1H,86H,8EH ;B,C,D,E,F 二、LED动态显示方式 三、LCD显示 LCD(Liquid Crystal Display): 它是一种被动式的显示器,即液晶本身并不发光,而是利用液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。 LCD只能工作在静态显示方式。 并要求加上专门的驱动芯片4056。 原理与LED类似!! 串行口控制的静态LCD显示(2位) 输出2位显示,即1字节。 程序: #includereg51.h #define uchar unsigned char uchar byte=0x59; void display(uchar x) { SBUF=x; /*由串行口输出*/ while(TI= =0); /*等待8位发送结束*/ TI=0; } void main(void) { display(byte); } 7.3 MCS-51单片机与行程开关、晶闸管、继电器的接口 软件译码动态显示汇编语言程序为: (设8个数码管的显示缓冲区为片内RAM的57H~50H单元) DISPLAY:MOV A, ;8255初始化 MOV DPTR,#7F03H ;使DPTR指向8255控制寄存器端口 MOVX @DPTR,A MOV R0,#57H ;动态显示初始化,使R0指向缓冲区首址 MOV R3,#7FH ;首位位选字送R3 MOV A,R3 LD0: MOV DPTR,#7F01H ;使DPTR指向PB口 MOVX @DPTR,A ;选通显示器高位(最右端一位) DEC DPTR ;使DPTR指向PA口 MOV A,@R0 ;读要显示数 ADD A,#0DH ;调整距段选码表首的偏移量 MOVC A,@A+PC ;查表取得段选码 MOVX @DPTR,A ;段选码从PA口输出 ACALL DL1 ;调用1ms延时子程序 DEC R0 ;指向缓冲区下一单元 MOV A,R3 ;位选码送累加器A JNB ACC.0,LD1 ;判断8位是否显示完毕,显示完返回 RR A ;未显示完,把位选字变为下一位选字 MOV R3,A ;修改后的位选字送R3 AJMP LD0 ;循环实现按位序依次显示 LD1: RET TAB: DB
显示全部