实验五 发光二极管阵列的单片机显示控制实现
一、实验目的
1、了解点阵LED的显示原理
2、掌握Keil µVision2编辑、编译、调试单片机汇编程序的方法 3、掌握PROTEUS ISIS软件仿真单片机原理的方法
4、设计整个单片机硬件电路及软件,实现发光二极管阵列的单片机显示控制 二、实验内容
利用8×8点阵LED循环显示0~9的数字。 三、实验原理
数字0~9点阵显示代码的形成,如图6-1所示(假设显示数字“0”)
图6-1 数字“0”的段码
因此,形成的行代码为00H,00H,3EH,41H,41H,41H,3E,00H;只要把这些 代码分别送到相应的行线上面,即可实现“0”的数字显示。 送显示代码过程如下:
送第一行线代码到P0端口,同时置第一列线为“1”,其他行线为“0”,延时约4ms; 送第二列线代码到P0端口,同时置第二行线为“1”,其他行线为“0”,延时约4ms;依次 类推,直到送完最后一列代码,又从头开始送。 四、实验步骤 1、硬件设计
打开Proteus ISIS编辑环境,按表6-1所列元件清单添加元件。
表6-1元件清单
元件清单 ATC51 CAP CAP-ELEC CRYSTAL RES 74LS245 MATRIX-8×8 Capacitors Capacitors Miscellaneous Resistors TTL 74LS Series Optoelectronics 所属类 Microprocessor ICs Generic Generic ----- Generic Transceivers Don Matrix Displays 所属子类 8051 Family 元件全部添加完后,在Proteus ISIS编辑环境中按图6-2所示连接硬件原理图。具体操作步骤见附录A。
图6-2 电路原理图
2、软件设计 程序流程:
开始 输出列码 输出对应的行码,显示 已扫描8列? 已显示1s 显示下一个数字
源程序:
TCOUNT EQU 30H R_CNT EQU 31H NUMB EQU 32H
ORG 00H LJMP START ORG 0BH LJMP INT_T0
START: MOV TCOUNT,#00H
MOV R_CNT,#00H MOV NUMB,#00H MOV TMOD,#01H MOV TH0,#(65536-4000)/256 ;定时4ms MOV TL0,#(65536-4000)MOD 256 SETB TR0 MOV IE,#82H SJMP $
INT_T0: MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000)MOD 256 MOV DPTR,#TAB ;取列码 MOV A,R_CNT MOVC A,@A+DPTR MOV P3,A MOV DPTR,#NUB ;取行码 MOV A,NUMB MOV B,#8 MUL AB ADD A,R_CNT MOVC A,@A+DPTR CPL A MOV P0,A ;输出行码 INC R_CNT MOV A,R_CNT CJNE A,#8,NEXT MOV R_CNT,#00H
NEXT: INC TCOUNT
MOV A,TCOUNT CJNE A,#250,NEX ;每个字显示1s MOV TCOUNT,#00H INC NUMB MOV A,NUMB CJNE A,#10,NEX ;0~9循环显示 MOV NUMB,#00H
NEX: RETI
TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH NUB: DB 00H,00H,3EH,41H,41H,41H,3EH,00H
DB 00H,00H,00H,00H,21H,7FH,01H,00H DB 00H,00H,27H,45H,45H,45H,39H,00H DB 00H,00H,22H,49H,49H,49H,36H,00H DB 00H,00H,0CH,14H,24H,7FH,04H,00H DB 00H,00H,72H,51H,51H,51H,4EH,00H DB 00H,00H,3EH,49H,49H,49H,26H,00H DB 00H,00H,40H,40H,40H,4FH,70H,00H DB 00H,00H,36H,49H,49H,49H,36H,00H DB 00H,00H,32H,49H,49H,49H,3EH,00H END 3、调试与仿真 (1)打开Keil ūVision,新建Keil项目,选择ATC51单片机作为CPU,新建汇编源文件,编写程序,并将其导入到“Source Group 1”中,在“Options for Target”对话窗口中,选中“Output”选项卡中的“Create HEX File”选项,。编译汇编源程序,改正程序中的错误。具体操作步骤见附录B。
(2)在Proteus ISIS中,选中ATC51并单击鼠标左键,打开“Edit Component”对话窗口,设置单片机晶振频率为12MHz,在此窗口中的“Program File”栏中,选择步骤(1)用Keil生成的HEX文件,在Proteus ISIS中保存设计。 (3)点击Proteus ISIS中按钮,仿真整个电路,得到如图6-3所示的结果,可以看到数字0~9循环显示。
图6-3 电路仿真结果图