找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2538|回复: 0
打印 上一主题 下一主题
收起左侧

微机原理与接口技术试验报告

[复制链接]
跳转到指定楼层
楼主
ID:76127 发表于 2015-4-18 01:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验一C8051单片机拓展EPROM
一实验目的:1熟悉单片机地址线与EPROM引脚的连线方式。2学会用altium绘制电路原理图。3掌握c8051,32k寄存器拓展简单并行的输入输出的方法。二实验内容:1设同学的点名序号为 XX,参考教材的图5.12的与非门译码电路,将一片32K的EPROM译码到首地址为 YY000H的地址空间。2其中 YYH=XXH+40H。如某同学的点名序号为 38,则 'YY'='38'+'40'='78'。三实验原理:通过c8051单片机地址线中低15位与32k62256EPROM地址连接起来,高八位地址控制ROM的片使能,达到单片机拓展EPROM的目的。四实验步骤:1通过查表可知本人班级点名序号为45,yy=85 ;首地址为85000h.2电路分析:1据5-12例可以得到,单片机A0-A14地址线与62256的A0-14相连,单片机A12-A19为控制信号,如果采用书中电路,就会发现保存的地址不是连续空间,需要用锁存器来进行首地址选择后,再进行余下地址的译码。2经过仔细分析,发现高8位地址线可以用4-16译码器,逻辑电路,锁存器三种控制方法实现。本文主要介绍译码器方案。电路图如下所示:
      
1 该电路图主要由EPROM储存电路和逻辑器件控制电路两部分组成,其中由于首地址是85000h,末地址为8c000h,高4位可以直接用1000一直表示,但第12-15位4位二进制一直在变化,不能借用书中用一个15输入与非门解决地址连续的问题。需要用数电中逻辑电路知识,图中电路不是最简电路,但为了便于看图,用了5个非门,2个四输入或非门,2个四输入与非门,3个二输入与非门,一个四输入与门,逻辑电路如下所示:

将A19-A12用A19--A12表示,上图中的逻辑关系可以用如下公式表示:

2计算:如图,控制电路部分由高八位代码0x85-0x8c决定,即高四位一定是8,A15-A12位为0101-1011
      
bit
   
      
0101
   
      
0110
   
      
0111
   
      
1000
   
      
1001
   
      
1010
   
      
1011
   
      
1100
   
      
数值
   
      
5
   
      
6
   
      
7
   
      
8
   
      
9
   
      
10
   
      
11
   
      
12
   
由表得A15-A12可以分为01xx,10xx,1100,合并并除去0100,就可以得到。使地址储存在0x85000h-0x8cfffh;

实验二emulator8086对外设控制的仿真一实验目的:⑴了解并掌握如何用汇编语言对外设进行控制; ⑵学习构建应用案例;二实验内容:根据emu8086的应用例程,构建一个控制交通灯、温度计、机器人或者步进电机的应用案例。如,可以通过simpleio输入步进电机要转的角度,然后控制stepper motor旋转,等等。三实验原理:通过emulator8086的例程学习用汇编语言对外设的控制,掌握程序的调试,修改,注释。四实验过程:1选用例程温度计案例;源代码如下#start=thermometer.exe##make_bin#

; set data segment to code segment:
mov ax, cs
mov ds, ax         ;首先设置数据段代码段:
start:

in al, 125          ;启动温度计,设定加热温器温度125度

cmp al, 90         ;设定最小温度90度

jl  low           ;如果烧杯温度小于90度,指向low

cmp al, 91        ;如果烧杯温度大于91度,指向high
jle  ok           ;如果小于等于90度,指向OK
jg   high         ;如果大于90度,指向high

low:         
mov al, 1          ;打开加热器
out 127, al   ; turn heater "on".
jmp ok            ;跳转OK

high:         
mov al, 0          ;关闭加热器,直接进入OK
out 127, al   ; turn heater "off".

ok:                ;重新进入下个循环
jmp start   ; endless loop.
2流程图:


C伪代码:
First:初始化,设置数据段代码段
Then:进入start,设定加热温度125度
next:设定最小温度90度,比较当前温度计温度与90度差距
If:温度小于90度,指向low
If:温度大于等于91度,指向high
   else:指向ok
Low:打开加热器,程序跳转ok
High:关闭加热器,程序跳转ok
Last  Ok:返回first,重新进入下一个循环。
3       题目分析:首先初始化程序,设定加热器温度125度,比较加热器温度是否在90-91度之间,通过关闭打开加热器使烧杯中温度维持在90-91度间,一直循环下去。目的是想把烧杯温度维持在90度左右,实际也可以达到目的。

4实验结果:通过观察,发现温度计温度维持在90度至91度间,达到预期设想,调节速度快且稳定。
   


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表