• 点阵 LED 显示设计实验


    一、实验目的:

    1.了解LED点阵的基本结构。

    2.学习LED点阵扫描显示程序的设计方法。

    二、实验内容与要求:

    编写程序,控制点阵向上卷动显示“原来如此是这样呀”。

    三、实验环境:

    PC机一台,TD-PITE实验装置一套。

    四、实验步骤

    1.连接电路图

    2.编写实验程序,检查无误后,编译、链接并装入系统。

    3.运行实验程序,观察点阵的显示,验证程序功能。

    4.固化实验程序,然后脱机运行。

    5.自己可以设计实验,使点阵显示不同的符号

    6.字符提取方法:将HZDotReader文件拷贝到硬盘上运行程序,设置“取模字体”,设置“取模方式”,选择“输出设置”设置输出格式,点击“字”按钮输入“原来如此是这样呀”得到输入字符的点阵编码以及对应的汉字显示对点阵进行编辑,保存点阵文件为dot格式,使用word软件打开保存文件将字符复制到自己的程序中。

    五、电路连接

    六、代码设计

    1.关于字数

    1. BG0:    MOV AX, 112
    2.         MOV SI, OFFSET HZDOTht

    总共有8个字,每个字需要有32个字节用来显示,由于最后一个字显示后就回重新显示,所以AX的值为32*4-1/2=112

    2.关于程序设计思想

    首先,通过伪指令操作定义端口,其中CS1、CS2分别定义为0~7、8~15行控制端口,CS3、CS4分别定义为0~7、8~15列控制端口,再定义一个256位的字型存储空间。然后再利用包含伪指令INCLUDE来指明包含的显示符号的编码,共由176行、16列组成,这个数字矩阵可根据不同的数字而改变,这也是程序编写的关键。对各端口进行初始化,及各行各列进行初始化,最初使行为“0”,列为“1”,满足灯亮的初始条件。

    其次,进入程序主体,开始进行编程。计开始外循环次数为112,利用源变址指针寄存器开始进如循环。通过调用子程序进行内部循环,把点阵显示单元分成四个模块。第一部分内循环是执行前两个模块的数字矩阵操作,从0行到7行的全部列的编写。需要考虑灯亮的条件,即行为0,列为1,就给行赋0值,使行满足条件,因此紧接着需要列的条件,如果某列能够满足条件,则此交点的灯亮。否则,灯不亮。完成一个模块的一行后,开始让指针执行加一操作,从而进入下一个模块的行操作。同理,依次执行循环操作,完成前两个模块的任务。调用子程序进行延时操作,使汉字显示的时间合理。接着进行内部外循环操作,再次进行上述语句命令完成字体在前两个模块的显示情况。然后就是执行后两个模块的语句操作。原理同前两个模块的操作命令。

    我们也可以人为的控制汉字移动速度和持续时间,即改变外循环次数值,值越小移动越快。

    七、实验现象

    依次输入“原来如此是这样呀”之后循环

    附录 代码

    1. ============================================================
    2. ; 文件名称: LED16.ASM
    3. ; 功能描述:
    4. ; 行: CS1(600H), CS2(640H) 列: CS3(680H), CS4(6C0H)
    5. ;============================================================
    6. ROW1 EQU 0600H ;端口定义IOY0
    7. ROW2 EQU 0640H ;端口定义IOY1
    8. COL1 EQU 0680H ;端口定义IOY2
    9. COL2 EQU 06C0H ;端口定义IOY3
    10. STACK1 SEGMENT STACK
    11. DW 256 DUP(?)
    12. STACK1 ENDS
    13. ;定义为数据段
    14. INCLUDE HZDOTht.ASM ;数据字段为汉字点阵库, 在HZDOTht.ASM文件中
    15. CODE SEGMENT
    16. ASSUME CS:CODE, DS:DATA
    17. START: MOV AX, DATA
    18. MOV DS, AX
    19. MOV DX, ROW1
    20. MOV AL, 00H
    21. OUT DX, AL
    22. MOV DX, ROW2
    23. OUT DX, AL
    24. MOV AL, 0ffH
    25. MOV DX, COL1
    26. OUT DX, AL
    27. MOV DX, COL2
    28. OUT DX, AL
    29. BG0: MOV AX, 112
    30. MOV SI, OFFSET HZDOTht
    31. BG1: CALL DISP
    32. ADD SI, 2
    33. DEC AX
    34. JZ BG0
    35. JMP BG1
    36. ;======显示汉字子程序======
    37. ;入口参数: SI = 存放汉字起始地址
    38. DISP: MOV CX, 000FH
    39. PUSH AX
    40. ML0: PUSH CX
    41. MOV BL, 01H
    42. MOV CX, 0008H
    43. ML1: MOV DX, ROW1 ;控制0--7
    44. MOV AL, 00H
    45. OUT DX, AL
    46. MOV AL, [SI]
    47. NOT AL
    48. MOV DX, COL1 ;0--7
    49. OUT DX, AL
    50. INC SI
    51. MOV AL, [SI]
    52. NOT AL
    53. MOV DX, COL2 ;8--15
    54. OUT DX, AL
    55. INC SI
    56. MOV DX, ROW1 ;控制0--7
    57. MOV AL, BL
    58. OUT DX, AL
    59. ROL BL, 1
    60. CALL DELAY
    61. LOOP ML1
    62. MOV DX, ROW1
    63. MOV AL, 00H
    64. OUT DX, AL
    65. MOV CX, 0008H
    66. ML2: MOV DX, ROW2 ;控制8--15
    67. MOV AL, 00H
    68. OUT DX, AL
    69. MOV AL, [SI]
    70. NOT AL
    71. MOV DX, COL1 ;0--7
    72. OUT DX, AL
    73. INC SI
    74. MOV AL, [SI]
    75. NOT AL
    76. MOV DX, COL2 ;8--15
    77. OUT DX, AL
    78. INC SI
    79. MOV DX, ROW2 ;控制8--15
    80. MOV AL, BL
    81. OUT DX, AL
    82. ROL BL, 1
    83. CALL DELAY
    84. LOOP ML2
    85. MOV DX, ROW2
    86. MOV AL, 00H
    87. OUT DX, AL
    88. SUB SI, 32
    89. POP CX
    90. LOOP ML0
    91. POP AX
    92. RET
    93. DELAY: PUSH CX ;延时子程序
    94. MOV CX, 0100H
    95. DL1: PUSH AX
    96. POP AX
    97. LOOP DL1
    98. POP CX
    99. RET
    100. CODE ENDS
    101. END START
    1. ;本文件为16×16点阵中文字库文件,字的横向8点构成一字节,
    2. ;左边点在字节的低位,字符点阵四角按左上角→右上角→左下
    3. ;角→右下角取字
    4. CD4AD EQU 00000H;原
    5. CC0B4 EQU CD4AD+1;来
    6. CC8E7 EQU CC0B4+1;如
    7. CB4CB EQU CC8E7+1;此
    8. CCAC7 EQU CB4CB+1;是
    9. CD5E2 EQU CCAC7+1;这
    10. CD1F9 EQU CD5E2+1;样
    11. CD1BD EQU CD1F9+1;呀
    12. DATA SEGMENT
    13. ;原 CD4AD
    14. DB 000H,000H,03FH,0FEH,020H,080H,021H,000H
    15. DB 027H,0F0H,024H,010H,024H,010H,027H,0F0H
    16. DB 024H,010H,024H,010H,027H,0F0H,020H,080H
    17. DB 024H,090H,048H,088H,052H,084H,081H,000H
    18. ;来 CC0B4
    19. DB 001H,000H,001H,000H,001H,000H,07FH,0FCH
    20. DB 001H,000H,011H,010H,009H,010H,009H,020H
    21. DB 0FFH,0FEH,003H,080H,005H,040H,009H,020H
    22. DB 031H,018H,0C1H,006H,001H,000H,001H,000H
    23. ;如 CC8E7
    24. DB 010H,000H,010H,000H,010H,000H,010H,07CH
    25. DB 0FEH,044H,022H,044H,022H,044H,022H,044H
    26. DB 042H,044H,024H,044H,014H,044H,008H,044H
    27. DB 014H,044H,022H,07CH,042H,044H,080H,000H
    28. ;此 CB4CB
    29. DB 004H,040H,004H,040H,004H,040H,024H,044H
    30. DB 024H,048H,027H,050H,024H,060H,024H,040H
    31. DB 024H,040H,024H,040H,024H,040H,024H,042H
    32. DB 02FH,042H,0F0H,042H,040H,03EH,000H,000H
    33. ;是 CCAC7
    34. DB 01FH,0F0H,010H,010H,010H,010H,01FH,0F0H
    35. DB 010H,010H,010H,010H,01FH,0F0H,000H,000H
    36. DB 0FFH,0FEH,001H,000H,011H,000H,011H,0F8H
    37. DB 011H,000H,029H,000H,045H,000H,083H,0FEH
    38. ;这 CD5E2
    39. DB 000H,080H,020H,040H,010H,040H,017H,0FCH
    40. DB 000H,010H,002H,010H,0F1H,020H,010H,0A0H
    41. DB 010H,040H,010H,0A0H,011H,010H,012H,008H
    42. DB 014H,008H,028H,000H,047H,0FEH,000H,000H
    43. ;样 CD1F9
    44. DB 011H,004H,010H,084H,010H,088H,010H,000H
    45. DB 0FBH,0FEH,010H,020H,030H,020H,039H,0FCH
    46. DB 054H,020H,050H,020H,093H,0FEH,010H,020H
    47. DB 010H,020H,010H,020H,010H,020H,010H,020H
    48. ;呀 CD1BD
    49. DB 000H,000H,003H,0FCH,078H,010H,049H,010H
    50. DB 049H,010H,049H,010H,04AH,010H,04BH,0FEH
    51. DB 048H,030H,048H,050H,078H,090H,049H,010H
    52. DB 002H,010H,004H,010H,000H,050H,000H,020H
    53. DATA ENDS

  • 相关阅读:
    让敏捷更人性化
    2023.11.20 关于 Spring MVC 详解
    Jmeter基础入门教程【11】--常用功能详解:正则提取器
    Python的高级用法:偏函数
    002 fanout
    气象台卫星监测vr交互教学增强学生的学习兴趣和动力
    基于vue.js的招聘系统
    PHP转Go系列 | 变量常量的使用姿势
    漏洞复现-CVE-2022-1388命令执行F5 BIG-IP iControl REST
    【JDK 8-Lambda】3.2 自定义函数式编程实战
  • 原文地址:https://blog.csdn.net/capture3333/article/details/127919070