微机综合实验

合集下载

微机实验报告

微机实验报告

微机实验报告第⼀次实验1.写出完成下列功能的指令序列(1)传送20H到AL寄存器MOV AL , 20H(2)将(AL)*2 MOV AL , 02H MUL AL (3)传送25H到BL寄存器MOV BL , 25H (4)(AL)*BL MUL BL问最后结果(AX)=?AX=0940H2.分别写出完成下列指令要求的指令(1)将BX的低4位清零AND BX , F0H(2)将AX的⾼4位置1 OR AX , F0H(3)将DX的低4位取反;XOR DX , 0FH(4)将CX的中间⼋位清零AND CX , 0FF0H(5)将AX中与BX中的对应位不相同的位均置1 XOR AX , BX3.上机运⾏下⾯指令序列,分析运⾏后(AX)=?mov cl , 8sar ax ,cldec axmov cx ,8mul cxax=210.9h4. 4.设DS=当前段地址,BX=0300H,SI=0002H,请⽤DEBUG的命令将存储器偏移地址300-304H连续单元装⼊0AH0BH0CH0DH0EH。

在DEBUG状态下送⼊下⾯的程序,并⽤单步执⾏的⽅法,分析每条指令原源地址的形成过程?当数据传送完毕时,AX中的内容是什么?8.编程:求两个数的平均值。

这两个数分别放在X单元和Y单元中,⽽平均值放在Z单元中。

即Z=(X+Y)/2 data segmentx db 2y db 6z db ?data endscode segmentassume cs:code, ds;datastart:mov ax, datamov ds,axmov al, xmov ah,0add al,ymov bl,2div blint 21hcode endsend start9.输⼊下⾯源程序,并对程序进⾏会变,连接,调式并说明程序的功能。

data segment number dw 0168hdata endscode segmentassume cs;code, ds: dataorg 0100hstart:mov ax, datamov ds, axmov dx,0mov bx, 0001hmov di, 8000hmov si, 0mov ax, numbermov cx, 16next;test ax, bxjz continueor dx, diinc sicontinue:ror di, 1mov ah,4chint 21hcode endsend start1.编写程序: 求1+2+3+…..+100的和data segment number db 01hdata endscode segmentassume cs:code , ds:datastart:mov ax , datamov ds , axmov ax , datamov bx , numbermov ax , 0mov cx , 64hnext:add ax ,bxinc bxloop nextmov ah , 4chint 21hcode endsend start2.在内存中tab为⾸的地⽅存有1-9的平⽅值,从键盘输⼊⼀个数(1-9),将该数存⼊X单元,⽴⽅值存⼊XXX单元中data segmenttab db 0,1,4,9,16,25,36,49,64,81x db 10dup(?)xxx db 10dup(?)data endscode segmentassume cs:code ,ds: datastart:mov ax ,datamov ds , ax mov ax , datamov cx ,09hnext:mov ah , 1int 21hand ah ,0fhmov bx ,ahmov si , offset tabmov sp , offset xmov di , offset xxxmov dx , byte ptr[bx+si]mov al, blmul dxmov [bx+di] ,axmov [sp+bx] , bxmov ah , 4chint 21hcode endsend start第⼆次实验顺序程序设计从键盘输⼊两个1位⼗进制数,求这两个数的和,并将结果显⽰在屏幕上data segment infor1 db 'please input the first data (<10):$'infor2 db 0ah,0dh,'please input the second data (<10):$'infor3 db 0ah,0dh,'the result is:$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset infor1mov ah,9int 21hmov ah,1int 21hand al,0fhmov ah,00000000000000000000mov bl,almov dx,offset infor2int 21hmov ah,1int 21hand ax,000fhadd al,blaaaor ax,3030hpush axmov dx,offset infor3 mov ah,9int 21hpop axmov dl,ahpush axmov ah,2int 21hpop axmov dl,almov ah,2int 21hmov ah,4chint 21hcode endsend startresult db 0ah,0dh,'cube result is :$' data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset numbermov ah,9int 21hmov ah,1int 21hand ax,000fhmov bx,axmul blmul blmov cl,64hdiv clor al,30hpush axmov dx,offset resultmov ah,9int 21hpop axmov dl,alpush axmov ah,2int 21hpop axmov cl,0ahmov al,ahmov ah,0div clor ax,3030hpush axmov ah,2int 21hpop axmov dl,ahmov ah,2int 21hmov ah,4chint 21hcode endsend start分⽀程序设计1.某程序可从键盘接收命令(0-5),分别专项6个⼦程序,⼦程序⼊⼝地址分别为p0-p5,编制程序,⽤跳转表实现分⽀结构程序设计,记录实验结果data segmentmessage db 'please input key (0-5):$'crmessage db 0ah,0dh,'$'errormessage db 'you hit error key !',0ah,0dhdb 'please try again(0-5):$'message0 db 'you hit the key 0',0ah,0dh,'$'message1 db 'you hit the key 1',0ah,0dh,'$'message2 db 'you hit the key 2',0ah,0dh,'$'message3 db 'you hit the key 3',0ah,0dh,'$'message4 db 'you hit the key 4',0ah,0dh,'$'message5 db 'you hit the key 5',0ah,0dh,'$'code segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov ah,9lea dx,messageint 21htryagain:mov ah,1int 21hmov bl,almov ah,9mov dx,offset crmessage int 21hcmp bl,'0'jz key0cmp bl,'1'jz key1cmp bl,'2'jz key2cmp bl,'3'jz key3cmp bl,'4'jz key4cmp bl,'5'jz key5error:mov ah,9mov dx,offset errormessage int 21hjmp tryagainkey0:lea dx,message0mov ah,9int 21hjmp exitkey1:lea dx,message1 mov ah,9int 21hjmp exitkey2:lea dx,message2 mov ah,9int 21hjmp exitkey3:lea dx,message3 mov ah,9int 21hjmp exitkey4:lea dx,message4 mov ah,9int 21hjmp exitkey5:lea dx,message5 mov ah,9int 21hexit:mov ah,4chint 21hcode endsend start第三次实验循环程序设计1.从⾃然数1开始累加,直到累加和⼤于1000为⽌,统计被累加的⾃然数的个数,并把统计的个数送⼊N单元,把累加和送⼊SUM单元。

南理工微机实验报告

南理工微机实验报告

南理工微机实验报告篇一:微机实验报告实验1 基本操作实验一、实验目的(1)掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

(2)掌握使用运算指令类编程及调试方法。

(3)掌握运算类指令对各状态标志位的影响及其测试方法。

(4)学习使用软件监视变量的方法。

二、实验设备PC机一台,TD- PITC实验装置一套三、实验内容及步骤通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容实验内容一——BCD码转换为二进制实验内容将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。

实验步骤:1)运行Wmd86软件,进入Wmd86集成开发环境。

2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。

语言选择后,下次再启动软件,语言环境保持这次的修改不变。

在这里我们选择汇编语言。

3)语言选择后,点击新建来新建一个文档。

默认文件名为Wmd861.4)编写实验程序。

并保存,此时系统会提示输入新的文件名,输完后点击保存。

实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUPSSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV SI 3500HMOV DI 3510HA1:MOVE AL,[SI]ADD AL,ALMOV BL,ALADD AL,ALADD AL,ALADD AL,BLINC SIADD AL,[SI]MOV [DI],ALINC SIINC DILOOP A1A2:JMP A2CODE ENDSEND START5)点击编译文件,若程序无误,再点击进行连接。

微机原理及应用实验(题目)

微机原理及应用实验(题目)

微机原理及应用实验实验一开发环境的使用一、实验目的掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。

二、实验内容在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的30H~7FH 单元清零。

三、实验设备PC机一台。

四、实验步骤用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。

五、实验思考1.如果需把30H-7FH 的内容改为55H,如何修改程序?2.如何把128B的用户RAM全部清零?六、程序清单文件名称:CLEAR.ASMORG 0000HCLEAR: MOV R0,#30H ;30H 送R0寄存器MOV R6,#50H ;50H 送R6寄存器(用作计数器)CLR1: MOV A,#00H ;00 送累加器AMOV @R0,A ;00 送到30H-7FH 单元INC R0 ;R0 加1DJNZ R6,CLR1 ;不到50H个字节,继续WAIT: LJMP WAITEND实验二数据传送一、实验目的掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。

二、实验内容1.编制一段程序,要求程序中包含7中不同寻址方式。

2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。

3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。

4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。

三、实验设备PC机一台。

四、实验步骤逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。

五、实验思考1.如何把片外RAM中1000H~100FH单元中的数传送到片外RAM中2000H~200FH单元中?2.如何把ROM中0200H~0207H单元的数传送至片外RAM0000H~0007H单元中?实验三数码转换一、实验目的掌握采用软件方法进行不同形式数据之间的转换,如十进制数与二进制数的转换、十六进制数与BCD码的转换、BCD数与ASCII码之间的转换、非压缩BCD码与压缩BCD码之间的转换。

微机原理实验三实验报告

微机原理实验三实验报告

实验3. 循环程序设计一、实验目的⒈掌握移位指令的使用方法。

⒉学会循环结构程序的编程方法。

⒊利用DEBUG调试程序查看循环程序循环过程中CS和IP的变化情况。

二、实验要求⒈编写程序并上机调试,记录运行结果。

⒉用DEBUG调试程序调试所编程序,查看并记录每条指令内存单元地址及执行结果(包括F标志寄存各位值。

)⒊注意观察并记录每条指令执行后CS和IP寄存器值变化情况,以加深对循环程序的概念的理解。

三、实验内容⒉编写统计15个学生数学学习成绩程序。

要求:分别统计出低于60分,60-69分,70-79分,80-89分,90-100分的人数,并存放到S5,S6,S7,S8,S9,S10对应内存单元中。

源程序代码;DATA SEGMENTDATA1 DB 55,60,65,88,67,70,75,80,77,85,90,66,95,53,100DATA2 DB 5 DUP(?)DATA ENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,15LEA SI,DATA1LEA DI,DATA2AGAIN:MOV AL,[SI]CMP AL,90JB NEXT1INC BYTE PTR[DI]JMP NEXT0NEXT1:CMP AL,80JB NEXT2INC BYTE PTR[DI+1]JMP NEXT0NEXT2:CMP AL,70JB NEXT3INC BYTE PTR[DI+2]JMP NEXT0NEXT3:CMP AL,60JB NEXT4INC BYTE PTR[DI+3]JMP NEXT0NEXT4:INC BYTE PTR[DI+4]NEXT0:INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START程序运行结果截图:四、实验总结本次实验掌握移位指令的使用方法。

微机原理的实验报告

微机原理的实验报告

一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。

二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。

(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。

(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。

2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。

(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。

(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。

3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。

(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。

(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。

4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。

(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。

(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。

三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。

2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。

3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。

4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。

四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。

微机原理综合性实验报告-AD转换器ADC0809数字温度计设计

微机原理综合性实验报告-AD转换器ADC0809数字温度计设计

微机原理与汇编语言综合性实验报告实验项目名称:A/D转换器 ADC0809数字温度计设计实验目的:掌握A/D转换原理,掌握0809A/D转换芯片的硬件电路和软件编程。

实验要求:包括开发环境要求,技术文档要求两部分。

开发环境要求:软件环境:windows98/windowsXP/windows2000,QTH-8086B环境硬件环境:计算机(Pen4CPU, 256MRAM,60G以上硬盘,输入输出设备)技术文档要求:按照实验报告编写要求进行。

要求软、硬件功能描述清晰,实验总结深刻。

实验内容:1 、实验原理图1 电路原理图本实验采用 ADC0809 做 A/D 转换实验。

ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。

ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。

图中ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。

一般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、START、ENABLE信号。

ADC0809的转换结束信号EOC未接,如果以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。

本实验以延时方式等待A/D转换结束,ADC0809的通道号选择线ADD-A、ADD-B、ADD-C 接系统A/D转换器ADC0809数字温度计设计数据线的低3位,因此ADC0809的8个通道值地址分别为00H、01H、02H、03H、04H、05H 、06H、07H。

启动本A/D转换只需如下三条命令:MOV DX,ADPORT ;ADPORT为ADC0809端口地址。

MOV AL,DATA ;DATA为通道值。

MOV DX, AL ;通道值送端口。

微机原理与接口技术实验综合实验实验报告

微机原理与接口技术实验综合实验实验报告

微机原理与接口技术实验《简单手势无线遥控小车》实验报告通信科学与工程于广溪113007200701.总体概况与说明1.1 选题概况与说明1.2遥控部分概况与说明1.3机动部分概况与说明2.机械部分分析实现3.硬件系统设计实现3.1电源设计实现3.1.1标准电源来源与稳压3.1.1.1电源的电压和电流要求3.1.1.2电源的纹波要求3.1.1.3 防止电源判定空载关机的方法3.1.2电源升压3.1.3电源降压3.2单片机最小系统版设计实现3.3红外光电开关部分设计实现3.4减速直流电机驱动设计实现3.5 STC单片机USB-串口下载调试实现3.6无线模块分析实现3.7系统总电路图4.软件系统设计实现4.1遥控部分软件系统设计实现4.1.1ST188时序检测方法4.1.2 nRF24L01+驱动程序说明4.1.3 遥控部分所有代码文件4.1.3.1 主文件yaokong.c:4.1.3.2 nRF24L01+驱动程序nRF24L01.c4.1.3.3延时文件delay.c4.1.3.4 52单片机寄存器头文件reg52.h4.1.3.5 所有头文件的头文件allhead.h4.1.3.6 变量声明重定义vartypeabbreviation.h4.1.3.7 电机控制命令定义motorcommand.h4.1.3.8 延时头文件delay.h4.1.3.9 nRF24L01+驱动程序头文件nRF24L01.h 4.2机动部分软件系统设计实现4.2.1直流减速电机的驱动方式说明4.2.2机动部分所有代码文件5.总结1.总体概况说明1.1选题概况与说明:本次微机原理与接口技术实验(综合)实验,我选择的题目是一个可以通过手势动作无线控制的小车。

希望实现的是在遥控端通过产生简单的5种手势动作来控制小车的运动状态和方向。

简单来说就是通过手的向前滑动,向后滑动,向左滑动,向右滑动以及在特定区域滑动实现小车的前后左右以及停止5种动作。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验⼀DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。

⼆、实验要求1.掌握DEBUG的使⽤,调试程序。

2.读懂程序中各条指令,说明程序功能。

三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。

100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。

2.加深对指令的理解。

⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。

请编⼀程序将AX的内容和BX的内容进⾏交换。

请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。

2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。

在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。

三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。

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

微机原理与接口技术
实验报告
实验内容:微机原理综合设计实验
数字电压表A
组别:5
班级:******** 姓名:刘庭欣学号:********** 班级:******** 姓名:罗太鑫学号**********
一、实验目的:
1、掌握8255的使用及编程原理。

2、掌握8253定时/计数器的编程原理。

3、掌握ADC0809的使用及编程原理。

4、掌握共阴极七段数码管的工作原理。

5、掌握芯片的综合运用。

6、掌握汇编语言程序设计。

二、实验内容:
利用ADC0809采集电位器的电压值,将采集的电压值通过8255显示在七段数码管上,显示数据保留小数点后2位,利用8253定时数据更新,每隔0.5秒数据更新一次。

要求:
1、查阅资料,掌握共阴极七段数码管的工作原理。

2、分析实验原理,设计实验方案,绘出实验连线图。

3、绘制实验程序流程图。

4、编写实验程序,检查无误后,编译、链接并下载入实验系统。

5、运行实验程序,验证程序功能。

扩展要求:
具有设置报警阈值功能,当超过阈值时,点亮一个LED灯。

三、实验方法:
1、设计思路:
利用ADC0809采集电位器的电压值,通过8255 依次选通3个数码管,通过8255依次送入刚才所得的三个值的显示码,利用8253工作在方式二,每隔0.5秒产生一低脉冲送到8255。

将可变电位器AN0与ADC0809的ADIN0相连,将CS2与ADC0809的片选CS0809端相连,将ADC0809的EOC与8255的PC0相连,CS0与8253的片选CS8253相连,CLK3(750KHz)与8253CLK0相连,8253的OUT0与8253CLK2相连,OUT2与8255的PA0相连,CS1与8255的片选CS8255相连,PC4-PC6与LED1-LED3依次相连,PB0-PB7依次与LED-A—LED-DP相连。

画出实验各芯片的连线图,如图:
2、程序流程图:
四、实验源程序:
CODE SEGMENT PUBLIC
ASSUME CS:CODE
ORG 100H
START:
MOV AX,0H
MOV DS,AX
MOV SI,2000H ;定义从0:2000H开始的存储单元
MOV DX,04B6H
MOV AX,91H
OUT DX,AX ;初始化8255,使B口输出,A口输入,C口低四位输入,高四位输出
MOV DX,04A6H
MOV AX,36H ;计数器0,方式3-方波,低八位,后高八位,二进制
OUT DX,AX
MOV DX,04A0H
MOV AX,720
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,04A6H
MOV AX,0B5H ;计数器2,方式2-频率发生器,低八位,后高八位
OUT DX,AX
MOV DX,04A4H
MOV AX,501
OUT DX,AL
MOV AL,AH
OUT DX,AL ;OUT2每0.5秒输出一个低电平到PA0
L2: ;初始化0809,并调用获取AD值函数(已将要显示的数字求出)MOV SI,2000H
MOV DX,04C0H ;指向通道0
CALL GETAD ;调用A/D转换子程序,取得A/D值
L1: ;作为数码管显示模块
MOV SI,2000H
MOV BL,DS:[SI+2]
MOV BH,0 ;取出电压值小数点后第二位
LEA SI,TABLE
ADD SI,BX
MOV BL,CS:[SI] ;得到电压值小数点后第二位的数码管显示码
MOV DX,04B4H ;C口的地址
MOV AL,0E0H ;低电平有效,11100000,PC4
OUT DX,AL ;选通LED1数码管
MOV DX,04B2H ;B口地址
MOV AL,BL
OUT DX,AL ;通过B口送入显示码
CALL DELAY
MOV SI,2000H
MOV BL,DS:[SI+1]
MOV BH,0 ;取出电压值小数点后第一位
LEA SI,TABLE
ADD SI,BX
MOV BL,CS:[SI] ;得到电压值小数点后第一位的数码管显示码
MOV AL,0D0H ;11010000
MOV DX,04B4H ;C口的地址
OUT DX,AL ;选通LED2数码管
MOV DX,04B2H
MOV AL,BL
OUT DX,AL ;通过B口送入显示码
CALL DELAY
MOV SI,2000H
MOV BL,DS:[SI]
MOV BH,0 ;取出电压值个位值
LEA SI,TABLE1
ADD SI,BX
MOV BL,CS:[SI] ;得到电压值个位值的数码管显示码
MOV AL,0B0H
MOV DX,04B4H
OUT DX,AL ;选通LED3数码管
MOV DX,04B2H
MOV AL,BL
OUT DX,AL ;通过B口送入显示码
CALL DELAY
MOV DX,04B0H ;8255A口地址,定时器模块
IN AL,DX
AND AL,00000001
CMP AL,0 ;PA0是否接收到一低电平
JNZ L1 ;PA0没有接收到低电平,跳到数码管显示程序
JMP L2 ;PA0接收到低电平,跳到电压采集程序,每0.5秒采集一次
DELAY:
MOV BP,100H ;延时程序
DELAY1:
DEC BP
CMP BP,0
JNE DELAY1
RET
GETAD:
PUSH DX
MOV AX,34H ;启动A/D
OUT DX,AX
CALL DELAY ;延时等待转换
MOV DX,04B4H ;指向8255C口地址,PC0与0809的EOC相连
WAIT1:
IN AX,DX ;读进EOC状态
TEST AX,1 ;EOC=1,表示一次转换已经结束,=0表示正在转换,TEST相与
JZ WAIT1
POP DX
IN AX,DX ;读A/D值
MOV AH,0 ;用AL储存转换后的8位2进制数
MOV CX,AX
MOV AL,51
MOV BL,3 ;电压阈值在此修改,电压超过3v则报警
MUL BL ;AX现在是阙值
CMP AX,CX
JC L3
MOV AL,01H
MOV DX,4D0H ;指向74LS273
OUT DX,AL
jmp ne ;若小于阈值则灯灭
L3:MOV AL,0
MOV DX,4D0H ;74LS273的第一个口地址
OUT DX,AL ;若大于阈值则灯亮
ne:
MOV AX,CX ;AX现在是测量值
MOV BL,0C4H
MUL BL ;AX乘以196,转换为实际电压的100倍,500/255=196
MOV BX,0001H
MUL BX
MOV BL,64H ;除数100
MOV BH,0
DIV BX ;注意要除两次才能得到个位
DIV BL
MOV DS:[SI],AL ;得到个位值存入0:2000H
MOV AL,AH
MOV AH,00H
MOV BL,0AH
DIV BL
MOV DS:[SI+1],AL ;得到小数点后第一位值存入0:2001H
MOV DS:[SI+2],AH ;得到小数点后第一位值存入0:2002H
RET
TABLE:DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0-9的八段
数码管显示码
TABLE1:DB
0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;0-9的DP点亮八段
数码管显示码,个位用
CODE ENDS
END START
五、实验结果:
在实验箱上连接好电路图,输入源程序,编译并链接,运行程序。

当转动电位器,数码管上显示的数值不断变化,实验箱上的连线图如图:
当旋转电位器,电压值大于3V时(我们设置的阈值为3V),LED灯亮,报警。

达到实验的要求。

实验结果如图:
六、实验中遇到的问题及解决方法:
1.最开始设计电路连接的时候,由于对于实验箱不熟悉,不知道CS0,CS1这些片选信号指向的地址是什么,还有就是第一次连接好电路图,没有拔掉数码管右边的那一排跳线帽,导致转到电位器,数码管显示不会有变化。

2.在程序中没有加入延时函数之间,数码管显示的数一直闪烁,加入合适的延时时间后,数码管能比较稳定的显示。

3.在设计扩展功能时,最开始想着把8255上的一个输出端口接到灯上,后来发现不行,因为没有锁存功能,所以最后选用了74LS273输出。

七、心得体会与建议:
对于综合实验,通过完成一个任务,在这过程中,让我们将几个芯片的功能结合起来,去完成某个特定的功能。

我们小组在准备的时候,发现刚开始并不知道如何让这几个芯片一起工作,后来研究了每个芯片的具体使用方法和功能,才慢慢有了思路。

整个过程下来,感觉综合实验对我们的理论知识提出了更高的要求。

而在完成实验的过程中,我们遇到问题,发现问题,解决问题,虽然过程很曲折,但是确实是收获到了很多。

相关文档
最新文档