一. 实验仪器
1.FX-A全析式单片机开发平台。 2.实验用配套电子元件包,专用接线。
3.安装有WAVE编译器及FX-pro编程器软件的计算机。
二. 电子元件列表 序号 1 2 3 4 5 6 名称 单片机AT89S51 12M晶振 微动按键 晶体管8550 10UF电容 共阳数码管 数量 1片 1个 1个 4只 1只 4只 序号 7 8 名称 30P瓷片电容 200Ω电阻 560Ω电阻 2.7K电阻 10K电阻 数量 2只 1只 8只 4只 1只 9 10 11 三. 实验目的
1. 掌握查表指令的应用方法及应用效果。
2. 掌握共阳七段数码管静态显示及共阳管驱动原理。 3. 掌握数码管数字显示效果及数码管显示数字编码方法。
四. 实验步骤
1.认识并测量实验用电子元件,根据实验原理图在硬件扩展板实验区连接电路。 2.检查所连接的电路,确保单片机芯片的正负极连接无误,系统电源接线无误。 3.在计算机上利用WAVE编译器将实验源程序输入并进行编译操作。
4.使用FX-pro编程器软件和FX下载适配器将编译后的BIN文件烧录到单片机AT89S51中。 5.在开发板的软件实验区中运行单片机AT89S51,观察运行现象,进行软件验证。 6.将AT89S51在开发板的硬件实验区中运行,观察运行结果是否与软件实验区工作一致。 7.解读实验源程序,整理出编码数据及系统是如何使用查表指令来使数码管进行显示。 8.实验成功,再次观察所连接的实验电路,回顾并总结实践动手过程,书写实验报告。
1
234五. 实验原理图 87635214aabcfbgdeecdfdpgdpSM391087635214aabcfbgdeecdfdpgdpSM291087635214aabcfbgdeecdfdpgdpSM191087635214aabcfbgdeecdfdpgdpSM091012345678R3 560Ω × 812345678T3 8550T2 8550T1 8550T0 8550+5VC1 10UFR1200ΩK RSTAT89S51P1.0VCCP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6RSTP0.7P3.0EA^P3.1ALEP3.2PSEN^P3.3P2.7P3.4P2.6P3.5P2.5P3.6P2.4P3.7P2.3XTAL2P2.2XTAL1P2.1GNDP2.0R4 2.7K× 8C2 30PR210K8765432112MHZC2 30P 六. 工作现象 系统上电,数码管SM0自动从0到9进行显示,显示到9后,数码管SM0显示自动切换到数码管SM1上,当SM1从0显示到9时将切换到SM2上,当SM2显示到9时将切换到SM3上进行2显示,如此循环。 34 2
. 主程序流程图
开 始 P1口、P2口 端口初始化 ROM表首地址传DPTR YES 数码管SM0显示0——9数码NO 初始化 显示完毕? 取数据 端口显示数码 取数据 端口显示数码 NO 0——9数码显示完毕? 数码管SM3显示初始化 YES YES 数码管SM1显示初始化 0——9数码NO 显示完毕? 取数据 端口显示数码 取数据 端口显示数码 NO 0——9数码显示完毕? 数码管SM2显示初始化 YES 3
七 八.实验源程序
;七段数码管实验,伪定义过程 ESM0 BIT P0.0 ;驱动SM0管为P0.0 ESM1 BIT P0.1 ;驱动SM0管为P0.1 ESM2 BIT P0.2 ;驱动SM0管为P0.2 ESM3 BIT P0.3 ;驱动SM0管为P0.3 SMDATA EQU P2 ;数码显示数据来自P2口
DLY1 EQU 40H;延时变量 DLY2 EQU 41H;延时变量 DLY3 EQU 42H;延时变量
;单片机AT89S51,12M晶振 ORG 0000H;指令其始地址为0000H MOV P0,#255;端口P0初始化 MOV P2,#255;端口P2初始化
MOV DPTR,#TABSM;查表指令首地址定位
;SM0显示过程
LOOP:MOV R1,#10;数码显示10个数字 CLR A;查表偏移地址初始为0 SETB ESM1;SM1禁止显示 SETB ESM2;SM2禁止显示 SETB ESM3;SM3禁止显示 CLR ESM0;SM0允许显示 LOP0:PUSH ACC;保护查表偏移地址
MOVC A,@A+DPTR;查表,读取ROM表中数据 MOV SMDATA,A;将查得数据送P2口显示 LCALL DELAY;调用延时
POP ACC;恢复被保护的查表偏移地址 INC A;偏移地址加1
DJNZ R1,LOP0;判断十个数字是否显示完毕
4
;SM1显示过程
MOV R1,#10;数码显示10个数字 CLR A;查表偏移地址初始为0 SETB ESM0;SM0禁止显示 SETB ESM2;SM2禁止显示 SETB ESM3;SM3禁止显示 CLR ESM1;SM1允许显示
LOP1:PUSH ACC;保护查表偏移地址
MOVC A,@A+DPTR;查表,读取ROM表中数据 MOV SMDATA,A;将查得数据送P2口显示 LCALL DELAY;调用延时
POP ACC;恢复被保护的查表偏移地址 INC A;偏移地址加1
DJNZ R1,LOP1;判断十个数字是否显示完毕
;SM2显示过程
MOV R1,#10;数码显示10个数字 CLR A;查表偏移地址初始为0 SETB ESM0;SM0禁止显示 SETB ESM1;SM1禁止显示 SETB ESM3;SM3禁止显示 CLR ESM2;SM2允许显示
LOP2:PUSH ACC;保护查表偏移地址
MOVC A,@A+DPTR;查表,读取ROM表中数据 MOV SMDATA,A;将查得数据送P2口显示 LCALL DELAY;调用延时
POP ACC;恢复被保护的查表偏移地址 INC A;偏移地址加1
DJNZ R1,LOP2;判断十个数字是否显示完毕
;SM3显示过程
MOV R1,#10;数码显示10个数字 CLR A;查表偏移地址初始为0 SETB ESM0;SM0禁止显示
5
SETB ESM1;SM1禁止显示 SETB ESM2;SM2禁止显示 CLR ESM3;SM3允许显示
LOP3:PUSH ACC;保护查表偏移地址
MOVC A,@A+DPTR;查表,读取ROM表中数据 MOV SMDATA,A;将查得数据送P2口显示 LCALL DELAY;调用延时
POP ACC;恢复被保护的查表偏移地址 INC A;偏移地址加1
DJNZ R1,LOP3;判断十个数字是否显示完毕 SJMP LOOP;循环 ;延时子程序 DELAY:MOV DLY1,#6 DLOP1:MOV DLY2,#200 DLOP2:MOV DLY3,#200 DLOP3:DJNZ DLY3,DLOP3 DJNZ DLY2,DLOP2 DJNZ DLY1,DLOP1 RET;子程序返回
;数码管显示段码表(0——9)
TABSM: DB 09H,9FH,2AH,1AH,9CH,58H,48H,1FH,08H,18H
END;汇编程序结束
; 源程序已经过FX-A全析式单片机开发平台测试,运行稳定可靠。
6
因篇幅问题不能全部显示,请点此查看更多更全内容