第一篇:《嵌入式系統》課程設計題目
《嵌入式系統》
課程設計題目及要求
設計報告要求:
1.課題研究意義、現狀及應用分析; 2.課題總體方案設計及功能模塊介紹; 3.系統硬件平臺及接口設計;
4.系統軟件功能設計,包括必要的注釋; 5.總結、心得體會; 6.附主要的參考文獻。
課程設計題目:(以下題目僅供參考,可自擬題目)
基于ARM的LED點陣顯示系統的設計與實現
要求:在ARM開發平臺下,實現接收串口發送的數據,在16*16的點陣屏上顯示,按鍵上設置幾個固定顯示內容,當按下相應的按鍵時,點陣屏上顯示相應的內容。
基于ARM的環境監測系統的設計與實現
要求:在ARM開發平臺下,實現采集環境的溫度、濕度、煙霧等參數的設定,在液晶屏上顯示出來?;贏RM的步進電機控制系統的設計與實現
要求:在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模塊進行通信,通過發送短信到平臺上獲取平臺采集到的數字量信息(溫度、濕度、電壓等信息)?;谇度胧较到y的無線傳感器網絡的應用研究
要求:(無線傳感器網絡是集成了傳感器、嵌入式系統、網絡和無線通信四大技術而形成的一種全新的信息獲取和處理技術,它是一種新型的無基礎設施的無線網絡,能夠實時監測、感知和采集各種環境或監測對象的信息,并對其進行處理、傳送到需要這些信息的用戶)基于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平臺的直流電機控制系統方案?;贏RM和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主站協議實現通訊?;贏RM和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 實時嵌入式操作系統)
第二篇:《嵌入式系統》課程設計題目
《嵌入式系統》
課程設計題目及要求
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通信??蓪AN總線接收到的數據通過串口輸出,同時可將串口接收到的數據通過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模塊進行通信,能夠實現收發短信、撥打接聽電話、連接數據服務器等功能?;贏RM的無線數據采集系統設計
要求:用ARM處理器作為主控器,與GPRS模塊進行通信,通過發送短信到平臺上獲取平臺采集到的數字量信息(溫度、濕度、電壓等信息)?;谇度胧较到y的無線傳感器網絡的應用研究
要求:(無線傳感器網絡是集成了傳感器、嵌入式系統、網絡和無線通信四大技術而形成的一種全新的信息獲取和處理技術,它是一種新型的無基礎設施的無線網絡,能夠實時監測、感知和采集各種環境或監測對象的信息,并對其進行處理、傳送到需要這些信息的用戶)基于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移植
要求:將實驗箱或開發板連接到網絡中,可以通過計算機訪問到開發板上的靜態網頁。
第三篇:嵌入式系統課程設計
《嵌入式系統概論》綜合設計報告書
設計題目:用鍵盤控制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()主函數
程序采用模塊化設計,主函數是程序的入口各模塊獨立??煞謮K調
試均由主函數控制調用控制功能的實現通過循環執行一個開關語句,該語句的條件值是通過 調用主菜單函數得到的返回值,根據該值 調用相應的各功能函數。同時設置一個斷點。即當返回值為一定條件時運行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)就得到可執行的目標程序。運行程序,輸入程序所需數據,就可得到運行結果。應當對運行結果作分析,看它是否符合要求。有的初學者看到運行結果就認為沒問題了,不作認真分析,這是危險的。
有時,數據比較復雜,難以立即判斷結果是否正確。可以事先考慮好一批“試驗數據”,輸入這些數據可以很容易判斷結果正確與否。例如解方程。事實上,當程序復雜時很難把所有的可能情況全部都試到,選擇典型的臨界數據作試驗即可。
(四)運行結果不對,大多屬于邏輯錯誤。對這類錯誤往往需要仔細檢查和分析才能發現??梢圆捎靡韵罗k法:
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程序生成工具軟件