二进制码转换为BCD码实验报告

合集下载

EDA实验报告实验二:二进制码转换成BCD码

EDA实验报告实验二:二进制码转换成BCD码

实验二二进制转换成BCD码
一、实验目的
设计并实现一个4位二进制码转换成BCD码的转换器。

二、实验仪器
SOPC实验箱、Quartus II软件
三、实验原理
对于不同代码之间的转换,有用硬件实现的,也有用软件实现的。

对于硬件实现,可以用一般的组合逻辑电路实现,也可以用译码器、编码器或只读存储器来实现。

本实验的原理见表3-1所示。

四、实验内容
1、启动Quartus II 建立一个空白工程,然后命名。

2、新建VHDL源程序文件并命名,输入程序代码并保存,进行综合编译,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。

3、新建仿真文件,对各模块设计进行仿真,验证设计结果。

打印仿真结果。

五、实验步骤
1.各模块程序:
1)用文本输入法实现秒的计时,程序如下:
module BCD(D,B);
output [4:0] B;
input [3:0] D;
reg [4:0] B;
always@ (D)
begin
if(D<4'b1010) begin B[3:0]=D[3:0];B[4]=1'b0;end
else begin B[3:0]=D[3:0]-4'b1010;B[4]=1'b1;end
end
endmodule
2.建立工作库文件夹,输入设计项目原理图或vorilog代码并存盘。

3.生成RTL图。

4.进行波形仿真,仿真后波形如下:
六、实验结果与现象验证
输入任何一个十六进制数产生了与二进制码转换成BCD码的转换真值表相对于的BCD码.。

数码显示译码器实训报告

数码显示译码器实训报告

一、实训目的通过本次实训,掌握数码显示译码器的基本原理、工作原理及电路设计方法,了解数码显示译码器在数字电路中的应用,提高动手能力和实践技能。

二、实训内容1. 数码显示译码器原理及分类(1)原理:数码显示译码器是一种将二进制、BCD码等编码转换为数码管显示的电路。

它主要由编码器、译码器、驱动器等组成。

(2)分类:根据编码方式,可分为二进制译码器、BCD码译码器、十六进制译码器等;根据输出方式,可分为共阳极译码器和共阴极译码器。

2. 数码显示译码器电路设计(1)共阳极译码器电路设计以4-7译码器为例,输入端为二进制编码,输出端为7段数码管的驱动信号。

电路图如下:```A||+---+---+---+---+| | | | |B---+ | | +---C| | | | |+---+---+---+---+| | | |D---+ | +---E| | | |+---+---+---+---+| | | | |F---+ | | +---G| | | | |+---+---+---+---+H```(2)共阴极译码器电路设计以CC4511BCD译码器为例,输入端为BCD码,输出端为7段数码管的驱动信号。

电路图如下:```A||+---+---+---+---+| | | | |B---+ | | +---C| | | | |+---+---+---+---+| | | |D---+ | +---E| | | |+---+---+---+---+| | | |F---+ | | +---G| | | |+---+---+---+---+H```3. 数码显示译码器应用(1)计时器:将计数器输出的二进制编码转换为数码管显示,实现计时功能。

(2)数码管显示模块:在嵌入式系统、智能仪表等设备中,将数字信号转换为数码管显示,方便用户读取数据。

(3)地址译码:在存储器、I/O端口等地址译码电路中,将地址信号转换为输出端口,实现数据传输。

二进制转换成十进制BCD码(加3移位法)

二进制转换成十进制BCD码(加3移位法)

⼆进制转换成⼗进制BCD码(加3移位法)“原来的⼆进制数⼗⼏位,则左移时就要左移⼏位”"⼆进制数调整BCD码的⽅法是将⼆进制码左移8次,每次移位后都检查低四位LSD+3是否⼤于7,如是则加3,否则不加,⾼4位MSD作同样处理"⼀、为什么左移8次原寄存器是存⼆进制数的,新寄存器是存⼗进制数的,当然要左移8次,把数据全部移进去。

但这⾥要注意两件事,第⼀,如果只安排⼀个字节作⼗进制寄存器,原数据要⼩于 64H(即100)。

第⼆,由于新寄存器是⼗进制的,要随时调整。

⼆、检查半字节+3 是否⼤于 7,是,则 +3在 51 系列⾥有⼗进制调节指令(半字节⼤于 9,则加 6,应该不难理解),PIC ⾥没有,只好采取变通的⽅法。

检查半字节+3 是否⼤于 7,也就是检查半字节是否⼤于 4。

因为,如果⼤于 4(⽐如 5、6),下⼀步左移就要溢出了,所以加 3,等于左移后的加 6,起到⼗进制调节的作⽤。

那为什么要绕个圈⼦去检测半字节+3 是否⼤于 7 呢?这样程序编起来会简练⼀些。

⼀个例⼦假如有⼀个⼋位⼆进制数255,我把他转255的⼗进制数0 1111 1111 原数1 0000 0001 ;左移⼀次2 0000 0011 ; 左移⼆次3 0000 0111 ;左移三次,检查低四位+3>7?3.1 0000 1010 ;⼤于7,加3进⾏调整4 0001 0101 ;左移四次, 检查低四位+3>7?4.1 0001 1000 ;⼤于7,加3进⾏调整5 0011 0001 ;左移五次6 0110 0011 ;左移六次,检查⾼四位+3>7?6.1 1001 0011 ;⼤于7,加3进⾏调整7 1 0010 0111 ;左移七次,检查低四位+3>7?7.1 1 0010 1010 ;⼤于7,加3进⾏调整8 10 0101 0101 ;左移⼋次(得到BCD码255)附上Verilog代码://17位⼆进制数转BCD码(基本思想是逢⼗进1)module BIN_BCD_4 (CLK, A, BW, BQ, BB, BS, BG);input CLK;input [16:0]A; //⼆进制输⼊数据output [3:0]BW, BQ, BB, BS, BG;//BCD数据输出寄存器reg [3:0]BW, BQ, BB, BS, BG;integer I;reg [19:0]TEMP;reg [16:0]C;always @ (posedge CLK)beginC=A;TEMP=0;for (I=1; I<17; I=I+1)begin{TEMP, C}={TEMP[18:0], C, 1'b0};//左移⼀位 if (TEMP[3:0]>4'b0100)beginTEMP[3:0]=TEMP[3:0]+3; // >4则加3endif (TEMP[7:4]>4'b0100)beginTEMP[7:4]=TEMP[7:4]+3;endif (TEMP[11:8]>4'b0100)beginTEMP[11:8]=TEMP[11:8]+3;endif (TEMP[15:12]>4'b0100)beginTEMP[15:12]=TEMP[15:12]+3;endif (TEMP[19:16]>4'b0100)beginTEMP[19:16]=TEMP[19:16]+3;end{BW, BQ, BB, BS, BG}={TEMP[18:0], A[0]}; endendendmodule。

(实验二)二进制码转换为BCD码实验报告

(实验二)二进制码转换为BCD码实验报告

实验二二进制码转换为BCD码一、实验目的1、掌握数码转换基本方法,加深对数码的理解。

2、用于十进制BCD码显示。

二、实验内容将AX的内容转换为十进制BCD码。

三、实验程序框图四、实验步骤脱机模式:(1)在P.态,按SCAL键,输入2CE0,按EXEC键。

(2)复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H 单元中,故其值应为06、05、05、03、05。

联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S2.ASM 文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)复位“系统复位”键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。

注:操作过程参照“实验一二进制多位加法运算”。

五、实验程序清单X:\DICE-8086K3微机原理与接口实验箱CDROM\CODE\86kasm\S2.ASM;将AX拆为5个BCD码,并存入Result开始的5个单元DATA SEGMENT AT 0 ;S2.ASM,BIN-->BCDORG 4000HRESULT DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATAORG 2CE0HSTART PROC NEARMOV AX, DATAMOV DS, AXMOV DX,0000HMOV AX, 65535MOV CX, 10000DIV CXMOV RESULT, AL ; 除以 10000, 得WAN位数MOV AX,DXMOV DX,0000HMOV CX, 1000DIV CXMOV RESULT+1, AL ; 除以 1000, 得QIAN位数MOV AX,DXMOV DX,0000HMOV CX, 100DIV CXMOV RESULT+2, AL ; 除以 100, 得BAI位数MOV AX,DXMOV DX,0000HMOV CX, 10DIV CXMOV RESULT+3, AL ; 除以 10, 得SHI位数MOV RESULT+4, DL ; 得GE位数JMP $CODE ENDSEND START。

汇编语言16位二进制转bcd码 8086

汇编语言16位二进制转bcd码 8086

题目:深度探讨汇编语言下16位二进制转BCD码的实现方法在计算机科学与技术领域中,汇编语言是一种底层的编程语言,适用于对硬件进行直接控制和优化。

而16位二进制转BCD码正是其中一个常见的应用场景。

在本文中,我们将深入探讨在8086汇编语言下实现16位二进制转BCD码的方法,并分析其原理和实现步骤。

1. 汇编语言简介汇编语言是一种低级语言,与机器语言一一对应,因此可以直接操作计算机硬件。

相比高级语言,如C语言和Java,汇编语言执行效率更高,并且能够精确地控制硬件资源。

在8086汇编语言中,我们可以直接操作寄存器和内存,实现对16位二进制数据的处理。

2. 16位二进制转BCD码的原理BCD码是一种二进制编码方式,用4位二进制数表示一位十进制数。

16位二进制数转BCD码的核心思想就是将每一位二进制数转换为对应的BCD码。

在8086汇编语言中,我们可以通过多次除以10和取余数来完成这一转换过程,具体步骤如下:1) 将16位二进制数存放在两个8位寄存器中;2) 用除法指令将两个8位寄存器中的内容转换为对应的BCD码;3) 将转换后的BCD码存放在指定的内存单元中。

3. 实现方法及步骤下面我们将详细介绍实现16位二进制转BCD码的具体步骤,以帮助读者更好地理解和掌握这一转换方法。

步骤1:准备工作在开始之前,我们需要先准备好16位二进制数和相应的寄存器、内存单元等资源。

在8086汇编语言中,我们可以使用DW(定义字)指令定义16位二进制数,使用MOV(将数据从一个位置转移到另一个位置)指令将数据加载到寄存器中。

步骤2:除法运算接下来,我们需要使用DIV(无符号数除法)指令将16位二进制数转换为BCD码。

通过多次除以10和取余数的运算,我们可以得到每一位二进制数对应的BCD码。

步骤3:存储结果我们将转换后的BCD码存放在指定的内存单元中,以便后续的处理和使用。

4. 总结及个人观点总体来说,在8086汇编语言下实现16位二进制转BCD码的过程相对复杂,需要进行多次除法运算和数据转移。

微型计算机实验:二进制到BCD_转换

微型计算机实验:二进制到BCD_转换

上机实践报告一、实验目的:1.掌握Lab2000p实验教学系统基本操作;2.掌握8088/8086汇编语言的基本语法结构;3.熟悉8088/8086汇编语言程序设计基本方法。

二、实验设备b2000p实验教学系统;2.IBM-PC机三、实验内容和实验步骤1.二进制到BCD 转换1)实验要求将地址为2000H的2字节二进制数(<999)转换成BCD码,保存在地址为2010H开始的存储单元中(高位在低地址)。

2)程序框图3)程序代码code segmentassume cs:codestart:mov ax, 0mov ds, axmov bx, 2000hmov ax, [bx]mov cl, 100div clmov [bx+10h], al ; 除以 100, 得百位数mov al, ahmov ah, 0mov cl, 10div clmov [bx+11h], al ; 余数除以 10, 得十位数mov [bx+12h], ah ; 余数为个位数jmp $code endsend start4)实验步骤⑴开启计算机电源,开启Lab2000p实验箱电源;⑵启动WAVE6000软件;⑶确认WAVE6000与Lab2000p连接;⑷输入源代码;⑸编译源代码(F9);⑹在2000H存储单元输入2字节二进制数(<999);⑺单步运行源代码(F8),观察每条指令执行结果;⑻待程序运行结束观察2010H开始的3字节存储单元,并与2000H开始的存储单元比较。

2、BCD码到ASCII码转换1)实验要求将地址为2000H的2位BCD码(高位在低地址)转换成ASCII码,保存在地址为2010H 开始的存储单元中(高位在低地址)。

2)提示采用查表形式,现在数据段建立一个二进制与ASCII的对照表,再用查表指令获取ASCII码。

3、数据排序1)实验要求将2000H开始的10字节数按从小到大排序,结果存回2000H开始的存储单元中。

数字逻辑转换实验报告

数字逻辑转换实验报告

一、实验目的1. 理解和掌握数字逻辑转换的基本原理和方法。

2. 掌握将不同编码形式的数字信号相互转换的技巧。

3. 通过实验验证数字逻辑转换电路的正确性和性能。

二、实验原理数字逻辑转换是指将一种数字信号转换为另一种数字信号的过程。

常见的数字逻辑转换包括BCD码与二进制码之间的转换、格雷码与二进制码之间的转换、8421码与余3码之间的转换等。

本实验主要涉及以下几种转换:1. BCD码与二进制码之间的转换:BCD码(Binary-Coded Decimal)是一种用4位二进制数表示1位十进制数的编码方式。

将BCD码转换为二进制码时,只需将每一位BCD码直接转换为对应的二进制码即可。

2. 格雷码与二进制码之间的转换:格雷码(Gray Code)是一种循环码,相邻两个码字之间只有一个位码发生改变。

将格雷码转换为二进制码时,只需将格雷码的最低位取反即可。

3. 8421码与余3码之间的转换:8421码是一种有权码,从左到右,第一位1代表2,第二位1代表4,第三位1代表2,第四位1代表1。

余3码是由8421BCD码加上0011形成的一种无权码。

将8421码转换为余3码时,只需将8421码的每一位加3即可。

三、实验设备与器材1. 数字逻辑实验箱2. 数字逻辑转换电路模块3. 示波器4. 信号发生器5. 电源四、实验步骤1. 连接实验电路:根据实验要求,连接数字逻辑转换电路模块,并确保电路连接正确。

2. 设置输入信号:使用信号发生器产生待转换的数字信号,并将其输入到转换电路中。

3. 观察转换结果:使用示波器观察转换电路的输出信号,记录实验数据。

4. 比较理论值与实验值:根据实验原理,计算理论值,并与实验值进行比较。

5. 分析实验数据:分析实验数据,总结实验结果,验证数字逻辑转换电路的正确性和性能。

五、实验数据及分析1. BCD码与二进制码之间的转换输入BCD码:0011理论转换结果:0001 0011实验转换结果:0001 00112. 格雷码与二进制码之间的转换输入格雷码:1100理论转换结果:1110实验转换结果:11103. 8421码与余3码之间的转换输入8421码:0101理论转换结果:0110实验转换结果:0110通过实验数据的对比分析,可以得出以下结论:1. 实验电路能够正确实现BCD码与二进制码、格雷码与二进制码、8421码与余3码之间的转换。

报时电路实验报告

报时电路实验报告

报时电路实验报告本次实验设计了一种报时电路。

首先,通过RC电路实现了一个周期为1秒的电子时钟信号发生器;然后,通过计数器电路和BCD转换器将电子时钟信号转换为BCD码,并输出到数码管显示出来;最后,通过译码器将BCD码转换为报时信号,通过扬声器输出。

实验结果表明,报时电路能准确、可靠地按秒报时。

关键词:报时电路,RC电路,计数器,BCD转换器,数码管,译码器,扬声器。

一、引言报时电路是一种常见的电路装置,广泛应用于智能音箱、闹钟、计时器等领域。

本实验旨在设计一个简单的报时电路,实现准确、可靠地按秒报时。

二、实验原理1. RC电路RC电路是由电阻和电容组成的一种基本电路。

当RC电路的电容充放电时间与电阻的阻值相等时,电容电压的波形呈指数上升或指数下降的形态。

利用这种特性可以实现定时信号的产生。

2. 计数器电路计数器电路是一种能够实现计数功能的电路。

常见的计数器电路有二进制计数器、十进制计数器等。

在本实验中,使用二进制计数器电路进行计数。

3. BCD转换器BCD转换器是一种能够将二进制数转换为BCD码的电路。

BCD码是一种用四位二进制数表示十进制数的编码方式。

4. 数码管数码管是一种能够显示数字和字符的电子元件。

在本实验中,使用数码管显示报时信息。

5. 译码器译码器是一种能够将编码信号转换为输出信号的电路。

在本实验中,使用译码器将BCD码转换为报时信号。

三、实验步骤1. 搭建RC电路,通过调节电阻和电容的值,使得RC电路的充放电时间为1秒,从而产生一个周期为1秒的电子时钟信号。

2. 搭建计数器电路,使用二进制计数器进行计数,并将计数值输出到BCD转换器。

3. 搭建BCD转换器电路,将计数器输出的二进制码转换为BCD码,并输出到数码管进行显示。

4. 搭建译码器电路,将BCD码转换为报时信号,并通过扬声器输出。

5. 连接电源和信号线,开启电源。

6. 观察数码管显示的报时信息,并听取扬声器输出的报时声音。

译码器应用设计实验报告

译码器应用设计实验报告

译码器应用设计实验报告引言译码器(Decoder)是数字电路中常用的逻辑电路之一,它实现了将输入数字码转换成输出端口的控制信号。

译码器被广泛应用于数字系统中,如计算机、通信、测控等领域。

通常情况下,译码器基于真值表或卡诺图设计,可以根据输入的不同编码方式,输出相应的解码结果。

本实验主要介绍译码器的应用设计。

通过实验,我们将学会如何使用译码器来实现数字系统的控制和数据处理任务。

本实验所涉及的译码器有BCD-7段译码器、数值译码器、时序译码器以及存储器译码器等。

实验器材1. 逻辑计算器2. 示波器3. 数字电路实验箱4. 5V直流电源5. 译码器(BCD-7段译码器、数值译码器、时序译码器和存储器译码器)6. LED数码管实验原理1. BCD-7段译码器BCD-7段译码器是将4位BCD码转换成7段数码管显示的译码器。

8个BCD码,分别对应着数字0~9和字母A~F,输出接到控制7个LED数码管的段选端口和1个公共阴极的位选端口。

2. 数值译码器数值译码器是将4位二进制数转换成BCD码的译码器。

通过数值译码器,可以将数字的二进制编码转换成BCD编码,从而实现数字的BCD码显示。

译码器输出接LED数码管的输入端口。

时序译码器是根据不同状态的时序信号,将输入的二进制数码转换成对应的控制信号的译码器。

将时序信号和数码信号分别输入至译码器的两个输入端口,译码器将输出对应的动作信号。

常用于时序控制电路的设计中。

4. 存储器译码器存储器译码器是将存储芯片中的地址码转换成控制芯片的输入信号的译码器。

存储芯片中的地址码分别对应着芯片的不同存储单元,译码器将地址码转换成控制信号,使控制芯片可以正确访问存储芯片中的数据。

实验设计实验步骤:(1)将BCD码8个输入引脚分别接到译码器的8个输入端口上。

(4)将5V直流电源连接到译码器和LED数码管上。

实验结果:输入BCD码0000~1111时,LED数码管正确显示相应的数字0~9和字母A~F。

八位二进制码转化为BCD码及余三码、BCD码转化余三码

八位二进制码转化为BCD码及余三码、BCD码转化余三码

河南科技大学课程设计说明书课程名称 EDA技术题目八位二进制转化为BCD码及余三码、BCD码转化为余三码学院车辆与动力工程学院班级学生姓名指导教师日期2012年7月14号八位二进制码转化为BCD码及余三码、BCD码转化余三码摘要八位二进制数转化为BCD码和余三码的转换在计算机语言中起到了非常重要的作用,通过这次的课程设计让我们更好地掌握二进制数转化为BCD 码和余三码。

二进制转化为余三码不能直接转化,只能通过BCD码为中介进而转化成余三码。

余三码(余3码)是由8421BCD码加上0011形成的一种无权码,由于它的每个字符编码比相应的8421BCD码多3,故称为余三码。

BCD码的一种。

余三码是一种对9的自补代码,因而可给运算带来方便。

其次,在将两个余三码表示的十进制数相加时,能正确产生进位信号,但对“和”必须修正。

修正的方法是:如果有进位,则结果加3;如果无进位,则结果减3。

如,(526)10进制=(0101 0010 0110)8421BCD码=(1000 0101 1001)余3码EDA技术打破了软件和硬件间的壁垒,使计算机的软件技术与硬件实现、设计效率与产品性能合二为一,它代表了电子设计技术和应用技术的发展方向。

VHDL主要用于描述数字系统的接口,结构和功能,它的语法简单易懂,移植性好。

本设计采用VHDL,Altera公司的Quartus II软件仿真,来实现八位二进制到BCD和BCD到余三码的转换。

由于八位二进制的最大范围是0~255,而八位BCD码的范围是0~99,故在转换时输入信号只能取99以内的数。

关键词:八位二进制、BCD码、余三码、VHDL目录第一章绪论 (1)§1.1 课程设计题目 (1)§1.2 设计目的 (2)§1.3 课程设计要求 (2)第二章EDA、VHDL简介 (3)§2.1 EDA简介 (3)§2.2 VHDL简介 (3)第三章设计过程 (5)§3.1设计规划 (5)§3.2各个模块设计及原理图 (5)§3.2.1八位二进制码转化为八位BCD码 (5)§3.2.2八位BCD码转化为八位余三码 (6)§3.2.3八位二进制码转化为8位余三码 (7)第四章系统仿真 (9)§4.1八位二进制码转化为八位BCD码仿真及分析 (9)§4.2八位BCD码转化为八位余三码仿真及分析 (9)§4.3八位二进制码转化为八位余三码仿真及分析 (10)第五章总结 (11)参考文献 (12)第一章绪论随着计算机科学与技术突飞猛进地发展,用数字电路进行信号处理的优势也更加突出,自20世纪70年代开始,这种用数字电路处理模拟信号的所谓“数字化”浪潮已经席卷了电子技术几乎所有的应用领域EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

bcd译码的多位数码管扫描显示实验总结

bcd译码的多位数码管扫描显示实验总结

bcd译码的多位数码管扫描显示实验总结
BCD译码的多位数码管扫描显示实验主要是通过将BCD码转换为数码管可以显示的数字,在多个数码管之间进行循环扫描,从而实现多位数码管的显示。

该实验涉及到数字电路、单片机编程和硬件电路设计等方面。

在该实验中,我们首先需要了解BCD码的概念以及其转换为数码管显示的方法。

BCD码是一种二进制编码方式,每个十进制数用4个二进制位表示,即0000~1001。

将BCD码转换为数码管显示的方法是通过BCD译码器将输入的BCD码转换为对应的七段数码管的控制信号,从而实现数码管的显示。

接下来,我们需要设计硬件电路,包括数码管的接口电路和BCD译码器的连接电路。

数码管的接口电路需要采用与门或非门的组合电路,将单片机的输出信号转换为七段数码管的控制信号。

BCD 译码器的连接电路需要根据具体的型号和引脚定义进行连接。

最后,我们需要编写单片机程序,实现BCD码的输入和输出,以及数码管的扫描显示。

程序需要完成以下功能:读取BCD码输入,将BCD码转换为对应的七段数码管的控制信号,控制多个数码管之间进行循环扫描,并在数码管上显示相应的数字。

总体来说,BCD译码的多位数码管扫描显示实验需要涉及到数字电路、单片机编程和硬件电路设计等多个方面。

通过该实验,可以深入理解数字电路和单片机原理,并掌握实际应用技能。

汇编实验报告--二进制到BCD码转换

汇编实验报告--二进制到BCD码转换

实验二:二进制到BCD码转换学生姓名:何茂杰学号:2010305104 专业班级:计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.掌握无条件转移指令、条件转移指令;2.掌握利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法;3.掌握直接向视频RAM送ASCII码进行屏幕显示的方法;4.掌握屏幕字符显示程序编写与调试。

二、实验内容将存放在BIN的一个16位无符号数转换为BCD码,结果的万、千,百、十、个位依次存放在BCD+0、BCD+1、BCD+2、BCD+3、BCD+4单元内三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求对操作数的寻址、转换方法至少要由两种以上。

五、主要实验步骤及结果1.直接向VRAM送ASCII码显示字符(1)用A命令在100H处键入下列程序MOV AX,B000MOV DS,AXXOR AL,ALXOR BX,BXMOV CX,100LOP:MOV [BX],ALINC BXINC ALPUSH CXMOV CX,8DELY:PUSH CXMOV CX,0J:LOOP JPOP CXLOOP DELYPOP CXLOOP LOPINT 20(2)用N命令和W命令将此程序存入文件中。

(一定要先存入!)(3)用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT 21H 2号功能调用有何不同?控制字符区在该程序中没有显示,在上一个程序中显示为笑脸等符号。

(4)自编程序:将存放在BIN的一个16位无符号数转换为BCD码反汇编;-U10013A3:0100 BB0010 MOV BX,100013A3:0103 8B07 MOV AX,[BX]13A3:0105 BB0000 MOV BX,000013A3:0108 BA0000 MOV DX,000013A3:010B BB0A00 MOV BX,000A13A3:010E F7F3 DIV BX13A3:0110 A21310 MOV [1013],AL13A3:0113 89161410 MOV [1014],DX13A3:0117 BB6400 MOV BX,006413A3:011A F7F3 DIV BX13A3:011C A21210 MOV [1012],AL13A3:011F 89D0 MOV AX,DX执行情况:-t=100AX=0000 BX=1000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13A3 ES=13A3 SS=13A3 CS=13A3 IP=0103 NV UP EI PL NZ NA PO NC 13A3:01038B07 MOV AX,[BX] DS:1000=0000六、思考题利用INT 21H 显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同?答:利用INT 21H显示时,07H-0DH的控制符会用笑脸之类的符号显示;直接向VRAM 送ACSII码时,07H-0DH的控制符不显示。

16位二进制数转换成BCD码

16位二进制数转换成BCD码

16位二进制数转换成BCD码的的快速算法-51单片机2010-02-18 00:43在做而论道上篇博文中,回答了一个16位二进制数转换成BCD码的问题,给出了一个网上广泛流传的经典转换程序。

说它经典,不仅是因为它已经流传已久,重要的是它的编程思路十分清晰,十分易于延伸推广。

做而论道曾经利用它的思路,很容易的编写出了48位二进制数变换成16位BCD码的程序。

但是这个程序有个明显的缺点,就是执行时间太长,转换16位二进制数,就必须循环16遍,转换48位二进制数,就必须循环48遍。

上述的HEX2BCD子程序,虽然长度仅仅为26字节,执行时间却要用331个机器周期。

.单片机系统多半是用于各种类型的控制场合,很多时候都是需要“争分夺秒”的,在低功耗系统设计中,也必须考虑因为运算时间长而增加系统耗电量的问题。

为了提高整机运行的速度,在多年前,做而论道就另外编写了一个转换程序,程序的长度为81字节,执行时间是81个机器周期,(这两个数字怎么这么巧!)执行时间仅仅是经典程序的1/4!.近来,在网上发现了一个链接:/news/Article/uc/uc8051//4751.html,也对这个经典转换程序进行了改进,话是说了不少,只是没有实质性的东西。

这篇文章提到的程序,一直也没有找到,也难辩真假。

这篇文章好像是选自某个著名杂志,但是在术语的使用上,有着明显的漏洞,不像是专业人员的手笔。

比如说文中提到的:“使用51条指令代码,但执行这段程序却要耗费312个指令周期”,就是败笔。

51条指令代码,真不知道说的是什么,指令周期是因各种机型和指令而异的,也不能表示确切的时间。

.下面说说做而论道的编程思路。

;-----------------------------------------------------------------------;已知16位二进制整数n以b15~b0表示,取值范围为0~65535。

;那么可以写成:; n = [b15 ~ b0];把16位数分解成高8位、低8位来写,也是常见的形式:; n = [b15~b8] * 256 + [b7~b0];那么,写成下列形式,也就可以理解了:; n = [b15~b12] * 4096 + [b11~b0];式中高4位[b15~b12]取值范围为0~15,代表了4096的个数;;上式可以变形为:; n = [b15~b12] * 4000 + {[b15~b12] * (100 - 4) + [b11~b0]};用x代表[b15~b12],有:; n = x * 4000 + {x * (100 - 4) + [b11~b0]};即:; n = 4*x (千位) + x (百位) + [b11~b0] - 4*x;写到这里,就可以看出一点BCD码变换的意思来了。

汇编程序设计—二进制码转换为BCD码

汇编程序设计—二进制码转换为BCD码

汇编程序设计—二进制码转换为BCD码
一、算法原理
BCD(Binary Coded Decimal)码是把十进制数据以二进制的方式进
行编码,每四位二进制数字表示一个十进制的数字,比如数字“7”用二
进制表示为“0111”,把“0111”放在一起就是十进制数“7”的BCD码。

1)对任意两个BCD码,可以按位相加,得到结果,其运算规则如下:(1)如果两个BCD码都是规范的BCD码,其相加结果也是BCD码;
(2)如果两个BCD码的相加结果不是正确的BCD码,则可以在最高
位1的位置添加1,使之成为BCD码,另一个BCD位置上也添加1,然后
最低位置上的1被移位,最终结果也是BCD码。

2)工程实现
该BCD码转换程序主要由二进制转换为BCD码的过程组成,根据算法
原理,实现程序如下:
1.首先把输入的二进制码按4位1组进行分组,得到分组后的二进制数,如果分组后的高位不足4位,则用0补足,得到规范的二进制码;
2.对二进制码进行转换,将2进制码转换成BCD码,得到相应的BCD 码;
3.对于每组BCD码,检查它是否是正确的BCD码,如果不是则需要添
加1;
4.最后将BCD码拼接起来,就是最终的BCD码结果。

二、汇编代码
MOV AL, offset BinaryCode ; 把二进制码移到AL中MOVCL,4;CL设置为4。

八位二进制——BCD码转换器

八位二进制——BCD码转换器

实验报告:8位二进制-BCD码转换器姓名:学号:指导教师:一.实验目的了解二进制-BCD码转换器实现原理,掌握移位加3算法,熟悉Verilog编程中模块复用模式。

二.实验任务1.掌握用移位加三算法实现二进制-BCD码转换器的设计;2.设计Verilog实验程序;3.生成比特流文件,将文件下载到开发板中进行硬件验证。

三.实验设备1.计算机(安装Xilinx ISE 10.1软件平台);2.NEXYS2 FPGA开发板一套(带USB-MIniUSB下载线)四.实验原理设计任意数目输入的二进制-BCD码转换器的方法就是采用移位加三算法(Shift and Add 3 Algorithm)。

此方法包含以下4个步骤:1)把二进制左移1位;2)如果共移了8位,那么BCD数就在百位、十位和个位列;3)如果在BCD列中,任何一个二进制数是5或者比5更大,那么就在BCD列的数值加上3;4)回到步骤1)。

其工作过程如图1所示:图1. 一个8位的二进制数转换成BCD码的步骤五.实验内容在Xilinx ISE 10.1上完成8位二进制-BCD码转换器设计,输入设计文件,仿真后,生成二进制码流文件下载到FPGA开发板上进行验证;1)依照实验1的方式,在Xilinx ISE 10.1中新建一个工程example02;2)在工程管理区任意位置单击鼠标右键,在弹出的快捷菜单中选择“New Source”命令,弹出新建源代码对话框,这里我们选择“Verilog Module”类型,输入Verilog文件名“binbcd8.v”,完整代码如下:module binbcd8(input [7:0] b,output reg [9:0] p);reg [17:0] z;integer i;always @(*)beginfor (i=0;i<=17;i=i+1)z[i]=0;z[10:3]=b;repeat(5) //重复5次beginif (z[11:8]>4)z[11:8]=z[11:8]+3;if (z[15:12]>4)z[15:12]=z[15:12]+3;z[17:1]=z[16:0];endp=z[17:8];endendmodule3)设计相应的7段显示管程序,将相应的十进制数在开发板的显示管上显示出来。

数字电路实验二--译码器实验报告

数字电路实验二--译码器实验报告

数字电路实验二--译码器实验报告
译码器实验是数字电路实验课程的重要组成部分。

本次实验旨在介绍译码的基本原理,并取得实际的实验效果。

本次实验使用的译码器类型是双向双回路译码器。

它可以将2位二进制输入转换为4
位二进制数字代码输出。

它是由基础译码单元(BCD)和其它外部电路组成的,可以根据
二进制输入状态产生正确的十进制输出。

此外,本次实验使用了按钮、LED、模拟电路、
小灯丝等部件来实现所涉及的功能。

实验分为以下几步:首先需要将所有的组成部件组装在原理图的对应接口中;其次根
据原理图上的接口,安装电源组件;然后根据电路要求,按钮和灯丝等部件的位置应该有
所区别;紧接着,根据原理图的线路图,将按钮和LED的铜丝焊接到对应接口处。

最后,
根据实验要求,连接模拟电路,测试结果是否符合实验要求。

在实验过程中,本实验室使用了一台OMRON译码器,根据二进制输入状态,它可以产
生4位十进制输出状态。

实验结果显示,在每种二进制输入状态下,OMRON译码器都可以
成功实现预期的输出,从而证明了译码器的良好性能及高精度。

总的来说,本次实验的主要任务是译码的基本介绍,以及掌握OMRON译码器的使用方法。

实验过程既充满乐趣,也有所收获。

让我们有机会贴近电子工程实践,掌握各种技术,扩充知识。

这次实验是一次有趣又有意义的学习体验。

fpga的bcd与二进制的转换实验原理

fpga的bcd与二进制的转换实验原理

fpga的bcd与二进制的转换实验原理
FPGA的BCD(二进制编码十进制)与二进制转换实验原理如下:
BCD码也称为8421码,它使用4位二进制数来表示一个十进制数。

因此,BCD码的范围是0到9。

为了将一个十进制数转换为BCD码,我们可以使用以下公式:A = 2^3 + 2^2 + 2^1 + 2^0。

这表示我们将十进制数的每一位分别转换为4位二进制数。

例如,要将十进制数189转换为BCD码,结果为0001_1000_1001,可以看出189占据12位,每个数占4位。

反过来,要将BCD码转换为二进制数,可以使用移位和加三的方法。

这种方法首先将无符号二进制数和对应位数的BCD码的若干个0拼接在一起,然后不断地左移x次,每次移位后判断BCD码的各个位是否大于4,如果大于则对其加三后移位,否则直接移位。

x次移位完成后,BCD码的部分对应的即为转换好的无符号BCD码数据。

需要注意的是,在BCD码移位后进入到某一位数的前2位时最大数据为0011一定小于4,无需对其判断。

只有在移位3次后个位才有可能出现0111>4,所以在第3次移位后的数据在加3以后最高位的1可能蹦到第四位。

同样地,第6次移位后十位的最高位在第7位,BCD码的十位可能出现0100>4,+3后可能最高位蹦到第8位;第9次移位后最高位蹦到第11位,BCD码百位可能出现0100>4,需要判断百位>4。

总的来说,通过上述方法可以实现FPGA的BCD与二进制之间的转换。

在实际实验中,为了减小两个D触发器间组合逻辑的延迟,可以在每次的算法移位以后都插入寄存器,最后构成一个类似LSFR(线性反馈移位寄存器)的结构。

二进制转化为8421bcd码

二进制转化为8421bcd码

二进制转化为8421bcd码
二进制转化为8421BCD码是一种将二进制数转换为BCD码的方法。

BCD码是一种十进制数系统的二进制表示形式,即每个十进制数位用一个4位二进制数表示。

8421BCD码是BCD码中最常用的一种,根据位权原理,每个4位二进制数的位权依次为8、4、2、1。

因此,将一个二进制数转化为8421BCD码,需要将每个二进制数位分别转化为4位二进制数,并分别赋予对应的位权。

具体转换过程如下:
1. 将原二进制数从右往左按位分组,每组分别为4位二进制数。

如果最高位不足4位,则在左侧补0,直至凑成4位二进制数。

2. 对于每个4位二进制数,按照8421BCD码的位权原则,将其转化为对应的十进制数。

即,将每个二进制数位与对应的位权相乘,再将结果相加,得到该4位二进制数所表示的十进制数。

3. 将每个4位二进制数转化为对应的十进制数后,将它们按从左往右的顺序排列,得到最终的8421BCD码。

例如,将二进制数1101101011转化为8421BCD码的过程如下: 1. 将二进制数从右往左每4位分组,得到:
1101 1010 11
2. 将每个4位二进制数转化为对应的十进制数,得到:
1101 -> 13
1010 -> 10
0011 -> 3
3. 将每个十进制数按从左往右的顺序排列,得到最终的8421BCD码:
13 10 3
因此,1101101011的8421BCD码为13103。

数字编码实验报告(3篇)

数字编码实验报告(3篇)

第1篇一、实验目的1. 理解数字编码的基本原理和方法。

2. 掌握几种常见的数字编码技术,如BCD编码、格雷码编码等。

3. 通过实验验证数字编码的正确性和实用性。

二、实验原理数字编码是将数字信号转换成另一种数字信号的过程。

数字编码技术广泛应用于数字通信、计算机技术、工业控制等领域。

常见的数字编码有BCD编码、格雷码编码、二进制编码等。

BCD编码(Binary-Coded Decimal)是一种将十进制数转换为二进制数的编码方式。

格雷码编码(Gray Code)是一种将数字信号转换成相邻码之间只有一个二进制位差别的编码方式,具有自同步性。

三、实验设备与材料1. 实验箱:包括数字电路模块、逻辑门、计数器等。

2. 实验指导书:提供实验原理、步骤、注意事项等。

3. 实验数据记录表。

四、实验步骤1. BCD编码实验(1)将十进制数转换为BCD编码。

(2)使用实验箱中的数字电路模块,将BCD编码转换为二进制编码。

(3)观察并记录实验结果。

2. 格雷码编码实验(1)将二进制数转换为格雷码编码。

(2)使用实验箱中的数字电路模块,将格雷码编码转换为二进制编码。

(3)观察并记录实验结果。

3. 数字编码比较实验(1)将十进制数分别转换为BCD编码和格雷码编码。

(2)比较两种编码方式的优缺点。

(3)记录实验数据。

五、实验结果与分析1. BCD编码实验结果将十进制数123转换为BCD编码,得到0011 0010。

使用实验箱将BCD编码转换为二进制编码,得到0111 0010。

实验结果表明,BCD编码能够正确地将十进制数转换为二进制数。

2. 格雷码编码实验结果将二进制数1101转换为格雷码编码,得到0111。

使用实验箱将格雷码编码转换为二进制编码,得到1101。

实验结果表明,格雷码编码能够正确地将二进制数转换为格雷码编码,并且相邻码之间只有一个二进制位差别。

3. 数字编码比较实验结果将十进制数123分别转换为BCD编码和格雷码编码,得到BCD编码为0011 0010,格雷码编码为0111。

逻辑转换器使用仿真实训报告

逻辑转换器使用仿真实训报告

逻辑转换器仿真实训报告1. 背景逻辑转换器是一种重要的电子元件,用于将一种逻辑电平转换为另一种逻辑电平,常用于数字电路中的信号传输和处理。

在本次实训中,我们的目标是设计一个四位逻辑转换器,能够将4位二进制数转换为对应的BCD码。

2. 分析2.1 任务需求我们需要设计一个四位逻辑转换器,将输入的4位二进制数转换为对应的BCD码。

BCD码是一种以十进制数的形式表示的二进制代码,使用四位二进制数表示十进制的0~9。

2.2 思路分析我们可以采用逻辑门电路来实现逻辑转换器。

由于输入是4位二进制数,我们需要设计4个输入引脚,分别接收4位的二进制数。

对于每一个输入位,我们需要判断其对应的BCD码是多少,并输出到对应的输出引脚。

2.3 系统设计为了实现逻辑转换器,我们可以采用如下的系统设计方案:•输入:4个输入引脚,接收4位二进制数;•输出:4个输出引脚,分别输出对应的BCD码;•逻辑门电路:使用逻辑门电路来判断每一位二进制数对应的BCD码;可以通过真值表来确定每个输入位的逻辑关系。

3. 结果经过仿真,我们得到了逻辑转换器的电路连接图如下所示:通过电路连接图,我们可以看到逻辑转换器的工作原理。

为了验证逻辑转换器的正确性,我们进行了一系列测试。

我们随机生成了10组4位二进制数,并将其输入到逻辑转换器中,得到了对应的BCD码。

通过手动计算,我们验证了逻辑转换器的输出的正确性。

4. 建议经过本次实训,我们成功设计并实现了一个功能完备的四位逻辑转换器。

逻辑转换器能够将4位二进制数转换为对应的BCD码,并且在我们的测试中表现良好,输出的结果准确无误。

然而,在实际应用中,我们还需要进一步考虑逻辑转换器的性能和可靠性。

例如,我们可以加入输入检查机制,确保输入的合法性;同时,我们还可以考虑采用更复杂的逻辑门电路,以提高逻辑转换器的运算速度和适应更复杂的输入。

在未来的实训和研发中,我们可以继续探索逻辑转换器的改进和优化,以满足更多的应用需求,并提高整体系统的性能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二二进制码转换为BCD码
一、实验目的
1、掌握数码转换基本方法,加深对数码的理解。

2、用于十进制BCD码显示。

二、实验内容
将AX的内容转换为十进制BCD码。

三、实验程序框图
四、实验步骤
脱机模式:
(1)在P、态,按SCAL键,输入2CE0,按EXEC键。

(2)复位RST键,由于AX中给定数为0FFFF,查瞧BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。

联机模式:
(1)在PC机与实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S2、ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)复位“系统复位”键,由于AX中给定数为0FFFF,查瞧BCD码结果保留在4100H~4104H
单元中,故其值应为06、05、05、03、05。

注:操作过程参照“实验一二进制多位加法运算”。

五、实验程序清单
X:\DICE-8086K3微机原理与接口实验箱CDROM\CODE\86kasm\S2、ASM ;将AX拆为5个BCD码,并存入Result开始的5个单元
DATA SEGMENT AT 0 ;S2、ASM,BIN-->BCD
ORG 4000H
RESULT DB 5 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
ORG 2CE0H
START PROC NEAR
MOV AX, DATA
MOV DS, AX
MOV DX,0000H
MOV AX, 65535
MOV CX, 10000
DIV CX
MOV RESULT, AL ; 除以 10000, 得WAN位数
MOV AX,DX
MOV DX,0000H
MOV CX, 1000
DIV CX
MOV RESULT+1, AL ; 除以 1000, 得QIAN位数
MOV AX,DX
MOV DX,0000H
MOV CX, 100
DIV CX
MOV RESULT+2, AL ; 除以 100, 得BAI位数
MOV AX,DX
MOV DX,0000H
MOV CX, 10
DIV CX
MOV RESULT+3, AL ; 除以 10, 得SHI位数
MOV RESULT+4, DL ; 得GE位数
JMP $
CODE ENDS
END START。

相关文档
最新文档