用汇编语言实现八段数码管显示
八位数码管动态显示程序

八位数码管动态显示程序这个是51hei 开发板专区里转来的一个程序,注释很详细,运行也没有问题,原文地址:51hei/bbs/dispbbs.asp?boardid=10id=4140/*动态数显的设计思路,首先是我们要先知道怎样才能使哪个位亮,显示的段是什么数值,接下来就是中断时间的问题了,设计步骤如下,如果要让八个数码管静态显示1 到8,我们可以修改中断时间,如把50000 改成100 或更低*/#includereg52.h #includeintrins.h#define uint unsigned int#define uchar unsigned charsbit duan=P2;sbit wei=P2;uchar a,numw,numd;uchar code tabled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /*第二步骤,创建段显数值的对码表0~9 数值.如果要显示1~8 数值,最好多加前后两位数0 跟9,因为后面++移位时就能按我们常规顺序亮下去,至于如何显示对应数值请先看数码显示电路图*/ uchar code tablew[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //第二步骤,创建位显,就是显示的位置,这个码表相对简单,用二进制表示11111110~01111111,是0 的为八位数显管的位置void main(){a=0; //定义个时间函数numw=0; //附位显初值为0 位numd=0; //附段显初值为0 位TMOD=0X01;//第四步骤,附中断暂存器初值TH0=(65535-50000)/256; //附中断请求时间初值,高8 位TL0=(65536-50000)%256; //附中断请求时间初值,低8 位EA=1; //开启总中断ET0=1; //开启定时中断TR0=1; //启动定时中断while(1){ if(a==10) //第三步骤,执行速度,如果等20 差不多是1 秒,则往下执行,相当于单位数值亮的时间{a=0; //重新附值初值0 numd++; //段显值++ if(numd==9) //如果段值在对码表第9 位则转下执行numd=1; /*重新附值段显值对应对码表第1 位,因为++所以0位并不在数码管中显示. 如果要显示,也会因为++而在第二轮中显示出*/ duan=1;//开启段显端P0=tabled[numd];//附段显P0 值对应段显值对码表duan=0; //锁存wei=1; //开启位显端P0=tablew[numw];//附位显P0 值对应位显值对码表wei=0; //锁存numw++; //相当于位显移位if(numw==8) //如果位显值到对应位显对码表第八位则转下执行numw=0; //重新附值位显值对应对码表第0 位起/*下面是简单的单个数码管显示例证第一骤, 修改后在第三步骤内#include”reg52.h”#include”intrins.h”sbit duan=P2;//段显端口sbit wei=P2;//位显端口void main(){//P0=0xff; 数码管不显示任何信号,默认情况下通电本身就不显示, 可以不写duan=1; //开启段显端口P0=0x06; //附值段显数值为1,可以查阅数码管电路图相对应显示的对码表duan=0; //锁存,保持上一步段显状态,硬件说明请查阅74HC573 功能wei=1; //开启位显端口P0=0xfe; //附值位显位置,01111111,左边第一位,为0 的显示wei=0; //锁存,保持上一步位显状态,硬件说明请查阅74HC573 功能}*/ } } }void timer0() interrupt 1 /*第四步骤,中断时间函数这个相当于移位数显的速度, 速度够快,人眼就会有余辉效应, 感觉8 位数显一直在亮着,相当于正在播放的电影胶卷*/{TH0=(65536-50000)/256;TL0=(65536-50000)%256;a++;}/*以上有什么地方还需要改进的还请老师明示*/tips:感谢大家的阅读,本文由我司收集整编。
8个数码管动态显示

8个数码管动态显示南昌大学实验报告学生姓名:王崇伙学号:6103413026专业班级:生医131实验类型:□验证□综合设计□创新实验日期:2022/10/9实验成绩:实验二、8个数码管动态显示1~8一、实验目的1、掌握汇编查表法实现动态数码管显示。
2、熟练使用proteu仿真工具。
二、实验工具1、PC机2、keil程序编辑工具3、proteu仿真工具三、实验原理八路七段数码管动态显示原理其实和一个数码管显示0~F原理相同,不同在于显示数字的数码管有一个一次变成八个显示0~8,P0控制段选,P1控制位选,由本次实验使用八路共阴极数码管(如下图),当P0=0某7F(8)时,位码P1=0某fe既选通第八个数码管其余位选高电平不导通,结果就为第八个数码管显示8,依次P0段选‘1’时P1位选第一个数码管结果就为第一个数码管显示‘1’,延时0.2再依次循环输入1~8位选依次选一~八达到八位数码管循环显示1~8。
四、实验程序框图开始初始化端口设置断码表、位码表设定i=0,i++N显示i指向的内容Yi<8五、实验程序#include#include#include#defineucharunignedcharbitP_HC595_SER=P0^0;bitP_HC595_RCLK=P 2^4;bitP_HC595_SRCLK=P0^3;ucharcodeSEG7[]={0某3F,0某06,0某5B,0某4F,0某66,0某6D,0某7D,0某07,0某7F,0某6F,0某77,0某7C,0某39,0某5E,0某79,0某71,0某00};ucharcodeScon_bit[]={0某fe,0某fd,0某fb,0某f7,0某ef,0某df,0某bf,0某7f};uchardataDi_buf[]={16,16,16,16,16,16,16,0};voidDelay1m(){ unignedchari,j;_nop_();_nop_();_nop_();i=11;j=190;do{while(--j);}while(--i);}voidF_Send_595(uchar某){uchari;for(i=0;i<8;i++){某=某<<1;P_HC595_SER=CY;P_HC595_SRCLK=1;P_HC595_SRCLK=0;}}voiddiplay(void){uchari;for(i=0;i<8;i++){F_Send_595(Scon_bit[i]);F_Send_595(SEG7[Di_buf[i]]);P_HC595_RCLK=1;P_HC595_RCLK=0;De lay1m();}}六、实验结果六、实验总结延时0.2S,8个数码管动态显示1~8通过本次实验让我加深了对数码管显示功能的理解,并进一步也掌握了使用proteu仿真。
PLC课程设计:八 段 数 码 显 示

四、工程预算
五、设计反思
六、参考文献
八段数码显示课程设计
一、八段数码显示课程设计
(一)可编程控的概述
可编程控制器是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用了可编程序的存储器,用来在其内部存储和执行逻辑运算、顺序控制、定时、计数和算术运算等操作命令,并通过数字式和模拟式的输入和输出,控制各种类型的机械或生产过程。可编程控制器及其有关外围设备,都按易于与工业系统联成一个整体、易于扩充其功能的原则设计。”
A
A段
3
Q0.2
B
B段
4
Q0.3
C
C段
5
Q0.4
D
D段
6
Q0.5
E
E段
7
Q0.6
F
F段
8
Q0.7
G
G段
(三)接线图
1、按图3.1进行实验台面板接线。
图3.2.2八段数码显示实验接线图
(四)程序(含梯形图、语句表)
1、绘出系统梯形图
参考程序见“天塔之光.MWP”。
2、语句表
(五)调试
1、故障分析
硬件调试:接通电源,检查可编程控制器是否可以正常工作,接头是否接触良好,然后把其与电脑的通信口连接。
(二)实现的功能
实现的功能是:任一组抢先按下按键后,八段码显示器能及时显示该组的编号并使蜂鸣器发出响声,同时锁住抢答器,使其它组按键无效,只有按下复位开关后方可再次进行抢答。图3.2.1为抢答器仿真图
图3.2.1
图2.1
(三)所选设备及功能
序号
名称
数量
功能
1
YSXK-PLC8型PLC高级电工综合实训考核装置
8段数码管动态显示详解

原理图:8个数码管它的数据线并联接到JP5, 位控制由8个PNP型三级管驱动后由JP8引出。
相关原理:数码管是怎样来显示1,2,3,4呢?数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。
我们分别把他命名为A,B,C,D,E,F,G,H。
搞懂了这个原理, 我们如果要显示一个数字2, 那么 A,B,G,E,D这5个段的发光管亮就可以了。
也就是把B,E,H(小数点)不亮,其余全亮。
根据硬件的接法我们编出以下程序。
当然在此之前,还必须指定哪一个数码管亮,这里我们就指定最后一个P2.7。
LOOP:CLR P2.7 ;选中最后的数码管SETB P0.7 ;B段不亮SETB P0.5 ;小数点不亮SETB P0.1 ;C段不亮CLR P0.2 ;其他都亮CLR P0.3CLR P0.4CLR P0.6CLR P0.0JMP LOOP ;跳转到开始重新进行END把这个程序编译后写入单片机,可以看到数码管的最后一位显示了一个数字2。
也许你会说:显示1个2字就要10多行程序,太麻烦了。
显示数字2则是C,F,H(小数点)不亮,同时由于接法为共阳接法,那么为0(低电平)是亮为1(高电平)是灭。
从高往低排列,(p0.7_p0.0)写成二进制为01111110, 把他转化为16进制则为A2H。
我们可以根据硬件的接线把数码管显示数字编制成一个表格, 以后直接调用就行了。
有了这个表格上面显示一个2的程序则可简化为:LOOP:CLR P2.7 ;选中左边的数码管MOV P0,#0A2H ;送数字2的代码到P0口JMP LOOP ;跳转到开始重新进行END原理图中把所有数码管的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。
CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,由8个PNP的三极管,来控制这8位哪一位工作,例如上面的例子中我们选中的是P2.7.就是最后的一位亮了. 同样的如果要第一位亮, 只需要把程序CLR P2.7改为CLR P2.0即可。
数码管显示程序(汇编语言)

实验三数码显示一、实验目的了解LED数码管动态显示的工作原理及编程方法。
二、实验内容编制程序,使数码管显示“DJ--88”字样。
三、实验程序框图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)数码管显示“DJ--88”字样。
脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。
2、数码管显示“DJ--88”字样。
五、实验程序清单CODE SEGMENT ;S6.ASM display "DJ--88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1CON1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DHMOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,08HMOV BUF+5,08HRETCODE ENDSEND START。
4任务四 用PLC实现八段码显示控制

五、PLC的选择 的选择
2.存储容量的选择 用户程序所需的存储容量大小不仅与PLC 系统的功能有关,而且还与功能实现的方 法、程序编写水平有关。一个有经验的程 序员和一个初学者,在完成同一复杂功能 时,其程序量可能相差25%之多,所以对 于初学者应该在存储容量估算时多留裕量。
五、PLC的选择 的选择
图4-1 八段数码管实物外形图
图4-2 八段码显示阿拉伯数字“1”、“2”、“3”的示意图
【任务描述】 任务描述】
设计要求如下: 设计要求如下: 请用PLC实现输出控制对象 八段码显示器从 实现输出控制对象----八段码显示器从 请用 实现输出控制对象 0~2三个阿拉 伯数字的升序连续显示,要求升序 三个阿拉 伯数字的升序连续显示, 时间间隔为1s,并且用两 显示的阿拉伯数字间的时间间隔为 显示的阿拉伯数字间的时间间隔为 ,并且用两 个按钮分别实现数字显示的启动与停止 分别实现数字显示的启动与停止。 个按钮分别实现数字显示的启动与停止。
三、熔断器的选择
(1)一般负载。 一般负载。如照明负载、电阻炉、电 热器具等,可选择熔体的电流等于电路中 的额定电流。 (2)单台电动机 单台电动机:
(23A~ (23A~ 38A)
(3)多台电动机 多台电动机共用一个熔断器保护: 选择型号: 选择型号:RT18-32/6A
四、热继电器的选择
热继电器的型号含义:
任务四
用PLC实现八段 PLC实现八段 码显示控制
主讲:胡敏 金浙良
【任务目标】 任务目标】
一、进一步熟练运用取指令LD/LDI、触点串联指令 进一步熟练运用取指令 、触点串联指令AND/ ANI、触点并联指令 、触点并联指令OR/ORI、线圈输出指令 、线圈输出指令OUT、程序 、 结束指令END等基本指令进行本任务的四步法程序设计。 等基本指令进行本任务的四步法程序设计 结束指令 等基本指令进行本任务的四步法程序设计。 熟练应用定时器 和计数器C进行延时功能的程序设计 定时器T和计数器 进行延时功能 二、熟练应用定时器 和计数器 进行延时功能的程序设计 。 掌握PLC的编程方法 的编程方法、 三、掌握PLC的编程方法、编程规则或程序设计的基本原则 和步骤,通过本任务的训练逐步建立程序设计的基本思路 和步骤,通过本任务的训练逐步建立程序设计的基本思路 和方法。 和方法。 能独立、熟练完成【思考练习】的内容。 四、能独立、熟练完成【思考练习】的内容。 提高自我学习、信息处理、数字应用、解决问题等方法 五、提高自我学习、信息处理、数字应用、解决问题等方法 能力及与人交流 与人合作等社会能力 自查6S执行力 与人交流、 等社会能力; 能力及与人交流、与人合作等社会能力;自查 执行力 。
单片机课程设计-8位8段LED数码管动态扫描显示

8位8段LED数码管动态扫描一、内容要求:在8位8段LED数码管显示“8.8.8.8.8.8.8.8.”持续500ms,之后灭显示器200ms;然后显示“WELCOM-1”(由于8位8段LED数码管显示不能显示字母W 和M,所以改为显示“HELLO-93”)二、目的和意义1、掌握数码管动态扫描显示原理及实现方法。
2、掌握动态扫描显示电路驱动程序的编写方法。
三、总体方案设计思路LED数码动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,再选通相应的数码管后,即显示字段上得到显示字形码。
这种方式数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。
动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。
其接口电路是把所有显示器的8个笔画段A-DP同名端并联在一起,而每个显示器的公共极COM各自独立地接受I/O线控制,CPU向字段输出口送出字段形码是,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。
而所谓动态扫描是指采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
再轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上个位显示器并非同时点亮,但只要扫描的速度足够快,给人的影响就是一组稳定的显示数据,不会有闪烁感。
采用总线驱动器74HC245提供LED数码管的段驱动,输出高电平时点亮相应段;采用集电极开路的BCD-十进制译码器/驱动器完成LED数码管位驱动,输出低电平时选通相应位。
P2口每个口线输出灌电流不足以驱动一个数码管显示器的位-公共极,所依通过集电极开路的BCD-十进制译码器/驱动器7445驱动,即节约P2口线,又增加驱动能力。
四、仿真电路设计(电路原理图及关键单元说明)8位8段LED数码管动态扫描显示实验电路元件清单(1)A T89C52AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
用汇编语言实现八段数码管显示

⽤汇编语⾔实现⼋段数码管显⽰⽤汇编语⾔实现⼋段数码管显⽰⼀、实验要求利⽤实验仪提供的显⽰电路,动态显⽰⼀⾏数据.⼆、实验⽬的1. 了解数码管动态显⽰的原理。
2. 了解⽤总线⽅式控制数码管显⽰三、实验线路及连线四、实验说明1.本实验仪提供了6 位8段码LED 显⽰电路,只要按地址输出相应数据,就可以实现对显⽰器的控制。
显⽰共有6位,⽤动态⽅式显⽰。
8位段码、6位位码是由两⽚74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显⽰位。
本实验仪中 8位段码输出地址为0X004H ,位码输出地址为 0X002H 。
此处X 是由KEY/LED CS 决定,参见地址译码。
做键盘和LED 实验时,需将KEY/LED CS 接到相应的地址译码上。
以便⽤相应的地址来访问。
例如,将KEY/LED CS 接到CS0上,则段码地址为08004H ,位码地址为08002H 。
位选通信号 (0x002H)段码输出 (0x004H)数据总线七段数码管的字型代码表如下表:五、程序框图程序代码OUTBIT equ 08002h ; 位控制⼝OUTSEG equ 08004h ; 段控制⼝LEDBuf equ 60h ; 显⽰缓冲Num equ 70h ; 显⽰的数据DelayT equ 75h ;ljmp StartLEDMAP: ; ⼋段管显⽰码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0djnz r7, DelayLoop djnz r6, DelayLoop ret DisplayLED:mov r0, #LEDBuf mov r1, #6 ;mov r2, #00100000b ; Loop:mov dptr, #OUTBIT mov a, #0movx @dptr, a ;mov a, @r0mov dptr, #OUTSEG movx @dptr,amov dptr, #OUTBIT mov a, r2movx @dptr, a ;mov r6, #01call Delaymov a, r2 ;rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBIT mov a, #0movx @dptr, a ;retStart:mov sp, #40hmov Num, #0 MLoop:inc Nummov a, Nummov r0, #LEDBufFillBuf:mov a, banl a, #0fhmov dptr, #LEDMapmovc a, @a+dptr ;mov @r0,a ;inc r0inc bcjne r0, #LEDBuf+6, FillBufmov DelayT,#0DispAgain:call DisplayLED ;djnz DelayT,DispAgain ljmp MLoop end。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用汇编语言实现八段数码管显示
一、实验要求
利用实验仪提供的显示电路,动态显示一行数据.
二、实验目的
1. 了解数码管动态显示的原理。
2. 了解用总线方式控制数码管显示
三、实验线路及连线
四、实验说明
1.本实验仪提供了6 位8段码LED 显示电路,只要按地址输出相应数据,就可以
实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H ,位码输出地址为 0X002H 。
此处X 是由KEY/LED CS 决定,参见地址译码。
做键盘和LED 实验时,需将KEY/LED CS 接到相应的地址译码上。
以便用相应的地址来访问。
例如,将KEY/LED CS 接到CS0上,则段码地址为08004H ,位码地址为08002H 。
位选通信号 (0x002H)
段码输出 (0x004H)
数据总线
七段数码管的字型代码表如下表:
五、程序框图
程序代码
OUTBIT equ 08002h ; 位控制口
OUTSEG equ 08004h ; 段控制口
LEDBuf equ 60h ; 显示缓冲
Num equ 70h ; 显示的数据
DelayT equ 75h ;
ljmp Start
LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
Delay: ;
mov r7, #0
DelayLoop:
djnz r7, DelayLoop
djnz r6, DelayLoop
ret
DisplayLED:
mov r0, #LEDBuf
mov r1, #6 ;
mov r2, #00100000b ;
Loop:
mov dptr, #OUTBIT
mov a, #0
movx @dptr, a ;
mov a, @r0
mov dptr, #OUTSEG
movx @dptr,a
mov dptr, #OUTBIT
mov a, r2
movx @dptr, a ;
mov r6, #01
call Delay
mov a, r2 ;
rr a
mov r2, a
inc r0
djnz r1, Loop
mov dptr, #OUTBIT
mov a, #0
movx @dptr, a ;
ret
Start:
mov sp, #40h
mov Num, #0
MLoop:
inc Num
mov a, Num
mov b, a
mov r0, #LEDBuf
FillBuf:
mov a, b
anl a, #0fh
mov dptr, #LEDMap
movc a, @a+dptr ;
mov @r0,a ;
inc r0
inc b
cjne r0, #LEDBuf+6, FillBuf
mov DelayT,#0
DispAgain:
call DisplayLED ;
djnz DelayT,DispAgain ljmp MLoop
end。