第一篇:《嵌入式系统》课程设计题目
《嵌入式系统》
课程设计题目及要求
2013年12月24日
设计报告要求:
1.课题研究意义、现状及应用分析; 2.课题总体方案设计及功能模块介绍; 3.系统硬件平台及接口设计;
4.系统软件功能设计,程序流程图及代码实现,包括必要的注释; 5.实验测试、结果分析; 6.总结、心得体会; 7.附主要的参考文献。
课程设计题目:(以下题目仅供参考,可自拟题目)
基于ARM的LED点阵显示系统的设计与实现
要求:在ARM开发平台下,实现接收串口发送的数据,在16*16的点阵屏上显示,按键上设置几个固定显示内容,当按下相应的按键时,点阵屏上显示相应的内容。
基于ARM的环境监测系统的设计与实现
要求:在ARM开发平台下,实现采集环境的温度、湿度、烟雾等参数的设 定,在液晶屏上显示出来。
基于ARM的步进电机控制系统的设计与实现
要求:在ARM开发平台下,实现步进电机的驱动,可通过实验平台上的电位器调整电机的转速,或者用按键控制电机的运转。ARM实验平台的Android移植
要求:将开源的Android平台移植到ARM实验平台下。
基于ARM的CAN总线通讯系统设计与实现
要求:在嵌入式ARM平台CAN通信程序,实现两个ARM平台或ARM与其它设备的CAN通信。可将CAN总线接收到的数据通过串口输出,同时可将串口接收到的数据通过CAN总线接口发送出去。
基于ARM的RS485通讯系统设计与实现
要求:在嵌入式ARM平台及Linux环境下编程RS485通信程序,实现两个ARM平台或ARM与PC机之间RS485通信。
基于ARM的嵌入式Web服务器设计与实现
要求:在嵌入式ARM平台及Linux环境下移植一个嵌入式Web服务器(如BOA或THTTPD),并实现基于ARM平台的Web动态网页监测系统。
基于ARM的嵌入式数据采集系统设计与实现 要求:在嵌入式ARM平台下编写ADC接口的模入/模出程序,实现基于ARM平台的嵌入式3路模拟信号的数据采集,并将采集到的数据通过串口或液晶输出结果。
基于ARM的无线数据终端设计
要求:用ARM处理器作为主控器,与GPRS模块进行通信,能够实现收发短信、拨打接听电话、连接数据服务器等功能。基于ARM的无线数据采集系统设计
要求:用ARM处理器作为主控器,与GPRS模块进行通信,通过发送短信到平台上获取平台采集到的数字量信息(温度、湿度、电压等信息)。基于嵌入式系统的无线传感器网络的应用研究
要求:(无线传感器网络是集成了传感器、嵌入式系统、网络和无线通信四大技术而形成的一种全新的信息获取和处理技术,它是一种新型的无基础设施的无线网络,能够实时监测、感知和采集各种环境或监测对象的信息,并对其进行处理、传送到需要这些信息的用户)基于UcosII在ARM平台上的移植 要求:将UcosII移植到ARM9或者ARM11平台上
MPlayer播放器在ARM9(或ARM11)平台上的移植与实现
基于ARM的建议GUI的设计
要求:设计一个简易的GUI界面,在ARM平台下运行,并实现简单的交互。要求:将MPlayer播放器移植到ARM平台上,并且能够运行 基于ARM的TCP网络通讯系统设计与实现
要求:在嵌入式ARM平台及Linux环境下编写以太网接口的TCP通讯程序,实现两个ARM平台或ARM与PC机之间的TCP协议通讯系统。
基于ARM的UDP网络通讯系统设计与实现
要求:在嵌入式ARM平台及Linux环境下编写以太网接口的UDP通讯程序,实现两个ARM平台或ARM与PC机之间的UDP协议通讯系统。
基于ARM和MiniGUI的嵌入式图形用户界面设计与实现
要求:在嵌入式ARM平台及Linux环境下,采用MiniGUI图形界面编程方法,实现基于ARM平台和MiniGUI图形界面的嵌入式测控操作平台。
基于ARM和QT的嵌入式图形用户界面设计与实现
要求:在嵌入式ARM平台及Linux环境下,采用QT图形界面编程方法,实现基于ARM平台和QT图形界面的嵌入式测控操作平台。
基于ARM和Linux的步进电机控制系统设计与实现
要求:在嵌入式ARM平台及Linux环境下,编程实现基于ARM平台的步进电机控制系统方案。
基于ARM和Linux的直流电机控制系统设计与实现
要求:在嵌入式ARM平台及Linux环境下,编程实现基于ARM平台的直流 电机控制系统方案。
基于ARM和Linux的CAN总线通讯系统设计与实现
要求:在嵌入式ARM平台及Linux环境下编写CAN总线通信程序,实现两个ARM平台或ARM与PC机之间CAN总线通信。
基于ARM和Linux的CAN总线远程监控系统研究与设计
要求:在嵌入式ARM平台及Linux环境下编写CAN总线通信程序,并设计和实现一个基于ARM平台CAN总线远程监控系统。
基于ARM的视频监控系统设计与实现
要求:在嵌入式ARM平台及Linux环境下,采用USB接口的摄像头模块,设计和实现基于ARM平台视频监控系统。
基于ARM的Modbus/TCP主站协议程序设计与实现
要求:在嵌入式ARM平台及Linux环境下,基于ARM平台的RJ-45以太网接口,设计和实现基于ARM平台Modbus/TCP主站协议程序,该Modbus/TCP主站协议可与基于ARM平台或PC机的Modbus/TCP从站协议实现通讯。
基于ARM的Modbus/TCP从站协议程序设计与实现
要求:在嵌入式ARM平台及Linux环境下,基于ARM平台的RJ-45以太网接口,设计和实现基于ARM平台Modbus/TCP从站协议程序,该Modbus/TCP 从站协议可与基于ARM平台或PC机的Modbus/TCP主站协议实现通讯。
基于ARM和Linux的嵌入式测控系统研究与设计
要求:在嵌入式ARM平台及Linux环境下,可在ARM平台的AD/DA、串口、以太网接口、CAN总线接口等基础上,采用QT或MiniGUI图形用户编程方法,设计和实现基于ARM平台和Linux的嵌入式综合测控系统。
Mplay在Linux平台下的移植与实现
要求:将Mplayer移植到嵌入式实验平台下,可实现视频和音频文件的播放。
基于S3C2410/S3C2440的嵌入式Web服务器Boa移植
要求:将实验箱或开发板连接到网络中,可以通过计算机访问到开发板上的静态网页。
第二篇:《嵌入式系统》课程设计题目
《嵌入式系统》
课程设计题目及要求
设计报告要求:
1.课题研究意义、现状及应用分析; 2.课题总体方案设计及功能模块介绍; 3.系统硬件平台及接口设计;
4.系统软件功能设计,包括必要的注释; 5.总结、心得体会; 6.附主要的参考文献。
课程设计题目:(以下题目仅供参考,可自拟题目)
基于ARM的LED点阵显示系统的设计与实现
要求:在ARM开发平台下,实现接收串口发送的数据,在16*16的点阵屏上显示,按键上设置几个固定显示内容,当按下相应的按键时,点阵屏上显示相应的内容。
基于ARM的环境监测系统的设计与实现
要求:在ARM开发平台下,实现采集环境的温度、湿度、烟雾等参数的设定,在液晶屏上显示出来。基于ARM的步进电机控制系统的设计与实现
要求:在ARM开发平台下,实现步进电机的驱动,可通过实验平台上的电位器调整电机的转速,或者用按键控制电机的运转。ARM实验平台的Android移植
要求:将开源的Android平台移植到ARM实验平台下。
基于ARM的CAN总线通讯系统设计与实现
要求:在嵌入式ARM平台CAN通信程序,实现两个ARM平台或ARM与其它设备的CAN通信。可将CAN总线接收到的数据通过串口输出,同时可将串口接收到的数据通过CAN总线接口发送出去。
基于ARM的RS485通讯系统设计与实现
要求:在嵌入式ARM平台及Linux环境下编程RS485通信程序,实现两个ARM平台或ARM与PC机之间RS485通信。
基于ARM的嵌入式Web服务器设计与实现
要求:在嵌入式ARM平台及Linux环境下移植一个嵌入式Web服务器(如BOA或THTTPD),并实现基于ARM平台的Web动态网页监测系统。
基于ARM的嵌入式数据采集系统设计与实现
要求:在嵌入式ARM平台下编写ADC接口的模入/模出程序,实现基于ARM平台的嵌入式3路模拟信号的数据采集,并将采集到的数据通过串口或液晶 输出结果。
基于ARM的无线数据终端设计
要求:用ARM处理器作为主控器,与GPRS模块进行通信,能够实现收发短信、拨打接听电话、连接数据服务器等功能。基于ARM的无线数据采集系统设计
要求:用ARM处理器作为主控器,与GPRS模块进行通信,通过发送短信到平台上获取平台采集到的数字量信息(温度、湿度、电压等信息)。基于嵌入式系统的无线传感器网络的应用研究
要求:(无线传感器网络是集成了传感器、嵌入式系统、网络和无线通信四大技术而形成的一种全新的信息获取和处理技术,它是一种新型的无基础设施的无线网络,能够实时监测、感知和采集各种环境或监测对象的信息,并对其进行处理、传送到需要这些信息的用户)基于UcosII在ARM平台上的移植 要求:将UcosII移植到ARM9或者ARM11平台上
MPlayer播放器在ARM9(或ARM11)平台上的移植与实现
基于ARM的建议GUI的设计
要求:设计一个简易的GUI界面,在ARM平台下运行,并实现简单的交互。
基于ARM的TCP网络通讯系统设计与实现
要求:在嵌入式ARM平台及Linux环境下编写以太网接口的TCP通讯程序,要求:将MPlayer播放器移植到ARM平台上,并且能够运行 实现两个ARM平台或ARM与PC机之间的TCP协议通讯系统。
基于ARM的UDP网络通讯系统设计与实现
要求:在嵌入式ARM平台及Linux环境下编写以太网接口的UDP通讯程序,实现两个ARM平台或ARM与PC机之间的UDP协议通讯系统。
基于ARM和MiniGUI的嵌入式图形用户界面设计与实现
要求:在嵌入式ARM平台及Linux环境下,采用MiniGUI图形界面编程方法,实现基于ARM平台和MiniGUI图形界面的嵌入式测控操作平台。
基于ARM和QT的嵌入式图形用户界面设计与实现
要求:在嵌入式ARM平台及Linux环境下,采用QT图形界面编程方法,实现基于ARM平台和QT图形界面的嵌入式测控操作平台。
基于ARM和Linux的步进电机控制系统设计与实现
要求:在嵌入式ARM平台及Linux环境下,编程实现基于ARM平台的步进电机控制系统方案。
基于ARM和Linux的直流电机控制系统设计与实现
要求:在嵌入式ARM平台及Linux环境下,编程实现基于ARM平台的直流电机控制系统方案。基于ARM和Linux的CAN总线通讯系统设计与实现
要求:在嵌入式ARM平台及Linux环境下编写CAN总线通信程序,实现两个ARM平台或ARM与PC机之间CAN总线通信。
基于ARM和Linux的CAN总线远程监控系统研究与设计
要求:在嵌入式ARM平台及Linux环境下编写CAN总线通信程序,并设计和实现一个基于ARM平台CAN总线远程监控系统。
基于ARM的视频监控系统设计与实现
要求:在嵌入式ARM平台及Linux环境下,采用USB接口的摄像头模块,设计和实现基于ARM平台视频监控系统。
基于ARM的Modbus/TCP主站协议程序设计与实现
要求:在嵌入式ARM平台及Linux环境下,基于ARM平台的RJ-45以太网接口,设计和实现基于ARM平台Modbus/TCP主站协议程序,该Modbus/TCP主站协议可与基于ARM平台或PC机的Modbus/TCP从站协议实现通讯。
基于ARM的Modbus/TCP从站协议程序设计与实现
要求:在嵌入式ARM平台及Linux环境下,基于ARM平台的RJ-45以太网接口,设计和实现基于ARM平台Modbus/TCP从站协议程序,该Modbus/TCP从站协议可与基于ARM平台或PC机的Modbus/TCP主站协议实现通讯。基于ARM和Linux的嵌入式测控系统研究与设计
要求:在嵌入式ARM平台及Linux环境下,可在ARM平台的AD/DA、串口、以太网接口、CAN总线接口等基础上,采用QT或MiniGUI图形用户编程方法,设计和实现基于ARM平台和Linux的嵌入式综合测控系统。
Mplay在Linux平台下的移植与实现
要求:将Mplayer移植到嵌入式实验平台下,可实现视频和音频文件的播放。
基于S3C2410/S3C2440的嵌入式Web服务器Boa移植
要求:将实验箱或开发板连接到网络中,可以通过计算机访问到开发板上的静态网页。
1.ARM-Linux 嵌入式系统在农业大棚中的应用(温度、湿度和二氧化碳浓度是影响棚栽农作物生长的3 大要素。为了实现农业大棚中这3 种要素数据的远程实时采集,引入了当前嵌入式应用中较为成熟的ARM9 微处理器和Linux 嵌入式操作系统技术, 采用温度传感器PH100TMPA、湿度传感器HM1500 和二氧化碳浓度传感器NAP221A ,设计一种基于TCP/ IP 协议的嵌入式远程实时数据采集系统方案。从硬件设计和软件实现2 方面对该系统进行具体设计。)
2.ARM系统在LED显示屏中的应用(利用ARM系统控制彩色LED显示屏)
3.ARM 嵌入式处理器在智能仪器中的应用(设计一种基于ARM 嵌入式处理器系统的智能仪器的硬件和软件设计方案, 并结合uc/o s2II或者 Linux嵌入式实时操作系统, 给出一套完整的任务调度和管理的方法, 最后用实例说明)
4.ARM系统在汽车制动性能测试系统中的应用(采用ARM系统构建一个路试法的汽车制动性能测试系统)
5.ARM 嵌入式控制器在印染设备监控中的应用(针对拉幅热定型机,设计一种基于485 总线的分布式监控系统。用ARM 嵌入式控制器实现主、从电机的同步运行和烘房温度的控制;在PC 机上用VB6.0 设计转速和温度的监控画面;实现ARM、变频器和PC 机之间的数据通信。)
6.基于ARM系统的公交车多功能终端的设计(完成电子收费、报站、GPS定位等功能)
7.基于ARM9的双CAN总线通信系统的设计(设计一种基于ARM9内核微处理器的双路CAN总线通信系统。完成系统的总体结构、部分硬件的设计,系统嵌入式软件的设计,包括启动引导代码U214118操作系统内核、文件系统以及用户应用管理软件四个部分。)
8.基于ARM9 和Linux 的嵌入式打印终端系统(嵌入式平台上的打印终端的外围电路连接设计、嵌入式Linux 的打印机驱动程序开发和应用程序的开发)9.基于ARM 的车载GPS 终端软硬件的研究(重点研究基于ARM 的导航系统的软硬件设计)10.ARM系统在B超系统中的应用(完成系统软件硬件设计,包括外围电路)
11.基于ARM 的嵌入式系统在机器人控制系统中应用(提出一种基于ARM、DSP 和arm-linux 的嵌入式机器人控制系统的设计方法, 完成控制系统的功能设计、结构设计、硬件设计、软件设计)
12.基于ARM的视频采集系统设计(完成系统软件硬件设计,包括外围电路,采用USB接口的摄像头)13.基于ARM的高空爬壁机器人控制系统(构建一种经济型的爬壁机器人控制平台, 与上位机视觉定位和控制系统结合,使其适用于导航与定位、运动控制策略、多机器人系统体系结构与协作机制等领域。)14.基于ARM 嵌入式系统的拟人机器人控制器的设计(提出在拟人机器人控制器的设计中使用ARM 9 处理器S3C2410 和RT2Linux构建小型拟人机器人控制器的系统架构, 从硬件和软件上实现以拟人机器人的行走的控制。)
15.基于ARM嵌入式系统的软测量应用(在基于Windows CE或者Linux操作系统的ARM嵌入式系统上实现一套通用工业过程软仪表。选用ARM嵌入式系统作为硬件平台, 基于普通PC 机上的嵌入式应用软件开发包EmbededVC + + 开发, 应用双重RBF 神经网络的模型作为软测量的数学模型。该软件包采用面向对象的软件体系结构,模块可以划分为系统调度、数据预处理、系统组态、核心算法、通讯和人机界面等6 个模块。)
16.基于CAN与嵌入式Linux的经济型数控系统(设计了一种基于CAN总线的嵌入式L inux215D数控系统,要求系统具有很好的开放性, 分布性和实时性)
17.基于ARM和GPRS的无线数据通信系统设计(完成基于ARM和GPRS的无线数据通信系统的软件硬件设计)
18.基于S3C2410平台与嵌入式Linux 的图像采集应用(在基于嵌入式Linux 系统的S3C2410平台和在平台上进行开发所需的软件环境上实现图像采集这一应用,完成图像采集程序的实现,和JPEG 压缩的实现。)
19.基于uC/OSⅡ和ARM 芯片L PC2119 的基础上,研究μC/ OS-Ⅱ在鱼雷制导系统中的应用,成为系统软件和硬件设计)国防生 109.嵌入式系统设计中FLASH 存储器的应用研究(利用嵌入式微控制器实现对FLASH 的读取、编程和擦除操作, 为嵌入式系统功能扩展解决存储空间不足的瓶颈问题, 提供一个可靠的解决方案,完成系统的软件和硬件设计)
110.嵌入式系统网络接口模块设计(采用高速高性能的L PC2132 微控制器与以太网控制器ENC28J 60 和接口芯片MAX232 相连接实现网络接口模块软件和硬件设计)
111.嵌入式系统网络接口模块设计(设计基于TCP/IP的网络接口模块的软件和硬件设计)
112.嵌入式系统在DSP 与网络接口中的应用研究(根据嵌入式系统组成及其特点, 完成嵌入式系统在DSP与网络接口中的软件和硬件设计)
113.嵌入式系统在EPON系统开发中的应用研究(以PASSAVE公司提供的EPON解决方案为基础,利用PASSAVE公司的MAC控制芯片APS5001和APS6201开发OTL和ONU,对EPON的实际应用进行研究)114.嵌入式系统在LED大屏幕异步控制器中的应用研究(设计一款基于32位高性能ARM处理器和uC/OS-II的LED大屏幕异步控制器,充分利用uC/OS-II高效的多任务管理功能和ARM处理器强大的运算能力,实现单屏幕多窗口的任意位置显示,使得屏幕显示内容变得更加丰富,显示方式变得更加灵活)115.基于嵌入式系统的VGT:(variablegeometieturbine)涡轮增压器控制器的应用研究(对SOCP用于VGT等现代工业控制进行一些研究,包括嵌入式处理器系统、接口系统、DSP系统、数字通信系统、存储电路及数字系统)
116.嵌入式系统在变电站继电器保护系统中的应用研究(完成系统的软件和硬件的设计)117.嵌入式系统在变电站综合自动化系统中的应用研究(本装置主要用于企业内部变电站电力线路保护的应用,设计一种基于ARM和嵌入式实时操作系统的微机线路保护装置,实现保护、测量和通信功能)118.嵌入式系统在车辆导航监控系统中的应用研究(结合GPS全球卫星定位技术、GIS地理信息处理技术、CDMA数据通信技术以及嵌入式系统等高新技术对嵌入式系统在车辆监控系统的应用进行研究,实现 具备全天候定位、视频图像采集与无线传输等功能的GPS车辆监控系统)
119.嵌入式系统在车载导航中的应用研究(对嵌入式技术在车载导航系统中应用的关键技术进行研究)120.嵌入式系统在抽油机无线监控中的应用研究(以嵌入式系统为主控单元,以GSM网络为数据通讯介质的抽油机无线监控系统的软件和硬件设计)
121.嵌入式系统在船舶监控系统中的应用研究(完成系统的软件和硬件设计)122.嵌入式系统在大型设备无线故障诊断中的应用研究(针对某大型装备对故障诊断系统的智能化和便携化要求,提出一种基于无线嵌入式系统检测技术的在线监测与故障诊断的方案,各检测终端固化于装备上,主机与各智能检测终端通过无线网络通讯,从而免去了主机与各终端间的连接电缆,实现了诊断系统的小型化和智能化)国防生
123.嵌入式系统在道路检测系统中的应用研究(采用TI 高性能的DSP C5507 作为道路图像核心处理元件,实现道路信息的提取和视频图像的J PEG2000 压缩.同时采用Motorola 公司的MCF5307 实现系统的任务调度和道路信息的网络传输,完成了嵌入式μClinux 操作系统的移植,实现在道路检测系统中的组网应用)
124.嵌入式系统在电机远程监测中的应用研究(针对电机系统这一关键设备的远程网络监测,提出了在ARM处理器(主机)上运行嵌入式操作系统,远程监控客户机的网络监测方案)
125.嵌入式系统在电力通信服务器中的应用一人机界面设计(研究基于嵌入式Linux的电力通信服务器开发技术;硬件系统采用ARM9处理器;软件功能的实现与完善主要基于Linux操作系统及开发环境;利用嵌入式图形界面开发工具MniiGUI设计用户界面)
126.嵌入式系统在电子警察中的应用研究(完成智能综合电子警察自动监测系统的软件和硬件的设计)127.嵌入式系统在断路器智能控制中的应用研究(完成基于嵌入式系统的断路器智能控制器的软件和硬件设计)
128.嵌入式系统在多端口电缆气压采集器中的应用研究(针对目前国内电缆气压采集器的现状及存在的问题,针对这些问题提出解决方案,并从硬件和软件两个角度对解决方案中采用的嵌入式系统(AT91RM9200 + Linux)为核心的采集器进行软硬件设计)
129.嵌入式系统在发射装置中的应用研究(完成系统的软件和硬件设计)国防生
130.嵌入式系统在高速织机控制中的应用研究(将嵌入式系统应用于高速织机控制系统,对其硬件的关键部分(嵌入式处理器的控制接口部分)和软件进行设计)
131.嵌入式系统在工程地震仪的应用研究(完成基于ARM处理器和嵌入式操作系统Windows CE.Net的微型工程地震仪的软件和硬件设计)
132.基于嵌入式实时操作系统的嵌入式控制系统研究(完成系统的软件和硬件设计)
133.嵌入式系统在工业控制中的应用研究(完成一个嵌入式工业控制系统的软件和硬件设计)
134.嵌入式系统在工业以太网监控中的应用研究(嵌入式系统在以太网工业监控中主要担当的任务是将现场的各种输入信号转换成可以直接连入以太网的输出信号,并实时接受远程客户端控制和访问,完成嵌入式现场终端的软件和硬件设计)
135.嵌入式系统在过电流保护装置中的应用研究(完成系统的软件和硬件设计)
136.嵌入式系统在环保监测领域内的应用研究(研制适用于环境监测系统实时性传输要求的监测传输控制器。采用GPRS或CDMA方式,解决原有监测传输控制器的费用高、覆盖范围小的问题。并实现了系统中随意增加或减少污染源的监测点)137.嵌入式系统在环境监控中的应用研究(采用嵌入式技术环境监控系统,通过嵌入式网络监控编码器实现本地压缩和存储,同时把音视频数字信号通过网络传送到监控中心,使客户端能在PC 上基于Windows系统即可实时的查看到监控信息)
138.嵌入式系统在机房监控中的应用研究(利用嵌入式机房监控系统,解决机房监控系统的远程控制、程序维护等问题)
139.嵌入式系统在机器人视觉中的应用研究(开发一种通用的嵌入式系统平台, 进行操作系统的移植和图 像匹配等算法的研究, 并将其应用于移动机器人的视觉导航)
140.嵌入式系统在激光测量中的应用研究(利用嵌入式系统对激光测距仪进行控制及数据通信和处理, 并把参数显示在屏幕上)
141.嵌入式系统在加油站信息管理系统的应用研究(对加油站储油罐油品信息的采集是掌握成品油销售、库存等信息的重要手段,通过对罐内油品液位、温度、油气浓度的实时监控,石油公司就可以直接或间接地获取油品销售过程中各种信息)
142.嵌入式系统在静力测量中的应用研究(研究嵌入式系统在静力测量中的应用,目标机作为嵌入式系统应用平台,充分考虑系统的功能、可扩展性、功耗和体积要求,制定相应的组成模块。硬件系统由核心板和扩展板构成;而软件系统由引导程序、操作系统和文件系统组成)143.嵌入式系统在军用电子设备故障诊断中的应用研究(电子装备现有的故障诊断系统一般无法完成装备工作过程中的实时在线状态监测。利用多种非接触式的传感器信息融合技术、以太网网络通信技术, 设计现场级嵌入式状态监测系统, 采用嵌入式微处理器构建最小系统实现实时地对系统各个重要部分进行信号采集和在线状态监测, 为在线智能故障诊断系统提供诊断信息)国防生
144.嵌入式系统在楼宇设备监控系统中的应用研究(以高性能的32位嵌入式芯片ARM920T为平台,以楼宇变配电监控系统为应用对象,针对系统各个构成部分进行研究开发)
145.嵌入式系统在螺纹探伤仪中的应用研究(钻具事故主要是由于钻具螺纹部分产生疲劳断裂而造成的。利用涡流原理研制出了钻具螺纹专用无损检测仪器,该仪器由于采用了嵌入式网络模块ETR100 ,利用C 语言进行复杂的计算编程,简化外围电路的设计,无需标准试块进行标定)146.嵌入式系统在气浮转台无线测控实验中的应用研究(完成基于实时嵌入式系统的气浮转台无线测控通信子系统的软件和硬件设计)
147.嵌入式系统在数控零编程滚齿机中的应用研究(将嵌入式技术与数控零编程思想相结合,以μCOS2Ⅱ实时操作系统为核心,建立一套具有友好人机界面的零编程数控系统。突破传统的手工编写数控程序的方法,实现NC程序的自动生成;而且通过USB接口将系统巧妙的设计成了一个可移动的存储器,间接的扩大数控系统的存储容量;通过RS232串口,系统还能与滚齿机床实现NC程序的上传和下载,构成一个集NC程序自动生成、存储和传输的集成化系统)
148.嵌入式系统在铁路道口报警系统中的应用研究(完成嵌入式铁路平交道口自动报警系统的软件和硬件设计)
149.嵌入式系统在网络化销售系统中的应用研究(完成基于嵌入式处理器、嵌入式Linux 和GPRS 的网络化销售系统的软件和硬件设计)
150.嵌入式系统在微机继电保护中的应用研究(完成基于ARM9 和μC/OS-II 的微机继电保护系统的设计方案。系统以AT91RM9200 芯片为核心构成高速保护装置,利用实时嵌入式操作系统μC/OS-II,完成复杂的继电保护,而且保证装置的处理速度)
151.嵌入式系统在线路多参数自动测量系统中的应用研究(利用嵌入式系统控制多个传感器同时测量轨道线路,通过特定算法计算出线路不平顺程度,指导线路养护维修工作,确保列车运行安全)
152.嵌入式系统在相关处理机中的应用研究(利用FPGA和嵌入式系统实现千兆以太网传输系统,并将该系统应用在硬件相关处理机中。改善现有系统对LTA数据的采集和传送,而且缩短后处理的时间)153.嵌入式系统在消弧线圈接地系统中的应用研究(完成系统的软件和硬件设计)
154.嵌入式系统在心脏疾病检测中的应用研究(以嵌入式系统为平台,设计无线远程心电监护系统和心音分析仪,综合运用嵌入式单片机技术、无线射技术、嵌入式TCP/IP网络技术、USB通信技术等)155.嵌入式系统在新型矿用充电机中的应用研究(设计以嵌入式微控制器S3C44B0X为核心的控制电路所组成的新型矿用充电机,对基于ARM核嵌入式系统的PWM输出电路、高精度的检测电路、人机接口电路和保护电路的软件和硬件进行设计)156.嵌入式系统在信息家电网络中的应用研究(针对多总线、多协议的传统智能家居系统管理不方便,可操作性差等缺点,提出一种基于嵌入式系统,通过RTL8019AS 以太网芯片实现和以太网通信的方案)
157.嵌入式系统在蓄电池充电中的应用研究(完成系统的软件和硬件设计)
158.嵌入式系统在液晶电光特性测试中的应用研究(完成一种智能液晶电光特性测试仪的设计,该设计以ARM9微处理器为控制和数据处理核心,并引入WINDOWS CE操作系统,带有用户图形界面,操作简单,可实现对液晶电光特性参数的智能测量和数据图形的显示输出)
159.嵌入式系统在医疗监护领域中的应用研究(以Intel公司的PXA255系列处理器,Linux在嵌入版本,MINIGUI图形工具包为平台,研究医疗嵌入式电子产品软件研发的技术特点)
160.嵌入式系统在医疗仪器上的应用研究(研究嵌入式系统在医疗仪器上应用的可能性、方法)
161.嵌入式系统在远程复位控制中的应用研究(设计基于嵌入式系统在远程复位控制器,系统采用微控制器作为控制核心,MT8870为音频解码芯片,以PSTN公话网为信号传输控制介质)
162.嵌入式系统在远程监控中的应用研究(对嵌入式系统进行软硬件的选择和设计。从价格、性能和功耗三方面考虑,核心硬件设计选用基于AR划7TDMI的32位处理器S3C44BOX作为主控芯片。软件分两部分:一是嵌入式操作系统的选择,二是在对TCP/PI协议理解的基础上,选择了一种适用于嵌入式系统的协议栈,并将其移植到嵌入式系统中)
163.嵌入式中央储备粮直属库远程监控系统设计(以中央储备粮某直属库远程自动监控系统项目为背景,完成嵌入式远程自动监控终端的设计。系统软件设计采用结构化设计中的模块化程序设计方法,根据功能的不同进行模块的划分,功能模块包括底层设备驱动模块、用户界面模块、GPRS 网络模块、通信协议模块等。嵌入式中央储备粮直属库远程监控系统实现粮库的分散控制与集中管理,和粮库的智能控制)
164.嵌入式系统在远程图像监控系统中的应用研究(完成系统的软件和硬件设计)
165.嵌入式系统在智能电梯中的应用研究(完成一种应用于电梯控制系统中的新型、高效的嵌入式控制系统的软件和硬件设计)
166.嵌入式系统在智能交通中的应用研究(根据嵌入式系统产品在ITS(In2telligent Traffic System ,智能交通系统)应用中的工作稳定性高、环境适应能力强和设备独立性三个特点,探讨嵌入式系统在智能交通系统中应用)
167.嵌入式系统在中小型水电站中的应用研究(完成系统的软件和硬件设计)168.嵌入式系统在自动化仪表中的应用研究(选择高性能的嵌入式微处理器,研究新型智能化、网络化的仪器仪表)
169.嵌入式语音识别及控制技术在智能家居系统中的应用研究(完成基于语音识别控制的智能家居系统方案设计。系统分软件和硬件两部分,上位机实现语音采集和识别、处理,发出相应的动作命令,通过串行通信,构成串行控制网络,控制具备符合接口规范的设备,通过语音实现对家用电器的遥控。对语音识别技术进行研究。经分析比较,采用基于HMM识别算法的MicrosoftSpeech SDK语音开发平台进行开发)
170.嵌入式远程数据采集系统技术的应用研究(利用嵌入式数据采集模块和网络通信技术,将分散的现场数据采集后传送到数据服务器进行集中处理)
171.嵌入式在小型网络视频服务器中的应用研究(完成一种基于嵌入式系统的小型网络视频服务器硬件和软件设计)
172.嵌入式在液位监控系统中的应用研究(针对液位远程监控的要求,把嵌入式与Internet技术相结合,采用了B /S(Browser/Server)模式对液位实施远程监控。在控制策略上,则采用九点控制算法,对液位实行控制。用户只需要在其他计算机上利用通用的网页浏览器,通过以太网访问监控页面的形式进行监控)。173.嵌入式智能代理在制造系统中的应用研究(多代理技术(Multi2Agent)在制造系统中的应用,提高了制造系统的柔性,智能性和可重构性。采用嵌入式技术和智能代理技术相结合的嵌入式智能代理技术,实现多代理系统中设备智能代理的方案。该智能代理以嵌入式微控制器ARM为硬件核心,以嵌入式实时操作系统μC /OS2Ⅱ为软件平台。各智能代理间通过以太网实现互连和信息交互,共同协调完成加工任务)174.嵌入式智能机器人路径规划应用研究(研究智能机器人路径规划算法的研究现状, 指出各种算法的优 缺点, 提出建立嵌入式智能机器人路径规划平台, 实现基于嵌入式实时系统的智能机器人路径规划算法)
175.嵌入式状态监测与故障诊断装置的设计(将工业以太网技术应用于工业设备监控系统,实现基于32 位高性能处理器AT91RM9200 的嵌入式远程状态监测与故障诊断装置)
176.嵌入式系统在变电站控制系统中的应用研究(完成系统的软件和硬件设计)177.一种嵌入式微调度器的实现方法研究(分析常见嵌入式操作系统的任务调度算法,提出一种新的应用于智能仪表的实时任务调度算法,并在典型的8 位、16 位SoC 上进行设计,实现基于这种算法的嵌入式操作系统)
178.在嵌入式系统开发中仿真软件的特殊应用研究(在开发工业控制系统配套软件过程中应用嵌入式仿真软件)
179.占先式实时内核μC/ OS2II 在车辆动态监控/ 调度实验平台中的应用研究(为了满足车辆动态监控/ 调度实验平台车辆模拟系统实时多任务工作的需要,在系统主控CPU TMS320L F2407A 上移植嵌入式实时操作系统(RTOS)μC/ OS2 II ,开发基于μC/ OS2 II 内核的实时多任务软件系统,以满足系统正常工作时对多路传感器数据和上位机控制信息的实时处理。在μC/ OS2II 内核移植的基础上,按照系统需要划分任务、确定任务优先级、实现任务间通信和同步的具体方法进行研究)
180.实时嵌入式操作系统在单片机中的应用研究(在MCS - 51 系列单片机上移植μ C/OS - II 实时嵌入式操作系统)
第三篇:嵌入式系统课程设计
《嵌入式系统概论》综合设计报告书
设计题目:用键盘控制LED显示不同图形
中央民族大学 二零零八年十月三十一日
一、设计目的
了解LED点阵和矩阵键盘的工作原理。
二、设计内容
编写程序控制用矩阵键盘控制LED点亮,产生不同的图形。
三、设计方案
功能概述:
本设计要实现的功能是通过键盘控制LED点阵图形显示,如果键盘输入0-9十个数字时显示相应的数字,如果输入其他的键,则显示“+”号。
1、程序设计思路
本设计要实现键盘控制LED点阵图形显示,就必须要编写键盘和LED点阵的程序。先通过扫描矩阵键盘,得到键盘值,然后再调用点阵显示子函数,根据扫描的键盘值,在LED点阵上显示不同的图形。
2、主程序设计
主程序要实现的功能是矩阵键盘扫描,得到键盘值,然后把值传给LED显示函数。
程序流程图如下:
3、LED点阵显示函数设计
本函数要实现的功能是根据键盘的值,在LED点阵上显示不同的图形。如果键盘的输入值为0-9则显示相应的数字,如果输入的是其他值,则显示“+”。本程序采用二维数组存放要显示的图形的字模,然后再通过逐行扫描LED点阵,把要显示的图形分8次显示,一次显示一行,利用人眼的视觉暂留效应,是人看到的是一个图形一次显示出来,通过一个循环控制图形显示的时间。程序流程图如下:
4、点阵图形设计
根据8*8 LED点阵的原理,8X8 点阵共需要64 个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1 电平,某一行置0 电平,则相应的二极管就亮;
先绘制出要显示的图形如下:
根据图形中点亮的LED灯的位置,得到相应图形的16进制数,存放在二维数组Buf1[11][8]中。
所以要显示的图形的字模如下:
buf1[11][8]={ {0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00},//0
{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},//1
{0x3c,0x20,0x20,0x3c,0x04,0x04,0x3c,0x00},//2
{0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00},//3
{0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00},//4
{0x3c,0x04,0x04,0x3c,0x20,0x20,0x3c,0x00},//5
{0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00},//6
{0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00},//7
{0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00},//8
{0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00},//9
{0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00}
//+
};
四、程序源代码
//*************************************************************** #include
#define DEVICE_NAME “/dev/led_ary_ctl” #define DEVICE_NAME1 “/dev/keypad”
void Key(unsigned char b[]);
//------main----int main(void){
int fd;
int ret;
unsigned char buf[2];
double x;
char pre_scancode = 0xff;
printf(“n start keypad_driver test nn”);
fd = open(DEVICE_NAME1, O_RDWR);
printf(“fd = %dn”,fd);
if(fd ==-1){
printf(“open device %s errorn”,DEVICE_NAME1);}
else {
buf[0]=0x22;
while(1)
{
read(fd,buf,1);
if(buf[0]!= pre_scancode)
{
if(buf[0]!=0xff)
{
printf(“key =%xn”,buf[0]);
Key(buf);
}
}
pre_scancode = buf[0];
usleep(50000);
}
// close
ret = close(fd);
printf(“ret=%dn”,ret);
printf(“close keypad_driver testn”);}
return 0;}// end main //***************************************************************************** //---------------void Key(unsigned char b[]){ int fd;
int ret;
int i,j,k;
unsigned char buf[2];
unsigned char buf2[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char buf1[11][8]={{0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00},//0
{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},//1
{0x3c,0x20,0x20,0x3c,0x04,0x04,0x3c,0x00},//2
{0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00},//3
{0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00},//4
{0x3c,0x04,0x04,0x3c,0x20,0x20,0x3c,0x00},//5
{0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00},//6
{0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00},//7
{0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00},//8
{0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00},//9
{0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00}
//+
};
// begin of led ary
buf[0]= 1;
buf[1]= 0;
if(b[0]<=9)i=b[0];else
i=10;
fd = open(DEVICE_NAME, O_RDWR);
printf(“fd = %dn”,fd);
if(fd ==-1)
printf(“open device %s errorn”,DEVICE_NAME);
else {
for(j=0;j<=5;j++)
{
for(k=0;k<8;k++)
{
buf[0]=buf1[i][k];buf[1]=buf2[k];
write(fd,buf,2);
}
usleep(1);
}
// close
ret = close(fd);
printf(“ret=%dn”,ret);
printf(“close led_driver testn”);} } //-
五、设计结果
实现键盘控制LED点阵显示,输入0-9十个数字时显示相应的数字,如果输入其他的键,则显示“+”号。
六、心得体会
通过本次实验,我们对linux下的实验更加熟悉了,对LED点阵显示和矩阵键盘的原理有了深入的了解,掌握了点阵图形的设计方法和键盘的输入的读取,并把二者结合起来,实现了键盘控制点阵图形现实。
在实验过程中,我们也出现了问题,最开始时,由于不清楚点阵的C,R的高低位的对应情况,经过试验,才确定。然后就是点阵的显示是一闪即过的,然后我们通过循环控制了点阵的显示时间。总之,通过这次设计,我们都学到了很多东西。
第四篇:嵌入式系统课程设计教学大纲
嵌入式系统课程设计教学大纲
课程名称:嵌入式系统A课程(Embedded Systems)课程编号:1310778236 设计时数:1周 学
分:1 开课单位:信息电子技术学院通信工程教研室 适用专业:通信工程 适用对象:本科
一、课程的性质、类型、目的和任务
作为电子信息工程、通信工程专业本科生的必修实践环节,嵌入式系统课程设计要求学生有扎实的理论基础并具备一定动手能力。进入课程设计前要认真复习微处理器类课程中的相关知识和汇编语言、C语言的编程方法。课程设计采用课堂讲述、自学、分组实践相结合的方式,通过分析典型的例子,使学生熟悉并掌握嵌入式系统的开发流程和基本的编程方法。课程设计要求2—3人组成课设小组,在指定范围内选定题目,每组选一题,题目应侧重一个嵌入式系统的具体应用方面。题目选定后,在教师的指导下,学生理解设计原理,分析重要电路单元,计算必要的参数并在此基础上编写程序,最后,在课程设计结束时独立写出理论分析完善、文理通顺、字迹工整的课程设计报告并上交软件程序。教师可根据作品的难易程度、参数指标、编程水平等进行评分。
二、本课程与其它课程的联系与分工
学习该课程之前,学生应学习过《C语言程序设计》、《数字电子技术》,《单片机原理与应用》基础知识。嵌入式系统是它们的总结和提高。
三、课程内容及教学基本要求
[1]表示“了解”;[2]表示“理解”或“熟悉”;[3]表示“掌握”;
学生可从下列题目中任选一个作为嵌入式课程设计题目,也可以根据个人兴趣及实验室现有条件,自己确定题目经教师审核后作为课程设计题目。
(一)单片机控制数码管显示系统的设计
AVR单片机的工作原理[1],嵌入式系统实际开发过程[2],单片机控制数码管的方法[3],师编写程序[3],实现单片机控制数码管显示系统的设计[3]。
(二)矩阵式按键控制LED显示系统
AVR单片机的工作原理[1],嵌入式系统实际开发过程[2],矩阵式按键输入控制信号[3]、通过单片机控制LED显示的过程[3]。单片机定时/计数器的工作原理及使用[3],汇编程序的下载及固化的过程[3],(三)汉字显示系统设计
了解AVR单片机的工作原理[1],液晶驱动芯片的工作原理[1],嵌入式系统实际开发过程[2],单片机控制液晶显示模块的方法[3],编写程序,单片机控制汉字显示系统的设计[3]。
(四)交通灯控制
AVR单片机的工作原理,嵌入式系统实际开发过程[2],ARM7核的LPC2106的管脚功能和特点[1],I/O控制寄存器的设置方法[3];ARM7应用系统编程开发方法[3],能用C语言编写应用程
序[3]; ADS1.2软件的使用以及PROTEUS仿真调试的方法[3];
(五)交通灯设计
ARM芯片[1]; ARM芯片各个引脚的功能[2],工作方式[2],计数/定时[2],I/O口[2],中断[2];利用ARM芯片模拟实现交通灯控制[3]。,工作方式,计数/定时,I/O口,中断等相关原理,通过软硬件设计实现利用ARM芯片完成交通灯的模拟控制[3]
(六)温度采集系统
ARM芯片各个引脚功能[1],工作方式[1],计数/定时[1],I/O口[1],中断[1]。通过软硬件设计实现利用ARM芯片对周围环境温度信号的采集及显示[3] 其他课题见附录:
四、考核方式及要求
1.考核方式:考查;
2.考核方法:平时考勤+设计报告+ 设计答辩; 3.成绩评定:
平时成绩:应根据学习纪律、出勤、等方面综合评定,占10%;
设计报告:根据学生设计报告各部分的完整性和优劣情况评定,占70%; 设计答辩:应根据答辩结果评定,占20%.按优、良、中、及格、不及格五级分制记分。设计报告内容:
1.封面;2.摘要;3.目录;4.总体方案设计分析 ;5.软件框图及程序设计(汇编语言源程序必须加注释说明);6.硬件原理图设计(最好使用电子设计CAD软件绘制);7.设计总结和心得体会。
五、实验教材(指导书)及参考书(资料)
1.王田苗,《嵌入式系统设计与实例开发》,清华大学出版社 2.马忠梅,《ARM嵌入式微处理器体系结构》,北航出版社 3.陈章龙,《嵌入式技术与系统-Intel XScale 结构与开发》,北航出版社
第五篇:嵌入式课程设计 学生信息管理系统
嵌入式课程设计报告册
题目:学生信息管理系统
班级:移动三班
辅导老师:邱雅
一、软件需求分析
1、可行性分析
(1)经济可行性
①:目前中国有越来越多的中小型企业在蓬勃发展,而现代化员工信息管理系统已经逐渐取代了传统的人工信息管理,智能化的管理系统更具有高效性可行性,所以自能管理系统将会成为或正在成为现代化公司员工信息管理的有效方式;
②:这款学生信息管理系统的价格适合所有学校消费群体,将会有很大的应用空间,满足各种学校学生管理的要求;
③:学生系信息管理系统的价格比相对于同类公司员工管理系统产品较低,同时本软件的成本低于同类产品的平均水平,具有很大的利润空间;
④:本系统的开发环境和软件环境都是当前流行的产品,本系统的软件需求都是基本的功能和应用,在现实中很容易实现。
(2)法律可行性
本软件的开发采用C语言作为软件的开发语言,没有采用同类产的代码,完全是自主开发,并按照国际上软件开发的相关规定来实现开发的;
(3)技术可行性
本软件开发系统采用linux开发平台,具有很强的兼容性和扩展性,本软件的占用的内存较小大部分的硬件处理系统都可以兼容,开发语言采用国际通用的C高级编程语言具有很高的维护可行性,经过综合分析我认为现阶段我方所拥有的资源和技术人员,在技术上完全可以实现这款软件的开发,并且能高质量,快速的完成这项工作。
2、用户需求概述
用户需要一个可以简单的实现通讯录功能的简单通讯录系统,分别完成查询,增加,修改,删除的一些简单的功能要求在完成所要求功能的前提下增强与用户的互动,使软件的可操作性增强,此外还可以志愿加入一些新的功能来进行对软件的优化在优化的同时要注意软件基本功能的保障。
二、软件分析与设计
一.功能
1、创建班级
2、输出学生信息
3、按照学号录入学生成绩
4、按照班级录入学生成绩
5、按照学号修改学生成绩
6、按照班级修改学生成绩
7、按照班级统计学生的总成绩
8、按照学号查询学生成绩
9、按照班级输出不及格学生名单及科目
10、按照班级输出学生成绩单
0、退出系统
二.功能模块图:
学生信息管理系统按照创建班级输出学生信息按照学号录入学生成绩按照班级录入学生成绩按照学号修改学生成绩按照班级修改学生成绩按照班级统计学生的总成绩按照学号查询学生成绩班级输出不及格学生名单及科目按照班级输出学生成绩单按照班级输出学生成绩单
图1 系统功能模块图
三、主要功能的实现
程序设计一般由两部分组成 些数据结构具有同样的重要性 保存等外更多的情况是查询
1、学生信息管理
算法和数据结构,合理地选择和实现一个数据结构和处理这,在学生信息管理程序中由于预计记录数比较大能够、删除、。所以选用动态链表保存数据。
由于信息输入量比较大,需要的存储空间大,所以需要采用树的双亲表示法进行信息存储,为了方便采用以下定义。struct student { int num;char name[20];char sex[5];char class[30];int semester;char course[30];int score[3];struct student *next;};
struct list { int class;struct student *head;};2.main()主函数
程序采用模块化设计,主函数是程序的入口各模块独立。可分块调
试均由主函数控制调用控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过 调用主菜单函数得到的返回值,根据该值 调用相应的各功能函数。同时设置一个断点。即当返回值为一定条件时运行break 0;函数结束程序,以免造成死循环。根据菜单的提示进
行需要的操作。
图2 主函数输出界面
开始输入数据否选择是功能选择退出系统结束
图3 程序总体流程图(1)主菜单
直接利用输出函数 printf 输出字符串在屏幕上显示一个菜单并显示一个提示输入 选项输
入数字,将此数字作为菜单函数的返回值返回主函数,主函数根据 这个数字调用相应的功
10-2 所示:
能函数,制作简便,操作简单界面如图
图 4
主菜单界面
由于程序中很多地方用到了字符串输入语句会造成下一个字符不能正确读入为了 在程序调
按照所见即所得的方式直接 用执行了各个函数后能够清晰地看到菜单 并输入新的选项。设计输出函数输出字符串达到菜单效果将精力主要放在程序功能的实现上利用 while循环 语句一直执行 scanf(“%d”,t)语句。让用户输入 数按照整形数据形式输入然后字符串转化
为数字返回主函数。既然是数字选项为什么不用整数格式输入而要按字符串输入。再将其 a 和 b 等 由于类转换呢,如果按照整数格式输入,当用户输入了非数字字 符。例如 表面上看是数字也应将其设为字符 型不同将导致程序出错。所以对于不参与运算的数据
处理。例如电话号码,千万不要设为整数类型,程序设计技巧很多。所以读者在编程调试中应注意并仔细体会。
(2)创建班级
输入记录时按照一条一行的格式输入,每个数据之间用空格分隔,较为清晰且能直接
反映数据之间的关系,但由于 scanf 函数的特性,在输入时数据用回车分隔也是可以的,但与 界面设计不吻合界面.由于记录并不是一次性全部输入而是随时填加和删除的,而预先开辟 n,然后用的空间数往往大于实际的记录数。所以程序设计为首先输入准备输入的记录数
while循环语句循环输信息。
图5 创建列表页面 输出学生信息
该功能的实现主要是
是通过结构体数组中的链表指针进行输出
图6输出全部信息 按照学号录入学生成绩
通过头指针查找到需要录入成绩的节点,录入成绩。
按照班级录入学生成绩
按照学
号
修
改
学
生
成绩
按照班级修改学生成绩
按照班
级
统
计
学
生的总
成绩
按照学
号
查
询
学
生
成绩
按照班级输
出
不
及
格
学
生
名
单
及
科
目(11)按照班级输出学生成绩单
四、程序设计
(一)先进行人工检查,即静态检查。
在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。
为了更有效地进行人工检查,所编的程序应力求做到以下几点:
①应当采用结构化程序方法编程,以增加可读性;
②尽可能多加注释,以帮助理解每段程序的作用;
③在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。
(二)在人工检查无误后,再上机调试。
通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。
如果系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。
(三)在改正语法错误(包括“错误(error)”和“警告(warning)”)后,程序经过连接(link)就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。
有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以很容易判断结果正确与否。例如解方程。事实上,当程序复杂时很难把所有的可能情况全部都试到,选择典型的临界数据作试验即可。
(四)运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法:
1.将程序与流程图仔细对照,如果流程图是正确的,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。
2.如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。
3.也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。当调试完毕,这些语句不用再编译了,也不再被执行了)。这种方法可以不必一一去掉printf函数语句,以提高效率。
4.如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题。如有则改正之,接着修改程序。
5.有的系统还提供debug(调试)工具,跟踪程序并给出相应信息,使用更为方便,请查阅有关手册。
总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经验。在程序调试过程中往往反映出一个人的水平,经验和态度。希望大家给以足够的重视。上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,要学会自己找问题,这样慢慢自己就会写出错误较少的实用程序。
五、代码的实现
#include
#define MAXSIZE 100
struct student { int num;char name[20];char sex[5];char class[30];int semester;char course[30];int score[3];struct student *next;};
struct list { int class;struct student *head;};
void CreatClassStudent(struct list Class[],int n)//创建班级 { char ch;int i;i = 1;struct student *head,*p,*q;head =(struct student *)malloc(sizeof(struct student));q = p = head;while(i <= n){
printf(“输入第%d个班级的信息:n”,i);
struct student *head,*p,*q;
head =(struct student *)malloc(sizeof(struct student));
Class[i].head = p = head;
while(1)
{
printf(“输入学号:n”);
scanf(“%d”,&head->num);
printf(“输入姓名:n”);
scanf(“%s”,head->name);
head->score[0] = 0;
head->score[1] = 0;
head->score[2] = 0;
getchar();
printf(“是否继续?n”);
scanf(“%c”,&ch);
if(ch == 'n')
break;
p =(struct student *)malloc(sizeof(struct student));
head->next = p;
head = p;
}
head->next = NULL;
i++;} }
void print(struct list Class[],int n)//输出学生信息
按照班级输出 {
struct student *p;int i=1;
while(i <= n){
p = Class[i].head;
printf(“移动%d班学生信息n”,i);
while(p!= NULL)
{
printf(“%dt”,p->num);
printf(“%st”,p->name);
printf(“%dt%dt%d”,p->score[0],p->score[1],p->score[2]);
p = p->next;
printf(“n”);
}
printf(“n”);
i++;} }
void StudentId(struct list Class[],int n)//按照学号输入成绩
{ int score1,score2,score3;int t;int key;printf(“输入学号:”);
scanf(“%d”,&key);
int i;i = 1;struct student *p;
while(i <= n){
p = Class[i].head;
while(p!= NULL)
{
if(p->num == key)
{
printf(“输入3门成绩:”);
scanf(“%d%d%d”,&score1,&score2,&score3);
p->score[0] = score1;
p->score[1] = score2;
p->score[2] = score3;
t = 0;
}
p = p->next;
}
i++;} if(t!= 0)
printf(“该学号不存在!n”);}
void ClassId(struct list Class[],int n){ int i = 1;struct student *p;while(i <= n){
printf(“录入%d班级的成绩n”,i);
p = Class[i].head;
while(p!= NULL)
{
printf(“输入学号为%d的学生成绩:”,p->num);
scanf(“%d%d%d”,&p->score[0],&p->score[1],&p->score[2]);
p = p->next;
}
printf(“成绩录入结束n”);
i++;} }
void StudentNumberChange(struct list Class[],int n){ int i = 1;int key;int score1,score2,score3;int t;
printf(“请输入学号:”);scanf(“%d”,&key);struct student *p;while(i <= n){
p = Class[i].head;
while(p!= NULL)
{
if(p->num == key)
{
printf(“请输入新的成绩:”);
scanf(“%d%d%d”,&score1,&score2,&score3);
p->score[0] = score1;
p->score[1] = score2;
p->score[2] = score3;
t = 0;
}
p = p->next;
}
i++;} if(t!= 0){
printf(“该学号不存在!n”);} }
void ClassNumChange(struct list Class[],int n)
{
int class;int score1,score2,score3;char ch;struct student *p;printf(“输入需要修改信息的班级号%d----%d:”,1,n);scanf(“%d”,&class);
p = Class[class].head;
while(p!= NULL)
{
printf(“是否要修改%d的成绩:”,p->num);
getchar();
scanf(“%c”,&ch);
if(ch == 'n')
{
p = p->next;
continue;
}
printf(“输入新的成绩:”);
scanf(“%d%d%d”,&score1,&score2,&score3);
p->score[0] = score1;
p->score[1] = score2;
p->score[2] = score3;
p = p->next;
} }
void TotalGrade(struct list Class[],int n){ int sum = 0;int average;int k;int class;printf(“输入班级号%d------%dn”,1,n);scanf(“%d”,&class);struct student *p;p = Class[class].head;while(p!= NULL){
sum = p->score[0] + p->score[1] + p->score[2];
average = sum / 3;
printf(“%d的总成绩是%d平均成绩是%dn”,p->num,sum,average);
p = p->next;
} }
void QueryResults(struct list Class[],int n){ int i = 1;int key;int t;struct student *p;printf(“请输入学号:”);scanf(“%d”,&key);while(i <= n){
p = Class[i].head;
while(p!= NULL)
{
if(p->num == key)
{
printf(“学号为%d的学生[移动%d班]”,p->num,i);
printf(“%dt%dt%dn”,p->score[0],p->score[1],p->score[2]);
t = 0;
break;
}
p = p->next;
}
if(t!= 0)
{
printf(“该学生不存在于%d班n”,i);
}
i++;} }
void NotPass(struct list Class[],int n){ int class;
printf(“请输入班级号%d---%d:”,1,n);scanf(“%d”,&class);struct student *p;p = Class[class].head;printf(“%d班不及格名单n”,class);while(p!= NULL){
if(p->score[0] < 60 || p->score[1] < 60 || p->score[2] < 60)
{
printf(“%dt%st”,p->num,p->name);
if(p->score[0] < 60)
printf(“语文t%dt不及格t”,p->score[0]);
if(p->score[1] < 60)
printf(“线性代数t%dt不及格t”,p->score[1]);
if(p->score[2]<60)
printf(“英语t%dt不及格t”,p->score[2]);
printf(“n”);
}
p = p->next;} }
void Transcript(struct list Class[],int n){ int class;printf(“请输入班级号:”);scanf(“%d”,&class);struct student *p;p = Class[class].head;while(p!= NULL){
printf(“%dt%st%dt%dt%dn”,p->num,p->name,p->score[0],p->score[1],p->score[2]);
p = p->next;} }
void menu(){ printf(“ 0、退出系统n”);printf(“
1、创建班级n”);printf(“
2、输出学生信息n”);printf(“
3、按照学号录入学生成绩n”);printf(“
4、按照班级录入学生成绩n”);printf(“
5、按照学号修改学生成绩n”);printf(“
6、按照班级修改学生成绩n”);printf(“
7、按照班级统计学生的总成绩n”);printf(“
8、按照学号查询学生成绩n”);printf(“
9、按照班级输出不及格学生名单及科目n”);printf(“
10、按照班级输出学生成绩单n”);}
int main(){ int n;int i;int operation;
struct list Class[MAXSIZE];Class[0].head = NULL;Class[0].class =-1;
printf(“输入班级数量:n”);scanf(“%d”,&n);while(1){
menu();
printf(“请选择操作:”);
scanf(“%d”,&operation);
switch(operation)
{
case 1:CreatClassStudent(Class,n);
break;
case 2:print(Class,n);
break;
case 3:StudentId(Class,n);
break;
case 4:ClassId(Class,n);
break;
case 5:StudentNumberChange(Class,n);
break;
case 6:ClassNumChange(Class,n);
break;
case 7:TotalGrade(Class,n);
break;
case 8: QueryResults(Class,n);
break;
case 9:NotPass(Class,n);
break;
case 10:Transcript(Class,n);
break;
case 0:exit(-1);
} }
return 0;
}
六、参考文献
1、《嵌入式linux上的C语言编程实践》
北京亚嵌教育研究中心、韩超
电子工业出版社
2、《linux 下C语言应用编程》
杨铸
北京航空航天大学出版社
3、《linux 高级程序设计》
杨宗德
邓玉春
人民邮电出版社
七、开发环境
开发环境linux操作系统
GNU Compiler Collection程序生成工具软件