51单片机数码管显示函数分享(8051汇编)

目录

电路图

源代码

代码直接显示效果

变量解释

函数使用

函数主要框架

其余函数介绍


电路图

标号相同的位置是相连的,也可以直接用线相连接,数码管为共阳极

源代码

cpp 复制代码
ORG 00H
	SMGPTR DATA 30H
	DISDATA DATA 31H
		//DISDATA: 31H - 36H (DATA Arr)
	SMGBIN DATA 40H
	TEMP1 DATA 41H
	TEMP2 DATA 42H
	TEMP3 DATA 43H
	LOOP:
	MOV DISDATA+0,#2
	MOV DISDATA+1,#3
	MOV DISDATA+2,#4
	MOV DISDATA+3,#5
	MOV DISDATA+4,#6
	MOV DISDATA+5,#7
	
	LCALL DISPLAY
			
	SJMP LOOP
	/////////////////////////
	DISPLAY:
		MOV SMGBIN,#01111111B
		MOV SMGPTR,#0
		
		DIS1:
			MOV A,SMGBIN
			RL A
			MOV SMGBIN,A
			MOV P2,SMGBIN	//BIT CHOICE
			
			MOV A,SMGPTR
			ADD A,#DISDATA
			MOV R0, A
			MOV TEMP1,@R0  //DATA CHOICE
			
			MOV DPTR,#TAB
			MOV A,TEMP1
			MOVC A,@A+DPTR
			MOV P0,A
			
			LCALL DELAY
			
			INC SMGPTR
			MOV A,SMGPTR
			CJNE A,#6,DIS1
	RET
	/////////////////////////
	TESTDISPLAY:
		MOV P2,#11111101B
		MOV A,#5
		MOV DPTR,#TAB
		MOVC A,@A+DPTR
		MOV P0,A
	RET
	
	/////////////////////////
	TESTDISPLAY1:
	MOV SMGBIN,#01111111B
		MOV SMGPTR,#0
		
		MOV A,SMGBIN
		RL A
		MOV SMGBIN,A
		MOV P2,A		//BIT CHOICE
		
		MOV A,SMGPTR
		ADD A,#DISDATA
		MOV R0, A
		MOV TEMP1, @R0  //DATA CHOICE
		
		MOV DPTR,#TAB
		MOV A,TEMP1
		MOVC A,@A+DPTR
		MOV P0,A
	RET
	/////////////////////////
	DELAY:MOV R5,#1   //1->10ms  
	   X3:MOV R6,#20
	   X2:MOV R7,#248
	   X1:DJNZ R7,X1
		  DJNZ R6,X2
		  DJNZ R5,X3
	RET	 
	////////////////////////
	TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
	
END
	
	
	

代码直接显示效果

变量解释

DISDATA->数组,从31H到36H六位分别存放数码管六位各个位的显示数字

SMGPTR->存放数组指针,用于在循环里作为DISDATA数组的索引,通过SMGPTR从0变到5,找到DISDATA0到DISDATA5并且分别显示到数码管上

SMGBIN->数码管位选,通过赋初始值0111 1111B,将其通过RL操作符向左循环移位,获得1111 1110B显示第一位,1111 1101B显示第二位,一直到显示完成六位数码管

TEMP1~3作为临时变量,在函数中作为中转的中间变量

TAB->存放数码管0~9的显示,TAB0对应0,TAB1对应1...一直到TAB9对应9,这里还有一位TAB10对应的是空,即什么都不显示。

函数使用

使用比较简单,如上:只要MOV DISDATA+2,#4,就可以访问并且赋值DISDATA2(即DISDATA数组以及数码管的第三位)。使用时就按照这种格式写就行。

**如果要让某位什么都不显示,直接赋值10就行,**对应码表里面就是空

然后在赋值完成之后就LCALL DISPLAY调用DISPLAY函数就行

函数主要框架

主要框架就是用SMGPTR作为计数器循环六次,然后每次都进行数码管的位选+段选+延时10ms显示,完成六个数码管的分别显示,显示完成六个数码管就退出函数

其余函数介绍

DISPLAY:数码管六位循环显示的函数

TESTDISPLAY:数码管显示第一位,并且显示5的最简单代码

TESTDISPLAY1:运用DISPLAY函数框架写的一次函数显示DISDATA第0位,数码管第一位的代码

DELAY:10ms的延时函数

相关推荐
碧海银沙音频科技研究院7 小时前
基于炬芯ATS308X 设计的上位机usb 串口音乐EQ调节工具
stm32·单片机·嵌入式硬件
三佛科技-1341638421210 小时前
过认证72W碳化硅方案(12V6A)主控HN1562+HN36228V 典型应用电路、变压器参数分享
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
Brilliantwxx12 小时前
【STM32】 内部 Flash 详解:寄存器逐位拆解 + 工作流程顺序全讲 + EEPROM再实现
stm32·单片机·嵌入式硬件·1024程序员节
木子单片机12 小时前
基于单片机的DS18B20温度传感器测温系统设计
单片机·嵌入式硬件·51单片机·keil
华清远见IT开放实验室12 小时前
实验室建设案例 | 安徽三联学院物联网实验室
stm32·单片机·嵌入式硬件·物联网·华清远见
深圳光特通信豆子14 小时前
TTL 光模块在工业控制与串口通信中的应用指南(10M BIDI 单模系列)
单片机·嵌入式硬件
桀人14 小时前
SPI概念引入
stm32·单片机·嵌入式硬件
离凌寒14 小时前
一、基于stm32+freertos下LD2410D和R60ADB1两款雷达的使用效果
stm32·单片机·嵌入式硬件
国科安芯15 小时前
商业光学遥感载荷焦平面供电链的低噪声稳压器研究综述——以国科安芯ASP7A84AS型3A低压差线性稳压器为器件级参照
大数据·网络·嵌入式硬件·平面·卫星·商业航天·抗辐射
NamoAmitabha12817 小时前
嵌入式开发中的定时器---deepseek
单片机·嵌入式硬件