《《微机应用系统设计》实验指导.doc》由会员分享,可在线阅读,更多相关《《微机应用系统设计》实验指导.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三部分 实验内容软件实验一 仿真软件的使用及简单指令练习实验目的:了解Dais-52PH+ 实验箱的组成结构,学习仿真软件使用方法;通过编写清零程序、拆字和数据块传送等程序,掌握简单汇编语言设计和调试方法。实验内容:1 观察实验箱,了解Dais-52PH+ 实验箱的结构,区分实验箱8155、EPROM编程电路、38译码器电路、液晶显示等功能模块,找出单片机数据总线、地址总线接口及各类控制信号接口。2 熟悉dais-MCS51仿真开发系统,通过编写简单的汇编语言程序学习仿真软件的使用。观察编译工具、调试工具、调试窗口、寄存器窗口、 存储器窗口的内容及使用方法。实验框图:软件实验分为三个子程序,
2、分别是清零程序、拆字程序和数据块传送程序。 清零程序流程图:编写程序实现将数据存储单元2000H-20FFH单元内容清零。思考:(1)如果将数据存储单元2000H-20FFH单元内容改写为FFH,该如何实现? (2)如果将数据存储单元3000H-30FFH单元内容改写为00H,该如何实现? (3)在数据传送过程中,地址总线和数据总线上的数据分别是什么? 拆字程序流程图:编写程序将2000H存储单元中内容拆分,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零。思考:(?1)如果将2001H存储单元的低位和2002H单元的低位合并放在2003H单元,其中2001H存储单元
3、的低位放在2003H单元低位,2002H单元的低位放在2003H单元高位,该如何编写程序? 数据块传送子程序流程图:把1000H10FFH区域内的数据逐个搬到从2000H单元开始的区域中。思考:(1)如何用断点方式调试上述程序?(2)如何察看某个数据单元内容?实验步骤:1 分别根据上述3个实验要求和流程图编写汇编语言程序。2 编译、改错,直到编译通过。3 装载程序后,用单步或连续方式运行程序,并检查数据存储单元和存储器中相应数据在执行程序前后内容变化。4 根据思考题出的问题,改变程序后,再观察。5 撰写实验报告。实验要求:1 根据要求,写出实验程序。并对程序中关键语句写出注释。2 分析实验结果
4、。并写出思考题答案。需要的仪器设备:1 PC机一台;2 单片机教学实验系统一套。包括Dais-52PH+ 实验箱一个和DaisMCS51仿真软件一套。软件实验二 二进制到BCD的转换实验目的了解如何将二进制数转换成BCD码,掌握简单的数制转换算法。将二进制到BCD转换程序写成子程序,了解主程序调用子程序的过程。实验内容 将累加器ACC内容拆为三个BCD码,存入内部数据缓冲区20H开始的三个存储单元中。实验框图开始给出要转换二进制数将数除以100,得百位数保存百位数将余数再除以10,得十位数保存十位数余数为个位数,保存个位数结束思考:(1)如何将二进制码转换成ASCII码?(2)程序调用过程中,
5、如果需要保护某些寄存器的内容,应如何处理?具体怎么实现? (3)子程序中如果没有RET语言,会出现什么问题?实验原理1BCD码原理BCD码是用二进制数来表示十进制数的表示方法。BCD有两种形式,压缩的BCD码和非压缩的BCD码。常用压缩的BCD码,它是一种用四位二进制数表示十进制数。首先是用四位二制数表示个数,然后用四位二进制数表示十位, 然后百位.。又称8421码。比如:251需要三个四位二进制数表示。 1表示为0001;5表示为0101;2表示为0010.最后251的BCD数据表示为0010 0101 0001.2二进制数转换BCD码二进制数转换BCD码非常简单,将要转换数先除以100,得
6、BCD码百位,再将余数除以10,得BCD码十位,余数为个位。实验步骤:1 根据实验要求和给定流程图编写程序;2 编译、改错,直到编译通过。3 装载程序后,用单步或连续方式运行程序,并检查ACC和存储单元20H22H内容。4 改变累加器ACC数值,运行程序后再观察。5 撰写实验报告并分析实验结果。并对思考题做出解答。软件实验三、多分支及循环程序的设计实验目的了解简单分支和多分支及循环程序结构及实现方法。通过这个实验,学习汇编语言中分支程序及循环程序的设计方法。实验内容1 在内部数据存储器32H单元的数据段中存有一无符号数数据块,长度在31H单元,求出数据块中最大值,并存入30H单元中。 2 在2
7、0H中分次送入00,01,02,03,每次运行程序后,观察数码管上数字循环状态。实验框图开始取数据块长度R1A内容清零数据块首地址R0A与R0内容比较,将大值AR1减1 R1为0?R0加1YNA(30H )结束循环程序流程图开始(20H)送AA+ 散转首址0字循环1字循环2字循环3字循环多分支程序流程思考:常用的多分支程序设计方法有哪些?你采取的是那种方法,有什么优点?还可以如何实现?实验原理: 分支程序根据不同的条件转向执行不同的程序段,又称为条件分支程序。分为简单分支程序和多路分支程序两种。 对于条件比较简单,所分支路不多(一般对判断条件,有yes或no)时,称为简单分支程序,在程序中常常
8、见到。 根据某变量的内容,分别转入处理程序0,处理程序1,处理程序N。这种类型的分支称为多路分支程序,又称为散转程序。实验步骤1 根据实验要求和给定流程图编写程序。2 编译、改错,直到编译通过。3 设定20H、31H及相应数据值。4 装载程序后,用单步或连续方式运行程序,并检查ACC和存储单元30H内容。5 循环程序和多分支程序建议采用断点方式调试程序。 6 撰写实验报告并分析实验结果。并对思考题做出解答。软件实验四 单字节和双字节加法程序设计实验目的:熟悉MCS-51加减乘除运算类指令的使用方法,掌握单字节和双字节加法运算程序设计和调试方法。实验内容:1 要求存放在从40H开始的RAM单元中
9、的多个单字节数相加,和为双字节,存放在寄存器R3,R4中。单字节数的个数放在R2 中。2 双字节数存放在从40H开始的RAM单元中的多个双字节数相加,和为双字节,存放在寄存器R3,R4中。双字节数的个数放在R2 中。实验框图:双字节加法程序流程图:开始n 送R2两个加数相加和低字节送R3,高字节送R4循环次数n减1n 为0?YN结束实验步骤:1 根据实验要求和给定流程图编写程序。2 编译、改错,直到编译通过。3 设定R2及40H开始数据存储单元数据值。4 装载程序后,用单步或连续方式运行程序,并检查R3、R4内容。5 撰写实验报告并分析实验结果。硬件实验一 I/O接口实验实验目的:熟悉实验系统
10、,重点了解实验箱的组成结构和各个功能模块,了解单片机I/O接口特点、掌握关于I/O接口的编程方法并编写软件延时程序。实验内容:1. P1口循环点灯:P1口准双向口,每一位都可独立地定义为输出/输入。P1作为输出口,接8只发光二极管,编写程序,使发光二极管循环点亮。2. P1口用作输入输出接口:P1.0、P1.1用作输入口,分别接拨动开关S0、S1; P1.2,P1.3作输出口,接两个发光二极管,编写程序读取开关状态并将此状态在发光二极管上显示。注意:本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。实验电路及连
11、线:P1.0 - LED0 P1.0 - S0 P1.1 - LED1 P1.1 - S1 P1.2 - LED2 P1.2 - LED2 P1.3 - LED3 P1.3 - LED3 P1.4 - LED4 P1.5 - LED5 P1.6 - LED6 P1.7 - LED7实验1 P1口循环点灯 实验2 P1口输入输出实验说明:1、 P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用作输入口时必须先对它置“1”。否则读入的数据是错误的。2、 延时子程序的延时计算问题子程序 Delay:MOV R7,#200DEL1:MOV R6, #123NOPD
12、EL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RET查指令表可知执行MOV指令需用1个机器周期,DJNZ指令需用2个机器周期,在12MHz晶振时,一个机器周期时间长度为1s,所以该段程序执行时间为:程序框图:开始读入P1.0口值将读入的值输出到P1.3P1.0、P1.1置1将读入的值输出到P1.2读入P1.0口值开始延时设置初始值数据输出左移一位P1口循环点灯 P1口输入输出思考题(1)改变延时常数,使发光二极管闪亮时间改变。(2)修改程序,使发光二极管闪亮移位方向改变。实验步骤:1 根据实验要求设计流程图并编写程序。2 将实验箱断电后,按照实验电路图连线。3 输入源文件,编译、
13、直至编译通过。4 在确保PC机与实验机之间连接正常的情况下,装载程序,用单步或连续方式运行程序,观察发光二极管闪亮移位情况。5 撰写实验报告并分析实验结果。实验中的注意事项1 用导线进行电路连线时,应将实验箱的电断开并防止短路。2 注意拉直导线裸露部分防止相互短接。硬件实验二 简单I/O口扩展实验用74LS244缓冲输入、74LS273锁存输出实验目的:了解CPU 常用的简单接口扩展的方法;学习利用74LS244,74LS273完成I/O接口的扩展。掌握用74LS244进行数据读入,用74LS273进行数据输出的方法。实验内容:1利用实验箱上8个逻辑电平开关作为74LS245的输入,输入不同的
14、数据值,在LED显示器显示不同的数值。2将8个逻辑电平量通过74LS273输出,控制8个LED灯。实验电路及连线:实验原理:单片机与外设之间进行数据传送时,各种外设的工作速度相差很大,如何保证CPU与外设之间的数据交换能够准确无误成为一个复杂的问题。 概括起来,有四种传送方式可解决上述问题:程序方式、中断方式、DMA方式和I/O处理机。程序方式是指在程序控制下进行信息传送,又分为无条件传送方式和条件传送方式。MCS-51单片机对简单外部设备间数据传送方式基本为无条件传送方式。即在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送,这就是无条件传送称之为立即
15、传送。无条件传送方式只适用在对一些简单外设的操作,如开关、七段显示管等。根据这个特点,CPU与简单外设间访问的基本要求是“输入缓冲、输出锁存”。由于简单外设作为输入设备时,输人数据保持时间相对于CPU的处理速度要长得多,所以可直接使用输入缓冲器和数据总线相连,当CPU执行输入指令时,输入缓冲器被选通,使其中已准备好的输入数据进入数据总线,等待CPU读取。简单外设作为输出设备时,一般都需要锁存器,也就是说,要求CPU送出的数据在接口电路的输出端保持一段时间。其原因仍然是由于外设的速度比较慢,缓冲器相当于一个寄存器,暂时保存数据,起到了此作用,通常将它用来在两种不同速度的设备之间传输信息时平滑传输
16、过程的常用手段,缓冲CPU与l/0设备间速度不匹配问题。实验框图:开始置端口地址从74LS244读入开关状态从74LS373输出开关状态延时0.01S思考:若要将输入的开关变量值通过LED显示器显示,该如何实现?实验步骤:1 根据实验要求设计流程图并编写程序。2 将实验箱断电后,按照实验电路图连线。3 输入源文件,编译、直至编译通过。4 在确保PC机与实验机之间连接正常的情况下,装载程序,用单步或连续方式运行程序,。5 撰写实验报告并分析实验结果。注意事项:按实验电路图连接138译码器时,输入端A、B、C分别连接A2、A3、A4。控制使能端G与位于地址线A0引出孔下方的使能输出端G对应相连。该
17、端的寻址范围为FFE0HFFFFH。硬件实验三 中断方式实验实验目的:了解中断概念及中断过程,通过以查询和中断向量两种方式实现中断,掌握中断具体执行过程,加深对中断的理解。实验内容:按键S作为单片机外部中断信号(建议采用外部中断1),按一次键,LED灯点亮,蜂鸣器发声,再按一次键LED灭,蜂鸣器关闭,循环往复。分别以查询方式和中断方式实现程序。实验电路与连线:程序流程图: 1中断方式开始中断初始化虚拟主程序,等待中断关中断,保护现场控制LED输出控制蜂鸣器输出中断返回 主程序 中断服务程序2查询方式开始中断初始化IE1=1?NYLED输出蜂鸣器输出 查询方式流程图思考题:分析比较两种中断实现方
18、式,中断方式的优点是什么?实验步骤: 按照电路图连接电路,按键S接至单片机外部中断1,将P1.0接至蜂鸣器输入端。 以中断方式编程实现功能。按键S按一次键LED灯点亮,蜂鸣器发声,再按一次键LED灭,蜂鸣器关闭,循环往复。可用单步、单步跟踪,非全速断点、全速断点、连续执行功能调试软件,直至符合自己程序设计要求为止。 以查询方式编程实现上述功能,分析两种方式的不同及特点。 撰写实验报告并分析实验结果。并对思考题做出解答。硬件实验四、 工业顺序控制实验(采用中断方式)实验目的:了解工业顺序控制过程及中断方式在工业控制中作用,掌握使用中断方式实现工业顺序控制程序的编程。实验内容:在工业控制中,比如冲
19、压、注塑、轻纺、制瓶等生产过程,都是一些连续生产过程,按某种顺序有规律地完成预定的动作,对这类连续生产过程的控制称顺序控制,倒注塑机工艺过程大致按“合模注射延时开模产伸产退”顺序动作,用单片机最易实现。采用P1.0P1.6控制注塑机的七道工序,来模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,高电平启动。P3.3为输入口外接外部故障输入模拟开关,故障信号为低电平,当发生故障时 P1.7输出口输出报警音,设定6道工序只有一位输出,第七道工序三位有输出。程序流程:实验建议使用外部中断方式实现,因此有主程序和中断服务子程序两部分程序。 主程序 中断服务程
20、序 实验电路与连线:实验步骤: 根据实验要求设计流程图并编写程序。并编译通过。 按实验电路图接好连线。图中粗线处为需要连接处,P3.4 连接K1,P3.3连接K2。P1.0P1.6分别连到L1L7,P1.7连SIN(电子音响输入端)。 将K1,K2开关拨在高电平,执行程序,此时为等待开工状态。 把K1拨至低电平,各道工序应正常运行,观察发光二极管点亮情况,确定工序执行是否正常, 把K2拨至低电平,观察是否有声音报警, 把K2拨至高电平,观察报警及各道工序运行情况。 撰写实验报告并分析实验结果。硬件实验五 8255 PA口控制PB口实验目的:了解8255接口芯片结构和设计方法,通过对8255接口
21、芯片的使用掌握单片机系统扩展外围芯片的方法。实验要求: 采用8255扩展外部I/O接口,其中8255 PA口做开关量输入口,PB口做输出口,控制8个发光二极管。实验电路与连线:程序流程图:开始8255初始化(PA口输入,PB口输出)从PA口读入开关状态PA口状态向PB口输出循环思考题:改变8255PA、PB和PC口功能,这时8255初始化如何改变?实验步骤: 根据实验要求设计流程图并编写程序。并编译通过。 按电路图连线。图中粗线处为需要连接处。8255与系统已连接好。具体地址参见第一部分实验仪器部分。 实现8255 PA口读入8个开关变量状态值,再将读入状态向PB口输出,控制8个发光二极管的亮
22、与灭。 改变开关状态值后,再运行程序,观察发光二极管状态。 撰写实验报告并分析实验结果。实验中的注意事项1用导线进行电路连线时,应将实验箱的电断开并防止短路。2Dais-52PH+专用实验系统中的8255接口是与系统共用的,所以对8255的操作应先接线,再上电。硬件实验六 LED 显示实验目的:了解LED显示器结构和工作原理,通过静态和动态两种显示实现方法掌握LED显示的编程方法。实验内容: 在实验箱上带有4个LED显示器,在4个显示器上分别采用动态显示方法和静态显示方法分别显示03数字。实验原理:1LED显示器结构与工作原理LED显示器的结构如下图所示。由8个发光二极管按“日”字形排列,其中
23、7个发光二极管组成“日”字形的笔画段,另一个发光二极管为圆点形状,安装在显示器的右下角作为小数点使用。分别控制各笔画段的LED,使其中的某些字段发亮,从而可以显示出09的阿拉伯数字符号以及其它能由这些笔画段构成的各种字符。LED显示器根据内部结构不同分为两种:一种是把所有发光二极管的阳极连在一起称作共阳极数码管,如图 (b)所示;另一种是8个发光二极管的阴极连在一起称为共阴极数码管,如图 (a)所示。 (a) (b) (c) LED显示器原理图当某个二极管导通时,相应的字段发亮。这样,若干个二极管导通,就构成了一个字符。在共阴极数码管中,导通的二极管用1表示,其余的用0表示。这些1,0数符按一
24、定的顺序排列,就组成了所要显示字符的显示代码。例如,对于共阴极数码管来说,阳极排列顺序为hgfedcba.。这样,字符1的显示代码为,字符F的显示代码为,用十六进制表示分别为06H和71H。若要显示某一个字符,就在二极管的阳极按显示代码加以高电平,阴极加低电平即可。显示代码如下表所示。表 共阳极显示七段码表D7hD6gD5fD4eD3dD2cD1bD0a十六进制码表示显示字符转换代码表地址001111113FH0m+0H0000011006H1m+1H010110115BH2m+2H010011114FH3m+3H0110011066H4m+4H011011016DH5m+5H01111101
25、7DH6m+6H0000010107H7m+7H011111117FH8m+8H011011116FH9m+9H0111011177HAm+AH011111007CHBm+BH0011100139HCm+CH010001115EHDm+DH0111100179HEm+EH0111001171HFm+FH0111001173HGm+10H1000000080HHm+11H2单片机常用的显示方法有动态显示和静态显示两种方法。所谓静态显示,就是每一个显示器各笔画段都要独占具有锁存功能的输出口线,CPU把欲显示的字形代码送到输出口上,就可以使显示器显示所需的数字或符号,此后,即使CPU不再去访问它,因
26、为各笔画段接口具有锁存功能,显示的内容也不会消失。动态扫描显示是把所有显示器的8个笔画段 ah的各同段名端互相并接在一起,并把它们接到字段输出口上。为了防止各个显示器同时显示相同的数字,各个显示器的公共端COM还要受控制信号控制,即把它们接到位输出口上。这样,对于一组LED数码显示器需要有两组信号来控制,一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位显示器工作,称为位码。在这两组信号的控制下,可以一位一位地轮流点亮各个显示器显示各自的数码,以实现动态扫描显示。实验步骤:1. 了解实验箱上4个LED显示器特点及其使用方法。2. 编写程
27、序,采用动态显示方法在4个显示器上分别显示03数字,并编译通过。3. 编写程序,采用静态显示方法在4个显示器上分别显示03数字(或其它数字),并编译通过。4. 撰写实验报告并分析实验结果。思考题:1. 如果用8155并行接口进行扩展,如何连接?2. 了解16*16点阵显示器的工作原理。硬件实验七 定时器实验实验目的:了解MCS-51 定时/计数器作用及功能,学习定时器的应用实时程序的设计和调试技巧。实验内容: 用定时器产生0.1 S的定时中断,把定时器0 外部输入的脉冲进行计数,对时钟计数器从0:00分开始计时,并将数值实时地送数码管显示。程序流程图:开始定时器、中断初始化开中断,定时开始显示
28、保护现场0.1S单元清零?60秒到吗?YYYYNNNN1S到吗?0.1s加1秒单元清零?60分到吗?分单元清零?24小时到吗?秒加1分加1时加1返回 主程序 定时中断思考题:修改程序使显示器上可显示到9999个脉冲个数。实验步骤: 根据实验要求设计流程图并编写程序,并编译通过。 在实验箱上连接电路。(思考:该如何连接?) 根据实验要求设计流程图并编写程序。并编译通过。 撰写实验报告并分析实验结果。 硬件实验八 转换实验实验目的:了解A/D转换概念,熟悉ADC0809特点, 掌握A/D转换与单片机的接口方法。实验内容:利用实验箱上的0809做A/D转换实验,编制程序,将电位器输入的模拟电压转换成
29、数字量,并在发光二极管L1L8显示。实验电路及连线:程序框图:开始0809初始化初始显示00启动0809通道0采样L1L8显示采样值思考:修改程序,用其它通道轮流采样显示。实验原理:A/D转换器大致分为三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。本次实验采用的ADC0809为8位逐次逼近式A/D转化器。所以主要介绍逐次逼近式A/D转换器原理。4位逐次逼近式A/D转换器原理如下图所示:图 逐次比较式A/D转换器方框图A/D转换器的输入(来自逐次近似寄存器)从最高位向最低位逐
30、次置1,当每次置1完毕,比较器就会产生一个输出,指示A/D转换器的输出电压是否比输入的模拟电压大。如果A/D转换器的输出电压大于输入的模拟电压,则比较器输出低电平,使存储该位的逐次近似寄存器复位(清零);若是A/D转换器的输出比输入的模拟电压小,比较器输出高电平,则保留存储该位的逐次近似寄存器数据(置1)。转换器从最高位开始,按此方法逐次比较,直至最低位后,转换结束。一个转换周期完成后,将逐次近似寄存器清0,开始下一次转换。逐次比较式A/D转换器的转换时间取决于转换中数字位数n的多少,完成每位数字的转换需要一个时钟周期,有前面分析可知,第n个时钟脉冲作用后,转换完成,所以该转换器的转换最小时间
31、是nTC,这里TC是时钟脉冲的周期。A/D变换器的主要技术指标有:1).分辨率以输出二进制数的位数表示分辨率。位数越多,误差越小,转换精度越高。2).转换速度完成一次A/D转换所需要的时间,即从它接到转换控制信号起,到输出端得到稳定的数字量输出所需要的时间。3).相对精度实际转换值和理想特性之间的最大偏差。4).其它功率、电源电压、电压范围等。ADC0809是8位逐次逼近式A/D转换器。由于ADC0809 A/D转换器转换结束后会自动产生EOC信号(高电平有效),取反后将其与单片机的INT0相连,即采用中断方式读取A/D转换结果。实验步骤: 根据实验要求设计流程图并编写程序,并编译通过。 按电路图连线。图中粗线处为需要连接处。把0809的0通道INT0用插针接至模拟电位器W1 的中间抽头V01,按照硬件实验2中方法连接74LS138。ADC0809的CS端接译码器输出Y0插孔。 运行程序,实现0809将电位器输入的模拟量转换为数字量。 用万用表量电位器输出值,与发光二极管显示数值比较是否一致? 调节电位器,观察发光二极管变化。 撰写实验报告并分析实验结果。需要的仪器设备:1 PC机一台;2单片机教学实验系统一套;
限制150内