【单片机】LED16*16点阵显示实验
发布日期:2021-05-28 05:31:56 浏览次数:23 分类:精选文章

本文共 4210 字,大约阅读时间需要 14 分钟。

【单片机】LED16*16点阵显示实验

一、操作目的

本实验旨在通过单片机并行控制LED点阵组成的16×16点阵实现汉字显示功能。具体目标包括:

  • 利用单片机并行控制LED点阵的每个点
  • 掌握单片机与LED点阵接口电路的设计与编程
  • 应用取模软件生成标准汉字点阵数据,并编写程序实现点阵字符的循环左移显示

二、实验内容

本实验采用以下方法:

  • 根据点阵的I/O地址和功能,将各个字形的代码通过I/O口传输给单片机
  • 根据给定的I/O口信号流,逐列输出汉字图像
  • 处理字形代码和扫描信号,实现点阵字符的顺序显示

三、接线图

该实验的硬件接线图包括:

  • LCD点阵模块的引脚与单片机的引脚接口
  • 或者Define_poll disappearing syncMissed beat
  • 显示器(LCD)与单片机的信号线连接
  • 外部电源与各个模块的电源连接

四、程序清单

ORG 0000H LJMP START ORG 2D80H XPA EQU 0FF28H ;L-SAO-1,CTL-MODE:BING XIN KOXPB EQU 0FF29H ;L-SAO-2;---------------------------------------------------------------XPC EQU 0FF2AH ;H-CODE-2XPCTL EQU 0FF2BHSTART: MOV DPTR,#XPCTL ;THIS IS A PROGRAM OF L-MOVE-WORDMOV A,#80HMOVX @DPTR,A ;WR-CTLCALL OFFLED CLR 00HMOV R6,#28HMOV R7,#0FFH;----------------------------------------X0: MOV R0,#00H ;ONE-WORD-FIRST-NUMX1: CALL DEL1 ;QIINC R0 ;RL-1-BITmov a,r0anl a,#0fhcjne a,#00h,l2mov a,#10hadd a,r0l2: SJMP X0;---------------------------------------------------------------DISPW: PUSH 00H ;DISP-ONE-WORDMOV R1,#01H ;L-NUMCLR CDISP1: MOV A,R0 ;BH1MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#XPCMOVX @DPTR,A;-------------------------------------------mov a,#10hadd a,r0MOV DPTR,#TABMOVC A,@A+DPTRMOV P1,AINC R0 ;BH2;-------------------------------------------mov a,r0anl a,#0fhcjne a,#00h,l1mov a,#10hadd a,r0mov r0,aclr c ;!!!!!l1: MOV DPL,R6 ;XPA/XPBMOV DPH,R7MOV A,R1 ;L0----L7CPL AMOVX @DPTR,Amov r3,#80hd jnz r3,$CALL OFFLEDMOV A,R1RLC AMOV R1,AJNC DISP1JB 00H,EXIT;---------------------------------- SETB 00HCLR CMOV R1,#01HMOV R6,#29HMOV R7,#0FFHAJMP DISP1EXIT: MOV R6,#28HMOV R7,#0ffHCLR 00HPOP 00HRET;---------------------------------------------------------------DEL1: MOV R2,#05HDELY: PUSH 02HDEL2: PUSH 02HDEL3: PUSH 02HDEL4: DJNZ R2,DEL4CALL DISPWPOP 02HDJNZ R2,DEL3POP 02HDJNZ R2,DEL2POP 02HDJNZ R2,DELYRET;---------------------------------------------------------OFFLED: MOV DPTR,#XPAMOV A,#0FFHMOVX @DPTR,AMOV DPTR,#XPBMOVX @DPTR,ARET

五、代码详解

以下是详细的代码解析:

#define uchar unsigned char#define com8255 XBYTE[0xff2b]#define pa8255 XBYTE[0xff28]#define pb8255 XBYTE[0xff29]#define pc8255 XBYTE[0xff2a]

соглас.Dispatcher timer and flags

#include 
#include
#include

【单片机】LED16*16点阵显示实验

一、操作目的

本实验旨在通过单片机并行控制LED点阵组成的16×16点阵实现汉字显示功能。通过实践和编程掌握点阵显示的关键技术。

二、操作内容

实验分为两部分:点阵模拟器的调试与汉字显示程序的编写。

  • 模拟器调试
    根据point=[zhangsan]数组中的值,逐个点查看对应的标识符是否正确。
  • 汉字显示程序
    使用循环移位的方法实现点阵字符的运动显示。分别实现字字母“Z”“S”移位显示。
  • 三、接线图

    硬件接线图包括点阵模块的各接口端子与单片机I/O端子的连接方式。点阵模块需要通过的信号包括:

    • 数据输入线(P1
    • 符号输出线(PC8255PA8255
    • 扫描信号输出线

    四、程序清单

    上述程序实现了点阵的显示控制逻辑,包括字形编码、扫描信号生成以及点亮控制。代码结构包括以下几个主要部分:

  • 系统初始化

    初始化相关的I/O口和中间变量,设置需要点亮的信号方式。

  • 扫描循环

    对每个字进行逐个点的扫描,检查点阵位置是否需要点亮。

  • 控制逻辑

    根据预定义的字形数组,逐个点输出是否应该点亮的信号。

  • 五、代码实现

    void main(void){    com8255 = 0x80; // 使控制器进入执行状态    while (1) {        unsigned int tag = 0; // 显示的位置标识        // 显示字 "Z"        while (tag++ < 50) {            for (i = 0; i < 32; i += 2) {                x = 0;                y = 0;                j = 1 << (15 - i / 2);                pc8255 = j >> 8;                P1 = j - ((j >> 8) << 8);                k = (zhang[i] << 8) + zhang[i+1];                for (nn = 0; nn < 8; nn++) {                    if (k >> nn & 1) x = (x << 1) | 1;                    else x >>= 1;                }                for (nn = 8; nn < 16; nn++) {                    if (k >> nn & 1) y = (y << 1) | 1;                    else y >>= 1;                }                pb8255 = ~x;                pa8255 = ~y;            }        }        tag = 0;        // 显示字 "S"        while (tag++ < 50) {            for (i = 0; i < 32; i += 2) {                x = 0;                y = 0;                j = 1 << (15 - i / 2);                pc8255 = j >> 8;                P1 = j - ((j >> 8) << 8);                k = (san[i] << 8) + san[i+1];                for (nn = 0; nn < 8; nn++) {                    if (k >> nn & 1) x = (x << 1) | 1;                    else x >>= 1;                }                for (nn = 8; nn < 16; nn++) {                    if (k >> nn & 1) y = (y << 1) | 1;                    else y >>= 1;                }                pb8255 = ~x;                pa8255 = ~y;            }        }    }}

    六、编码标准说明

    zhangsan 点阵编码依据宋体12号字体的标准点阵数据:

    • 宽度:16点,高度:16行
    • 每个汉字对应的点阵数据已被标准化存储

    这些代码实现了点阵显示的基本功能,可通过com8255pa8255pb8255端口进行显示控制。

    上一篇:【LeetCode】121. 买卖股票的最佳时机(C++)
    下一篇:【图形学】计算机图形学-练习题8

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年04月13日 03时29分22秒