当前位置: 首页 > news >正文

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

目录

电路图

源代码

代码直接显示效果

变量解释

函数使用

函数主要框架

其余函数介绍


电路图

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

源代码

ORG 00HSMGPTR DATA 30HDISDATA DATA 31H//DISDATA: 31H - 36H (DATA Arr)SMGBIN DATA 40HTEMP1 DATA 41HTEMP2 DATA 42HTEMP3 DATA 43HLOOP:MOV DISDATA+0,#2MOV DISDATA+1,#3MOV DISDATA+2,#4MOV DISDATA+3,#5MOV DISDATA+4,#6MOV DISDATA+5,#7LCALL DISPLAYSJMP LOOP/////////////////////////DISPLAY:MOV SMGBIN,#01111111BMOV SMGPTR,#0DIS1:MOV A,SMGBINRL AMOV SMGBIN,AMOV P2,SMGBIN	//BIT CHOICEMOV A,SMGPTRADD A,#DISDATAMOV R0, AMOV TEMP1,@R0  //DATA CHOICEMOV DPTR,#TABMOV A,TEMP1MOVC A,@A+DPTRMOV P0,ALCALL DELAYINC SMGPTRMOV A,SMGPTRCJNE A,#6,DIS1RET/////////////////////////TESTDISPLAY:MOV P2,#11111101BMOV A,#5MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ARET/////////////////////////TESTDISPLAY1:MOV SMGBIN,#01111111BMOV SMGPTR,#0MOV A,SMGBINRL AMOV SMGBIN,AMOV P2,A		//BIT CHOICEMOV A,SMGPTRADD A,#DISDATAMOV R0, AMOV TEMP1, @R0  //DATA CHOICEMOV DPTR,#TABMOV A,TEMP1MOVC A,@A+DPTRMOV P0,ARET/////////////////////////DELAY:MOV R5,#1   //1->10ms  X3:MOV R6,#20X2:MOV R7,#248X1:DJNZ R7,X1DJNZ R6,X2DJNZ R5,X3RET	 ////////////////////////TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND

代码直接显示效果

变量解释

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

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

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

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

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

函数使用

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

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

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

函数主要框架

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

其余函数介绍

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

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

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

DELAY:10ms的延时函数

http://www.dtcms.com/a/573336.html

相关文章:

  • 国外互联网科技网站微信引流用什么软件好用
  • 静态交叉编译rust程序
  • 1.2.STM32简介——全程手敲板书
  • 2.2.6【2020统考真题】
  • Doris 并入CMP7(类Cloudera CDP 7.3.1 404华为鲲鹏ARM版)的方案和实施源代码
  • Vue3项目实战:从0到1开发企业级中后台系统(3):架构核心!手把手封装Axios、Pinia、Router
  • Spark on Yarn安装部署
  • 建设系统网站怎么做自然优化
  • 国产化数据库选型深度剖析:金仓KES与达梦DM全生命周期成本对比
  • Java 读取 Word 文本框中的文本和图片:Spire.Doc for Java 实践指南
  • 网站建设开发定制微信网站如何做
  • 商城项目业务总结
  • 安卓16提前发布能否改写移动生态格局
  • JVM :内存、性能调优与 JIT
  • JVM问题排查流程
  • 仲恺做网站wordpress屏蔽功能org
  • AI视频创作工具汇总:MoneyPrinterTurbo、KrillinAI、NarratoAI、ViMax
  • 部署我的世界-java版服务器-frp内网穿透
  • Eureka 注册中心原理与服务注册发现机制
  • Unity使用RVM实现实时人物视频抠像(无绿幕)
  • 物联网传感器环境自适应校准与精度补偿技术
  • 【低空安全】低空安防威胁与挑战
  • 微网站建设包括哪些iis5.1怎么新建网站
  • 45_AI智能体核心业务之Agent决策流程管理器:构建智能对话系统的工作流引擎
  • wordpress api定制济南seo公司案例
  • vscode运行ipynb文件:使用docker中的虚拟环境
  • 网站布局有哪些企业网站源码怎么获取
  • 如何科学地对单片机进行AI性能测试:指标、方法与实战
  • 软件设计师-树-叶子结点个数
  • 饭店网站模板北京网站制作郑州