没有合适的资源?快使用搜索试试~ 我知道了~
首页ARM嵌入式系统课程设计_排序过程演示
资源详情
资源评论
资源推荐

一、设计题目:数据排序过程演示(S3CEV40 教学平台)
用键盘随机输入 8 个数值为 0-9 的数字,用冒泡排序法将它们按从小到大的方式排序,
并显示排序过程和最终结果。
二、设计要求和目标
1. 基本要求
(1)在 LCD 屏幕上提示用户用矩阵键盘输入 8 个数字,输入过程显示在屏幕上。输
入完成后,屏幕提示按确认键开始排序过程。一定要输满 8 个数字才能排序;输入过程中
若按取消键则清除所有输入结果,回到待机状态。
(2)当输入完 8 个数字,按下确认键后,程序开始排序;排序过程中在数码管上显示
正在排序的数字,同时在 LCD 屏幕上绘制出排序动画过程 ,每当数字顺序发生变化后,
停留 2~3 秒或有按键按下后才进行下一步排序。
(3)排序结束后,在数码管上应该依次显示数值从小到大排列的 8 个数字,同时
LED1 闪烁表示排序完成。按取消键清除结果显示回到待机状态,提示下一次输入和排序
操作过程。
2. 扩展内容
在排序过程中,若按下取消键,在 LCD 屏幕上提示是否要取消排序操作,按确定中断
排序,清除显示;按其他键继续排序过程。
三、排序算法说明
冒泡排序
已知一组无序数据 a[1]、a[2]、……a[n],需将其按升序排列。首先比较 a[1]与 a[2]的
值,若 a[1]大于 a[2]则交换两者的值,否则不变。再比较 a[2]与 a[3]的值,若 a[2]大于 a[3]
则交换两者的值,否则不变。再比较 a[3]与 a[4],以此类推,最后比较 a[n-1]与 a[n]的值。
这样处理一轮后,a[n]的值一定是这组数据中最大的。再对 a[1]~a[n-1]以相同方法处理一轮,
则 a[n-1]的值一定是 a[1]~a[n-1]中最大的。再对 a[1]~a[n-2]以相同方法处理一轮,以此类推。
共处理 n-1 轮后 a[1]、a[2]、……a[n]就以升序排列了。
优点:稳定,比较次数已知;
缺点:慢,每次只能移动相邻两个数据,移动数据的次数多。
四、 原理说明和模块
1、 主要用到的模块
数据输入模块:主要完成要排序数据的输入;
LED 显示模块:主要完成数据的输入以及排序过程在数码过程上的显示;
LCD 显示模块:主要完成数据排序过程,操作提示等内容的显示;
扫描键盘模块:主要完成对键盘的扫描,通过得到不的按键转到相应的处理程序;
排序及主控制模块:主要完成数据排序以及显示控制;
延时及动态刷新模块:主要用来去除键盘抖动和刷新数码管显示。
2、程序各部分模块关系

3、操作说明
从键盘输入 8 个数,A 键清除,重新输入。
输入后提示是否开始排序,按 A 键取消排序,其它任意键开始。
若在排序过程中取消当前排序,可以按 A 键,系统提示是否想真正退出,若
再 按 A 键,则退回到待机状态,若按除 A 以外的其它键,刚返回原来界面继续
排序。
排序完成后 LED 灯闪,LCD 提示排序完成,按 A 键继续下一次排序过程.
4、流程图与各模块代码说明
初始化硬件资源
数据输入
选择排序方法
排序以及显示控制
LED 显示
LCD 显示
按键扫描
动态刷新

5、程序中用到的函数介绍:
void Lcd_DspHz16(INT16U x0, INT16U y0, INT8U ForeColor, INT8U *s);
开始
硬 件 初 始
化
LCD 提示输入数据
是否取消输
入
将数据输入缓存
返回
是否开始排
序
数据是否需要交换
返回待机
下一次循环排序
LCD 显
示
8LE 显示
延时
记录交换次数
排序是否完成
结束排序
LCD 显示排序次数
8LED 显示最后结果
LED 闪灯
LCD 提示是否结束
返回排序程序 返回待机状态
是否是取消
键
查询是否有键按下
查询按键有取消键按下返
回回
剩余11页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论4