文档库 最新最全的文档下载
当前位置:文档库 › 单片机实验二 数制转换类程序设计

单片机实验二 数制转换类程序设计

单片机实验二  数制转换类程序设计
单片机实验二  数制转换类程序设计

实验二数制转换类程序设计

一.实验目的

1.掌握各种常用数制的编码特点和相互转换的方法。

2.掌握逻辑运算类指令的使用方法。

3.掌握子程序的调用方法。

4.熟悉用仿真器调试应用程序的过程。

二.实验内容

8031片内20H~24H单元放有五字节的压缩BCD码,编程实现下列操作:

1.将上述BCD码转换成非压缩BCD码,放入片内30H开始的单元中;

2.将30H单元开始的非压缩BCD码变成ASCII码,放入片内40H开始的单元中;

3.将20H单元存放的压缩BCD码转换成对应的二进制数,放入片内50H开始的单元中;

4.将片内50H单元开始的5字节二进制数转换成ASCII码,放入片内60H单元开始处。

三.编程提示

1.要求分别用子程序实现各种数转换,以供调用。

2.8031片内20H~24H单元的压缩BCD码,可直接在内部数据存储器中给定。

3.观察30H~6FH数据区,以了解程序运行过程。

四.参考程序流程图

开始

主程序

编程提示:

1.将BCD码转换成非压缩BCD码:可以用除法,或用分别取高低位的方式;

2.将非压缩BCD码变成ASSII码:加30H;

3.将压缩BCD码转换成对应的二进制数:取出高位乘以10,加上低位;

4.将二进制数转换成ASCII码:将二进制数除以10,得到商和余数,分别转换为ASCII,

注意大于9的数的转换。

给内存赋值:

MOV 20H,#12H

MOV 21H,#30H

MOV 22H,#56H

MOV 23H,#78H

MOV 24H,#99H

查看结果:

1.在DATA区查看。

五、实验C语言程序

#include

#define uchar unsigned char

uchar i,count;

uchar data *point1,*point2;

uchar data table[5] _at_ 0x20;

void bcd_cbcd();

void bcd_assii();

void bcd_b();

void b_assii();

void main()

{

table[0]=0x12;

table[1]=0x30;

table[2]=0x56;

table[3]=0x78;

table[4]=0x99;

count=5;

point1=0x20;

point2=0x30;

bcd_cbcd();

count=10;

point1=0x30;

point2=0x40;

bcd_assii();

count=5;

point1=0x20;

point2=0x50;

bcd_b();

count=5;

point1=0x50;

point2=0x60;

b_assii();

while(1)

{;}

}

void bcd_cbcd() //BCD码转换成非压缩BCD码{

for(i=0;i

{

*point2=*point1/16;

point2++;

*point2=*point1%16;

point2++;

point1++;

}

}

void bcd_assii() //非压缩BCD码变成ASCII码

{

for(i=0;i

{

*point2=*point1+0x30;

point1++;

point2++;

}

}

void bcd_b() //压缩BCD码转换成对应的二进制数{

for(i=0;i

{

*point2=(*point1/16)*10+*point1%16;

point1++;

point2++;

}

}

void b_assii() //二进制数转换成ASCII码{

for(i=0;i

{

if(*point1/10<10)

*point2=*point1/10+0x30;

else

*point2=*point1/10+0x37;

point2++;

if(*point1%10<10)

*point2=*point1%10+0x30;

else

*point2=*point1/10+0x37;

point2++;

point1++;

}

}

单片机 查表程序设计实验

2.4 查表程序设计实验 2.4.1 实验目的 学习查表程序的设计方法,熟悉 51 的指令系统。 2.4.2 实验设备 PC 机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或 “TD-PITE 教学实验系统+TD-51 系统平台” 2.4.3实验内容 1. 通过查表的方法将 16 进制数转换为 ASCII码; 2 2. 通过查表的方法实现y=x ,其中x为 0~9 的十进制数,以BCD码表示,结果仍以BCD 码形式输出。 2.4.4 实验步骤 1. 采用查表的方法将 16 进制数转换为 ASCII 码 根据 ASCII码表可知,0~9 的 ASCII码为 30H~39H,A~F的 ASCII码为 41H~46H,算 法为(假定待转换的数存放在 R7 中): 当 R7≤9 时,相应的 ASCII码为:R7+30H; 当 R7>9 时,相应的 ASCII码为:R7+30H+07H。 实验程序清单:(Asm4-1.asm) ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV DPTR, #ASCTAB ;表格首地址送DPTR MOV A, R7 ;R7中为待转换的数 ANL A, #0FH ;取低4位 MOVC A, @A+DPTR ;查表 MOV R5, A ;低4位转换结果送R1 MOV A, R7 ANL A, #0F0H ;取待转换数的高4位 SWAP A ;高4位与低4位交换 MOVC A, @A+DPTR ;查表 MOV R6, A ;高4位转换结果送R2 SJMP MAIN ;设置断点观察结果 ;ASCII码表 ASCTAB: DB 30H, 31H, 32H, 33H, 34H DB 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H, 46H END 实验步骤: (1)编写实验程序,编译、链接无误后联机调试; (2)将待转换的数存放在 R7 中,如令 R7 中的值为 0x86;

A D转换及多位数码显示实验

课程:微处理器原理与应用 课时:4学时 教学环境:单片机实验室 教学方法:讲解相关内容,指导学生实验 实验四 A/D转换及多位数码显示实验 一、目的、任务和要求 1.1 实验目的 1. 掌握8051单片机控制的多位数码显示器电路的设计方法、程序结构和编程方法。 2. 掌握LED动态扫描显示器的扫描方法和程序结构,同时进一步掌握单片机扩展I/O接口、定时中断的应用和编程方法。 3. 掌握8051单片机控制的A/D转换电路的硬件设计、程序结构和编程方法。 4. 掌握ADC0809芯片的工作原理和完成A/D转换的三种等待工作方式以及三种工作方式下的硬件电路和程序结构的设计方法 1.2 实验任务 搭建一个单片机控制的A/D转换及多位数码显示电路,编写并调试通过一个能实现单路A/D转换和数码显示的程序。本实验采用七段LED数码管来显示A/D转换后的数值。 1.3实验要求 通过利用8051单片机的并行扩展功能和采用ADC0809芯片,搭建一个A/D转换电路,采用七段LED数码管来显示A/D转换后的数值。设计并调试通过相应的程序。 二、实验设备和器件 2.1实验设备 (1)微型计算机(PC机)(装配相关软件),(2)单片机实验箱或开发板。 2.2电路元器件 本实验采用Protues仿真软件搭建一个简单的单片机系统电路,进行电路仿真分析,不需要实际的元器件。若实验采用实验箱或万能板(或面包板)搭建电路,则需要如下元器件: ADC0809,74LS02,10kΩ电位器、七段LED数码管,74HC595、三极管9013、LED限流电阻、软导线等。学生可自己在课后搭建电路进行实验,并与仿真实验比较。 三、实验内容及步骤3.1参考电路与程序代码ADC0809芯片的A/D转换参考电路1.单片机控制芯片,再将电位器80C51单片机最小系统的基础上,通过并行总线扩展ADC0809该电路图是在数段LEDADC0809的输出模拟电压信号接的模拟信号输入端,同时采用扩展的方法接入一个多位7 6.1所示。码显示器。如图 +5V

最新单片机原理实验教案参考程序

单片机原理实验教案 参考程序

广东松山职业技术学院《MCS-51单片机原理》实验指导书 宁玉珊黄晓林 使用Proteus辅助设计与仿真

实训项目1 Proteus辅助设计与仿真的使用 一、实训目的 学习并熟练掌握PROTEUS辅助设计与仿真软件的使用。通过使用Proteus的ISIS组件绘制AT89C51功能接口原理图,并对原理图编写程序和调试程序,观察在仿真条件下的实现功能的效果。 二、实训内容 在PROTEUS仿真环境下实现一个发光二极管(LED)闪烁。要求LED亮0.5s灭1s,并绘制原理图和编写实现程序,同时用虚拟的示波器观察硬件和软件实现的效果。 三、实训器材 安装有Proteus7软件的计算机 1 台。 四、实训步骤 1)在硬盘建立文件夹用来保存新建项目的所有文件。如在D盘建立PROJECT文件夹。 2)选择‘开始→程序→Proteus7 professional→ISIS professional(或者双击桌面图标ISIS)’,进入Proteus仿真环境,如图P1_1和P1_2所示。 图P1-1

图P1-2 3)选择菜单【File/New Design】创建一个新的设计项目,如图P1_3所示。 图P1-3 4)此时系统会弹出模板选择窗口,选择‘DEFAULT’点击【OK】即可,如图P1_4所示。

图P1_4 5)点击界面左侧工具栏中的图标,接着点击元件池上方的按钮,将要用到的元器件从系统库调到当前设计文件库中。在弹出的Pick Devices对话框左上角的‘Keywords’文本框中键盘输入元件名(或元件的其它关键词)搜索到需要的元器件。双击‘Results’栏下的目标元件,该元件即调出到当前设计文件库的元件列表中,如图P1_5所示。本实训中所要用到的元件如表PS1_1所示。 图P1_5 元件名称搜索关键词元件序 数值备注 号 电阻器Resistor R1 10k 电阻器Resistor R2 1k 电解电容器MINELECT1U63V C1 4.7μ 陶瓷电容器CERAMIC22P C2、C3 22p 晶振CRYSTAL X1 12MHz 单片机AT89C51 U1

单片机原理与应用及C51程序设计实验报告

《单片机原理与应用及C51程序设计》 实验报告

一.软件仿真 1.实验要求 基本要求:用串口输出“hello word”语句。增加的要求:延时或定时输出语句,采用查询/中断的方式控制启动/停止。 2.源程序: (1).采用延时函数,延迟输出语句,p0_0控制启动/停止。 #include #include sbit p0_0=P0^0; void Delay(unsigned int Delaytime); void main(void) { SCON = 0x50; //串口方式1,允许接收 TMOD = 0x20; //定时器1 定时方式2 TCON = 0x40; //设定时器1 开始计数 TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8; TI = 1; TR1 = 1; //启动定时器 while(1) { if(p0_0==0) {Delay(10000); printf ("Hello World!\n"); //显示Hello World } } } void Delay(unsigned int Delaytime) {unsigned int j=0; for(;Delaytime>0;Delaytime--) for(j=0;j<100;j++); } (2).采用定时器定时,延迟输出语句。P0_0控制启动/停止。 #include

#include sbit p0_0=P0^0; #define uchar unsigned char #define uint unsigned int uchar count; void main() { SCON = 0x50; //串口方式1,允许接收 TMOD = 0x21; TCON = 0x40; //设定时器1 开始计数 TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TI = 1; TR1 = 1; //启动定时器 while(1) { if(p0_0==0) { TR0=1; if(count==200) { count=0; printf("hello world!\n"); } } } } void timer0()interrupt 1 { TH0=0X3C; TL0=0XB0; count++; } 3.实验心得: 第一次实验不需要硬件实现,只需要用软件仿真,串口输出“hello word”语句就ok,所以此次实验比较简单,不需要费太多时间就能把实验完成。 二.键控流水灯 1.实验要求: 8051单片机的P1口的P1.0—P1.7分别接有LED(D1—D8),当某一端口输出,为“0”

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

一、实验目的 (1)进一步熟练掌握8086汇编语言编译调试工具和环境的操作; (2)掌握完整8086汇编的程序设计编写方法; (3)掌握简单的数值码制转换方法; (4)掌握键盘输出的DOS功能调用方法。 二、实验要求: 将AX中的一个二进制数(对应的十进制数范围是0-65535),转换成压缩性BCD 码表示的十进制,并从屏幕输出转换结果。要求用减法实现,并比较与除法方法进行运行速度比较。 三、实验及报告要求: 3.1、简要说明算法,并画出正确的程序流程图; 3.2、给出完整正确的源程序代码,要求给每一句伪指令或指令加上注释; 3.3、分别在DOS和Windows下编译、连接源程序生成可执行文件并调试,比较两个环境下生成的机器码的长度、寄存器内容、计算结果的异同。 3.4、如何观察转换过程中标志寄存器中各标志位的结果?如何观察转换结果的变化?试改变被转换数值,对结果与编制为的变化加以说明和解释。 3.5、写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。 3.6、实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法和微机原理学习方法作出总结。 四、程序流程图 减法。即五位数先循环减10000,直到不够减了,做减法的次数就是万分位的结果;将不够减之前一次的余数恢复,再循环减去1000,直到不够减了,做减法的次数就是千分位的结果;以此类推,最后恢复的正余数就是个位的结果. 除法。即五位数先除以10000,得到的商存放万位数的变量上;再将余数除以1000,得到的商存放千位数的变量上;之后将余数除以100,得到的商存放百分位的变量上;以此类推,最后的余数存放在个位的变量上。

重庆大学 单片机实验

实验一系统认识及基本程序设计实验 四、实验内容 1. 将BCD 码整数0~255 存入片内RAM 的20H、21H、22H 中,然后转换为二进制整数00H~FFH,保存到寄存器R4 中。修改20H、21H、22H 单元的内容,如:00H,05H,08H;观察实验结果。 参考程序: ;============================================================== ; 文件名称: Asm2-1.asm ; 功能描述: BCD整数转换为二进制整数(8位, 范围从00H--FFH) ;============================================================== ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #20H ;BCD存放高位地址 MOV R7, #03H ;BCD码0--255, 最多3位 CLR A MOV R4, A LP1: MOV A, R4 MOV B, #0AH MUL AB ;乘10 ADD A, @R0 ;加下一位的值 INC R0 ;指向下一单元 MOV R4, A ;结果存入R4 DJNZ R7, LP1 ;转换未结束则继续 SJMP MAIN ;设置断点, 观察实验结果R4中的内容 END 2. 将16 位二进制整数存入R3R4 寄存器中,转换为十进制整数,以组合BCD 形式存储在RAM 的20H、21H、22H 单元中。 参考程序: ;============================================================= ; 文件名称: Asm2-2.asm ; 功能描述: 二进制整数(16位)转换为十进制整数(组合BCD) ;============================================================= ; 0--FFFFH(R3R4)==>0--65535 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #22H ;转换结果低位地址 MOV A, R0 PUSH ACC ;ACC表示累加器A的直接地址 MOV R7, #03H

单片机-实验二-分支程序设计实验

实验二实验报告 ·

将00-99的十进制数据转换成二进制进行开关量的输入,L0灯亮 将100的十进制转换为01100010的二进制开关量进行输入,L1灯亮

将101-127的十进制转换为二进制进行开关量的输入,L2灯亮 完整的接线图

实验操作 1、正确连接实验板子和电脑,将点源接入,数据线连接到电脑的USB接口,在电脑端运行 软件,取消勾选模拟器,按照实验装置的名称正确的选择响应的系统。 2、在软件内部按照输入分支程序结构。 3、打开点源开关。 4、调整输入的各个断口的开关量,着重关注在二进制数01100010附近的变化. 5、整理实验器材。 思考题1 写出分支程序设计的要点 分支结构也成为选择结构。在程序中每个分支均为一个程序段。为分支需要,程序设计时不要忘记给程序段的起始地址赋予一个地址标号,以供选择分支使用。 这次实验使用的是一个多分支程序结构,可以通过一系列的JC\JNC\JB\JNB的判断,进行逐级分支。并且可以使用CJNE进行实现。 80C51中没有专门的多分支转移指令,可以使用的变址转移指令“JMP @A+DPTR”,但是这样的指令需要数据表格配合。 思考题2 8051单片机有几个并行口,写出各并行口的特点 8051单片机有4个并行I/O口,分别为P0\P1\P2\P3,以实现数据的并行输入与输出。 这4个并行口均是8为双向口线,各占8个引脚,在P3口线上有着引脚复用,均有第二功能信号,这些第二功能信号都是重要的控制信号,在实际使用中总是先按需要优先选用第二功能,剩下的不用的再当作口线使用。 并行可以有效的提高单片机的工作效率。 思考题3 实验中遇到的苦难 在这个实验中和实验一显著不同的是我们需要重新认识硬件与软件的配合,一些数据线的链接,点源的通断都是我们学习的要点,我们也第一次接触到了输入口和输出口相互之间的区别。 这个实验我们一定要将十进制的思维转换过来转换为二进制的思维,在机器语言中只有开关量的通断,而这个题目也是很好的应用了开关量的通断完成了这个实验。 学会了分支判断方式的编程

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

二进制码转换为BCD码 一、实验目的 1、掌握数码转换基本方法,加深对数码的理解。 2、掌握顺序结构程序设计的基本方法。 二、实验内容 将AX的内容转换为十进制BCD码。 AX中给定数为0FFFF,将其转化为BCD码,结果保留在名字为result开始的数据区中,此数据区段地址为0、且偏移地址从4100H开始。值分别为06、05、05、03、05。 三、实验程序框图

四、源程序 DATA SEGMENT AT 0 ORG 4100H RESULT DB 5 (0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MOV AX,DATA

MOV DS,AX MOV AX,0FFFFH ;0FFFFH送至AX MOV BX,10000 ;10000送至BX DIV BX ;AX/BX,商存于AL,余数存于DX MOV RESULT,AL ;将万位数存入RESULT中 MOV AX,DX ;余数存入AX中 MOV DX,0 ;DX清零 MOV BX,1000 DIV BX MOV RESULT+1,AL ;将千位数存入RESULT+1中 MOV AX,DX MOV DX,0 MOV BX,100 DIV BX MOV RESULT+2,AL ;将百位数存入RESULT+2中 MOV AX,DX MOV DX,0 MOV BX,10 DIV BX MOV RESULT+3,AL ;将十位数存入RESULT+3中 MOV RESULT+4,DL ;将个位数存入RESULT+4中 MOV AH,4CH INT 21H CODE ENDS END START

单片机U盘读写参考程序

/*******************************************************/ #include"reg52.h" #include"stdio.h" #include "string.h" #include "intrins.h" #include"CH375INC.H" /*******************************************************/ #define uchar unsigned char #define uint unsigned int /*******************************************************/ sbit CH375_INT=P3^3; sbit CH375_A0=P3^4; sbit CH375_RD=P3^5; sbit CH375_WR=P3^6; sbit CH375_CS=P3^7; /*******************************************************/ uchar xdata my_buf[512]; /*******************************************************/ void uart_init() { TMOD=0X20; TH1=TL1=0XFD; TR1=1; REN=1; SM0=0;SM1=1; EA=1; ES=1; } /*******************************************************/ void uart_send_pc(uchar *s) //串口监视//void uart_send_pc(uchar a[20]) { //{ uchar len=strlen(s); // uchar i; uchar i; // for(i=0;i<20;i++) for(i=0;i

51单片机实验程序

3 3 3 用查表方式编写y=x1 +x2 +x3 。(x 为0~9 的整数) #include void main() { int code a[10]={0,1,8,27,64,125,216,343,512,729}; //将0~9 对应的每位数字的三次方的值存入code中,code为程序存储器,当所存的值在0~255 或-128~+127 之间的话就用char ,而现在的值明显超过这个范围,用int 较合适。int 的范围是0~65535 或-32768~32767 。 int y,x1,x2,x3; //此处定义根据习惯,也可写成char x1,x2,x3 但是变量y 一定要用int 来定义。 x1=2; x2=4; x3=9; //x1,x2,x3 三个的值是自定的,只要是0~9 当中的数值皆可,也可重复。 y=a[x1]+a[x2]+a[x3]; while(1); //单片机的程序不能停,这步就相当于无限循环的指令,循环的内容为空白。 } //结果的查询在Keilvision 软件内部,在仿真界面点击右下角(一般初始位置是右下角)的watch 的框架内双击“double-click or F2 to add”文字输入y 后按回车,右侧会显示其16 进制数值如0x34,鼠标右键该十六进制,选择第一行的decimal,可查看对应的10 进制数。 1、有10 个8 位二进制数据,要求对这些数据进行奇偶校验,凡是满足偶校验的 数据(1 的个数为偶数)都要存到内RAM50H 开始的数据区中。试编写有关程序。 #include void main() { int a[10]={0,1,5,20,24,54,64,88,101,105}; // 将所要处理的值存入RAM 中,这些可以根据个人随意设定,但建议不要超过0~255 的范围。 char i; // 定义一个变量 char *q=0x50; // 定义一个指针*q 指向内部0x50 这个地址。 for(i=9;i>=0;i--) //9~0 循环,共十次,也可以用for(i=0;i<10;i++) { ACC=a[i]; //将a[i] 的值赋给累加器ACC if (P==0) //PSW0 位上的奇偶校验位,如果累加器ACC 内数值1 的个数为偶数那么P 为0,若为奇数,P 为1。这里的P 是大写的。 { *q=a[i]; q++; // 每赋一个值,指针挪一个位置指向下一个。 } } while(1); //同实验一,程序不能停。 }

51单片机电子时钟课程设计实验报告

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号:2012197213 2012118029 班级:自动化1211 指导老师:阮海容

目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位(例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。 7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。 11)完成课程设计报告。 基本要求 1)实现最基本要求的1~10部分。 2)键盘输入可以控制电子时钟的走时/调试。 3)设计键盘输入电路和程序并调试。 4)掌握键盘和显示配合使用的方法和技巧。 提高发挥部分

实验一数码转换编程及程序调试

实验一数码转换编程及程序调试 一、实验目的 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。 熟悉程序调试的方法。 二、实验设备 Pc 微机一台,TD-PITE 实验装置一套。 三、实验内容及步骤 计算机输入设备输入的信息一般是由ASSII 码或BCD 码表示的数据或字符,CPU 一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII 码、BCD 码或七段显示码等。因此,在应用软件中,各类数制的转换是必不可少的。b5E2RGbCAP 计算机与外设间的数制转换关系如图所示2-1所示,数制对应关系如表2-1所示。 BCD 码 二进制 二进制

图2-1 数制转换关系表1 数制对应关系表 1. 将ASCII码表示的十进制数转换为二进制数十进制表示为: Di代表十进制数0,1,2, (9) 上式转换为:

由此可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。p1EanqFDPw 参考流程: 实验程序: PUBLIC SADD SSTACK SEGMENT STACK DW 64 DUP(?> SSTACK ENDS DATA SEGMENT SADD DB 30H,30H,32H,35H,36H 。十进制数:00256 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA MOV DS, AX MOV AX, OFFSET SADD MOV SI, AX MOV BX, 000AH MOV CX, 0004H MOV AH, 00H MOV AL, [SI] SUB AL, 30H A1: IMUL BX MOV DX, [SI+01] AND DX, 00FFH ADC AX, DX SUB AL, 30H INC SI LOOP A1 A2: JMP A2 CODE E NDS E ND START 实验步骤: <1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;

单片机实验参考程序

实验一键盘输入实验 参考程序: ;4*4矩阵键盘读取程序,利用P0口,列线左起P0.0-P0.3 ;行线上起P0.4-P0.7,行线默认接高电平, ;P3.7作为键盘被读取的提示灯 ; 0 1 2 3 ; 4 5 6 7 ; 8 9 A B ; C D E F ;不考虑有两个或以上按键同时按下的情况, ;每次扫描到一个有按下则结束本次扫描 SETB P3.7 ;确认关闭键盘响应指示灯 MAIN: MOV R0,#0EFH ;用于给键盘行列线确定的电平 MOV R1,#0H ;循环次数,R1=0对应第一行,=1为第二行,以此类推SMAIN: MOV P0,R0 ;改变行线的状态,列线全处于高电平 NOP NOP MOV A,P0 JB ACC.0,L1 ;判断某行的第一列是否按下,按下则P0.0为低电平 MOV R2,#0H ; 将某行的列码保存至R2,显示程序会根据此值和R1的值计算具体为何按键按下 ACALL DISP SJMP MAIN ; 每次扫描到一个有按下则结束本次所有扫描

L1: JB ACC.1,L2 ;判断某行的第二列是否按下,按下则P0.1为低电平MOV R2,#01H ACALL DISP SJMP MAIN L2: JB ACC.2,L3 ;判断某行的第三列是否按下,按下则P0.2为低电平MOV R2,#02H ACALL DISP SJMP MAIN L3: JB ACC.3,SKIP ;判断某行的第四列是否按下,按下则P0.3为低电平MOV R2,#03H ACALL DISP SJMP MAIN ; SKIP: INC R1 ;R1加1,共计4行, MOV A,R0 RL A ;左移R0内的值,以并扫描下一行 MOV R0,A CJNE R1,#04H,SMAIN ;若四行扫描完毕,则跳转至程序最初,相关参数为初始值NO: MOV P2,#0FFH ;程序能执行到此说明四行扫描完毕并且一个按键都没按下,关闭数码管和指示灯 SETB P3.7 SJMP MAIN DISP: CLR P3.7 ;点亮键盘响应指示灯 MOV A,R1 RL A RL A ;R1对应行,具体的按键计算为R1*2+R2 ADD A,R2 ADD A,#3H ;下列指令与表格见有3字节的距离 MOVC A,@A+PC MOV P2,A ;十六进制的高位用数码管L1显示 RET ;共阳数码管0-F的显示码 DIS: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH DELAY: m ov r7,#255;延时 del1: mov r6,#255; del2: djnz r6,del2 djnz r7,del1 ret END

实验二 数码转换编程及程序调试

实验二 数码转换编程及程序调试 一、实验目的 1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。 2. 熟悉键盘使用方法。 3. 熟悉调试程序的方法 二、实验设备 TDN86/51或TDN86/88教学实验系统一台 三、实验内容及步骤 计算机输入设备输入的信息一般是由ASCII 码或BCD 码表示的数据或字符,CPU 一般均用二进制进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII 码、BCD 码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。 计算机与外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。 1. 将ASCII 码表示的十进制数转换为二进制数 十进制表示为: ∑=--?=?++?+?n i i i n n n n D D D D 00 01110101010 ┅┅┅┅┅┅┅┅┅(1) Di 代表十进制数1,2,3,┅9,0; 上式转换为: 011010)10)10((((10D D D D D n n i n i i +?++?+?=?-=∑ ┅┅┅┅┅┅┅┅┅(2) 由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn 开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。 实验步骤 (1) 输入程序并检查无误,经汇编、连接后装入系统。 (2) 在3500-3504H 单元存入十进制数12的ASCII 码,即E3500↙,并输入30 30 30 31 32。 (3) G=0000:2000↙,运行以上程序,并用CTRL+C 来中断程序,返回监控状态。 (4) 用D3510↙查看结果,应为:3510 0C 00。 (5) 反复试几组数,考察程序的正确性。 图2-1 数码转换关系 二进制

实验一_单片机数据区传送排序程序设计复习课程

实验一_单片机数据区传送排序程序设计

实验一单片机数据区传送/排序程序设计 一、单片机数据区传送/排序程序设计 一、实验目的 1.进一步掌握汇编语言程序设计和调试方法。 2.了解单片机RAM中的数据操作 二、实验说明 要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。 三、实验仪器 计算机 伟福软件( lab2000P ) 四、实验内容 在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。 查看RAM 区3000~30FFH和4000~40FFH内容,也可自己重新赋值。 运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。 记录下运行结果,检查3000~30FFH中内容是否和4000~40FFH内容完全一致。 五、思考题 1、改变源地址,例如00FFH; 2、改变目的地址,例如2000H; 3、改变传输的个数,小于256个和大于256个的情况。

4、把程序改为对某一数据存储区RAM赋都相同一个数值。 六、源程序及其修改原理 org 0000H Block equ 2000h mov dptr, #Block ; 起始地址 mov r0,#12h mov a,#20h ;修改2000h开始的地址所存放的内容为20h Loop: mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思考题3) Loop1: movx @dptr,a inc dptr ; 指向下一个地址 djnz r1,Loop1 djnz r0, Loop ; 双循环实现r0,r1计数相乘 (以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4) mov r0, #20h ;改变源地址为2000h(思考题1) mov r1, #00h mov r2, #50h;改变目的地址为5000h(思考题2) mov r3, #00h mov r7, #0 Loop: mov dph, r0 mov dpl, r1 movx a, @dptr mov dph, r2 mov dpl, r3 movx @dptr, a

二进制码转换为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-->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

单片机原理实验指导书(2012.10)

《单片机原理》实验指导书 计算机科学与技术系2012年8月

目录 第一部分单片机仿真实验 (1) 实验一:流水灯实验 (1) 实验二:中断实验 (4) 实验三:定时器中断实验 (6) 实验四:串行口实验 (9) 实验五:矩阵式键盘输入识别 (13) 实验六:LCD循环显示设计 (19) 第二部分单片机硬件实验............................错误!未定义书签。第一章试验箱系统概述 ...................................错误!未定义书签。 一、系统地址分配........................................... 错误!未定义书签。 二、系统接口定义........................................... 错误!未定义书签。 三、通用电路简介........................................... 错误!未定义书签。第二章实验指导...............................................错误!未定义书签。实验七P1口亮灯和P1口加法器实验........... 错误!未定义书签。实验八简单I/O口扩展(选作).................. 错误!未定义书签。实验九8255控制交通灯................................ 错误!未定义书签。实验十128*64LCD液晶显示 .......................... 错误!未定义书签。

第一部分单片机仿真实验 实验一:流水灯实验 一、实验目的: 通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器。 二、实验原理图 实验参考电路图如下: 三、参考实验程序 //流水灯实验 #include //包含单片机寄存器的头文件 sfr x=0xb0; //P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机 //的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的

基于80C51单片机系统实验板的制作与程序设计报告

《单片机原理与接口技术》 课程设计报告 题目: 基于80C51单片机系统实验板的制作与程序设计专业:电子与信息工程技术 班级: 姓名: 指导教师: 2011 年 4 月

目录 第1节引言 (3) 第2节系统主要硬件电路设计 (5) 第3节系统软件设计 (10) 第4节结束语 (11) 参考文献 附录

基于80C51单片机系统实验板的制作与程序设计 第1节引言 单片微型计算机简称单片机,又称微控制器(MCU),它的出现是计算机发展史上的一个重要的里程碑,它以体积小、功能全、性价比高等诸多优点独具特色,在工业控制、尖端武器、通信设备、信息处理、家用电器等嵌入式应用领域中独占鳌头。本次课设采用的STC89C51单片机是51系列单片机的一种代表,目前51系列单片机是国内目前应用最广泛的一种单片机之一。单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计的基础课。 1.1本设计任务和主要内容 本设计以单片机STC89C51为控制核心,由八路LED模块、八路按钮模块、四位一体共阳数显模块、语音模块等部分组成。可实现花样流水灯、简易电子琴、外部中断控制、时间显示等功能。要求在将硬件电路准确无误地安装后进行软件调试,至少完成以下三个程序设计及调试任务 1 .1.1花样流水灯:程序循环输出到单片机P1口,控制LED灯从LED1向LED8依次亮,到全部亮然后LED 灯从LED1向LED8依次前进单个亮,类似跑马情形。 1.1.2.简易电子琴:向蜂鸣器发送一定频率的方波可以使蜂鸣器发出相应的音调,该实验使蜂鸣器发出类似"多来咪发梭拉西"的音调。 1.1.3数码管动态扫描数显:单片机P1端口用于数码管显示数值,P2端口部分用于选择4位数码管中的一位,从而实现一下现象:4位数码管从第一位到第四位由0到F依次循环显示 1.2基于80C51单片机系统实验板概述 本次课设所使用的单片机最小系统板包括以下器件:电源端子(DC +5V),可以USB供电,也可独立电源供电。通用异步串口,采用MAX232做电平转换。STC89C51单片机。各种颜色的LED发光二极管共9个,其中8个接于P1口做LED显示,还有一个做电源灯显示。四位一体共阳数码管可以实现时钟电路及动态扫描显示。还有其他电阻电容若干,系统板一个,大按键开关两个,用于中断控制和通信开关。利

数码转换 实验报告 微机原理

实验九数码转换 一、实验目的 1、掌握计算机常用数据编码之间的相互转换方法。 2、进一步熟悉DEBUG软件的使用方法。 二、实验内容 1. ACSII码转换为非压缩型BCD码 编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。将其转换成非压缩型(非组合型) BCD码后,再存入DATA2开始的单元中。若输入的不是十进制数,则相应单元中存放FFH。调试程序,用D命令检查执行结果。 2. BCD码转换为二进制码 编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码DATA1,转换成二进制数存入DATA2字单元中。调试程序,用D命令检查执行结果。 3. 十六进制数转换为ASCII码 编写并调试正确的汇编语言源程序,使之将内存DATA1字单元中存放的4位十六进制数,转换为ASCⅡ码后分别存入DATA2为起始地址的4个单元中,低位数存在低地址的字节中,并在屏幕上显示出来。 三、实验预习 1. 复习材料中有关计算机数据编码部分的内容。 2. 按要求编写程序。 四、实验步骤 1. 编辑源文件,经汇编连接产生EXE文件。 2. 用DEBUG调试、检查、修改程序。 五、实验内容 1. ACSII码转换为非压缩型BCD码 STACK SEGMENT PARA STACK 'STACK' DB 256 DUP(?) ; 为堆栈段留出256个字节单位 STACK ENDS DATA SEGMENT PARA 'DATA' ;定义数据段 DATA1 DB 32 ; 缓冲区最大长度 DB ? DB 32 DUP(?) DATA2 DB 32 DUP(?) DATA ENDS CODE SEGMENT ; 定义代码段

相关文档
相关文档 最新文档