首页 > 编程知识 正文

51单片机静态数码管显示数字,单片机数码管动态显示代码

时间:2023-05-05 16:02:52 阅读:154102 作者:115

单片机数码管动态显示程序实验、数码管显示一般分为静态显示和动态显示两种驱动方式,静态显示多占用口线。 本文介绍了如何实现数码管的动态显示,数码管的动态显示是单片机外部指令输出的重要途径,包括数码管和数码管的工作原理、数码管的显示方法、数码管显示的抗干扰设计等该例基于系统硬件,设计了软件查询程序、软件延时程序(抗干扰),大致阐述了数码管动态显示的工作原理和读取方式。

s1 bit p0.0; 数字代码的位定义

s2 bit p0.1

s3 bit p0.2

s4 bit p0.3

s5 bit p0.4

s6 bit p0.5

s7 bit p0.6

s8 bit p0.7

LED_data equ p2; 数字代码的数据定义

org 00h; 程序开始

jmp main; 主程序的开始

org 030h; 主程序从30H开始

main: MOV sp,#30h; 堆栈设置

lcall rest; 调用初始化程序

lcall pro_8led; 调用数码管显示程序

jmp main; 返回

; ******初始化程序**************

rest:MOV a,#00h; 清除寄存器

MVB,#00h; 清除寄存器

MOV p0,#0; 禁止显示数字代码

MOV p2,#255;

mv P1,0f FH; 禁止LED显示

clr beep; 禁止蜂鸣器

ret; 返回

; ********数码管显示程序* * * * * * * * * * * *

pro_8led:

MOV b,#32; 一共显示32个数字

clr psw.3; 复位寄存器组

setb psw.4;

MOV r0,#00h; 数据显示从0开始

MOV r1,#01h; 代码管从第一个开始

loop:MOV p0,r1; 点亮当前的数字代码

MOV a,r0; 准备最初的数据

MOV dptr,#tab_nu; 获取页眉

MOVc a,@a dptr; 得到最初的数据

MOV led_data,a; 输出到显示数据端口

呼叫延迟; 500 ms的延迟

呼叫延迟; 1 s延迟

inc r0; 准备下一个数据

MOV a、r1; 准备以下数码管

rlc a; 安装以下数码管

JC1; 8位全部显示,迁移

MOV r1,a; 否则,设置下一位

djnz b,loop; 由于没有显示32个数,所以返回显示

ret; 否则回到主程序

c1: MOV r1,#1; 显示8位后,重新开始循环

clr c; 显示位的设定

djnz b,loop; 32位显示结束后返回重新显示

ret; 否则回到主程序

; ******数码管是* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; *软件延迟500 ms * * * * * * * * * * * * * * * * * * * * * * * * * * * *软件延迟

delay :推送PSW; 保存原始寄存器的内容

clr psw.3;

clr psw.4; 设定新的寄存器组

MOV r0,#2; 延迟参数1

MOV r1,#250; 延迟参数2

MOV r2,#2; 延迟参数3

dl1:djnz r0、dl1; 延迟周期1

MOV r0,#250;

dl2:djnz r1、dl1; 延迟周期2

MOV r0,#240;

MOV r1,#248;

dl3:djnz r2、dl1; 延迟周期3

nop; 定时精度调整

pop psw; 恢复原始寄存器

ret; 返回

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

; 这是一个带小数点的数字比不带小数点的数字大16的数字表示表

; 例如0显示代码为0; 那么,0 .的显示代码是16。这样类推

tab_nu:

db 0c0h、0f9h、0a4h、0b0h、99h、92h、82h、0f8h; 数字0-7没有小数点代码

db 80h、90h、88h、83h、0c6h、0a1h、86h、8eh; 数字8-f没有小数点代码

db 40h、79h、24h、30h、19h、12h、02h、78h; 带数字0-7小数点编码的db 00h、10h、08h、03h、46h、21h、06h、0eh; 数字8-f带小数点的代码

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。