软件实验六 数据排序
一、实验要求
给出一组随机数,将此组数据排序,使之成为有序数列
二、实验目的
了解数据排序的简单算法。
三、实验说明
有序的数列更有利于查找。本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在 数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。
四、程序框图
交换A,B数位置 - 22 -
设置数据区地址 设置数据区长度 清除交换标志 当前地址取数A 地址加1 当前地址取数B 是 A<=B? 否 设置交换标志 否 数据比较完 是 否 全部有序? 是 结束
硬件实验一 P1口输入、输出实验
一、实验要求
1. P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2. P1.0、P1.1作输入口接两个拨动开关,P1.2、P1.3作输出口,接两个发光二极管,
编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。
二、实验目的
1. 学习P1口的使用方法。 2. 学习延时子程序的编写和使用。
3. 学习用‘与’‘或’运算对MCS96系列CPU的变量进行位操作。
三、实验电路及连线
连线 连接孔1 连接孔2 1 P1.0 L0 2 P1.1 L1 3 P1.2 L2 4 P1.3 L3 实验1: P1口循环点灯 连线 1 2 3 4 连接孔1 S0 S1 P1.2 P1.3 连接孔2 P1.0 P1.1 L4 L5 实验2: P1口输入输出 四、实验说明
1. P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结
构可知当P1口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。
2. 8051延时子程序的延时计算问题,对于程序
Delay:
MOV R6,#0H MOV R7, #0H DelayLoop:
DJNZ R6,DelayLoop DJNZ R7,DelayLoop RET
查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为:
- 23 -
(256×255+2)×2×12÷6 ≈ 261ms
五、实验框图
开始 开始 设置初始值 P1.0,P1.1置1 设移位次数 读入P1.0口值 数据输出 将读入的值输出到P1.2 左移一位 读入P1.1口值 延时 是 否 将读入的值输出到P1.3 移位次数完成?
(B) P1口输入输出程序框图
(A) P1口循环点灯程序框图
六、设计:1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管(同时点亮两
支)循环点亮。
2. P1.0、P1.1作为输入口时,如果先清零,再读入,观察结果如何。
- 24 -
硬件实验二 继电器控制实验
一、实验要求
用单片机的端口,输出电平控制继电器的吸合和断开,实现对外部装置的控制。
二、实验目的
1. 学习I/O端口的使用方法 2. 掌握继电器的控制的基本方法 3. 了解用弱电控制强电的方法
三、实验电路及连线
连线 1 2 3 连接孔1 P1.0 5V L0 连接孔2 继电器输入 继电器常闭输入 继电器中间输入
四、实验说明
现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路的电气电路提供良好的电气隔离,以保护电子电路和人身的安全。继电器便能完成这一桥梁作用。
本实验采用的继电器其控制电压是5V,控制端为高电平时,继电器工作常开触点吸合,连触点的LED灯被点亮。当控制端为低电平时,继电器不工作。执行时,对应的LED将随继电器的开关而亮灭。
五、实验框图
开始 继电器吸合 延时 继电器断开 延时
六、设计: 要想改变继电器通断时间,程序应如何改变?
- 25 -