注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
chenht7的个人空间 https://home.eeworld.com.cn/space-uid-490705.html [收藏] [复制] [分享] [RSS]
日志

单片机_汇编编程_8_并行口驱动数码管显示

已有 1379 次阅读2017-9-28 16:03 |个人分类:汇编| 汇编, 单片机, 数码管

 单片机_汇编编程_并行口驱动数码管显示
时间:2017/9/28

# 一、任务描述
通过汇编编程,通过单片机的IO口,直接输出驱动数码管,从而实现在数码管上,依次从0到9进行循环显示。

# 二、任务实现
## 2.1 硬件连接
目前的硬件线路如下:
主控芯片: STC 89C52
输入引脚: 无
输出引脚: P0.0 - P0.6 驱动共阳数码管
工作频率: 12MHz

[图 8_并行口驱动LED进行显示_IO]

## 2.2 分析命题
这次主要的功能如下:
1. 数据有次序的进行显示 <-- 涉及到了调用延时的功能
2. 发送的字符串信号是不同的 <-- 需要进行数据的查表

## 2.3 确定算法
该算法的主要实现方式是,先通过将数据写入数据表,然后依次地读取数据表中的数据,将其通过端口,将其发送到共阳数码管中,从而驱动数码管进行对应的显示。

## 2.4 流程图

[图 8_并行口驱动LED进行显示_流程图]

## 2.5 程序

```

ORG 00H
START:
    MOV R1, #00H        ; 设置寄存器指向起始处
NEXT:
    MOV A, R1           ; 给寄存器赋初值
    MOV DPTR, #TABLE    ; 指向数据表
    MOVC A, @A+DPTR     ; 进行提取数据
    MOV P0, A           ; 数据输出
    LCALL DELAY         ; 进行延时
    INC R1              ; 计数减一
    CJNE R1, #10, NEXT  ; 当计数器的计数满10个,则跳转
    LJMP START
DELAY:
    MOV R5, #100        ; 原先是20,现为了使得显示的更好些,将数值改为100,延时1ms左右
D2:
    MOV R6, #20
D1:
    MOV R7, #248
    DJNZ R7, $
    DJNZ R6, D1
    DJNZ R5, D2
    RET
TABLE:                  ; 针对于共阳发光二极管,单片机的上拉能力弱,但是下拉能力比上拉要强一些 
    DB  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
    END

```


# 三、总结
这个实现的效果,在仿真软件上,貌似效果不怎么样,而在这个实际的开发板上,显示出来的效果还是挺不错的。

# 参考资料
[1] 《单片机的编程与汇编程序案例》, https://wenku.baidu.com/view/9018d6795acfa1c7aa00cc58.html
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章