版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
承德石油高等專(zhuān)科學(xué)校計(jì)算機(jī)與信息工程系課程設(shè)計(jì)說(shuō)明書(shū)課程名稱(chēng):《數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)》課程設(shè)計(jì)設(shè)計(jì)題目:宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)班級(jí):軟件學(xué)號(hào):姓名:手機(jī):指導(dǎo)教師:學(xué)期:成績(jī)?cè)u(píng)定二0年七月四日摘要二十一世紀(jì)的今天,已經(jīng)是計(jì)算機(jī)的時(shí)代。計(jì)算機(jī)已經(jīng)進(jìn)入了現(xiàn)代社會(huì)的各個(gè)領(lǐng)域,計(jì)算機(jī)世界日新月異地發(fā)展著,在Microsoft公司的Windows操作系統(tǒng)被成千上萬(wàn)的用戶(hù)所使用的今天,開(kāi)發(fā)Windows下的圖形用戶(hù)界面程序?qū)τ趶V大的程序員來(lái)說(shuō)已經(jīng)成為一件刻不容緩的事。開(kāi)發(fā)數(shù)據(jù)庫(kù)程序已經(jīng)一個(gè)重要的領(lǐng)域,如今,各種數(shù)據(jù)庫(kù)的開(kāi)發(fā)出不窮,而C語(yǔ)言以其完美的界面,方便的操作,強(qiáng)大的功能在各種數(shù)據(jù)庫(kù)開(kāi)發(fā)獨(dú)樹(shù)一幟。作為微軟公司的重點(diǎn)產(chǎn)品,C語(yǔ)言具有其它數(shù)據(jù)庫(kù)開(kāi)發(fā)所無(wú)法比擬的優(yōu)勢(shì),它易學(xué)易用,因此得到了廣大軟件開(kāi)發(fā)人員及計(jì)算機(jī)愛(ài)好者的青睞,成為了人們的得力助手。過(guò)去的單位一般都用人工來(lái)管理信息,這樣既不方便又容易發(fā)生錯(cuò)誤,還占用了大量的人員和物資,現(xiàn)在這些已經(jīng)成為過(guò)去,用計(jì)算機(jī)來(lái)管理可以非常容易的實(shí)現(xiàn)這些要求。關(guān)鍵詞:C語(yǔ)言,計(jì)算機(jī)目錄摘要 2目錄 31引言 31.1設(shè)計(jì)目的和意義 31.2問(wèn)題描述與分析 41.3設(shè)計(jì)環(huán)境 42總體設(shè)計(jì)(或概要設(shè)計(jì)) 52.1需求概述 52.2軟件結(jié)構(gòu) 52.3程序邏輯 53詳細(xì)設(shè)計(jì)(或模塊設(shè)計(jì)) 63.1錄入模塊、統(tǒng)計(jì)模塊 63.2修改模塊 74系統(tǒng)實(shí)現(xiàn) 84.1數(shù)據(jù)結(jié)構(gòu)定義 84.2功能函數(shù)設(shè)計(jì) 94.3程序?qū)崿F(xiàn) 95總結(jié) 125.1收獲與體會(huì) 125.2不足與改進(jìn) 126參考文獻(xiàn) 12附 121引言1.1設(shè)計(jì)目的和意義1.目的通過(guò)本次課程設(shè)計(jì),強(qiáng)化上級(jí)動(dòng)手能力,在理論和實(shí)踐的基礎(chǔ)上進(jìn)一步鞏固
《數(shù)據(jù)結(jié)構(gòu)》課程的學(xué)習(xí)內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法。
熟悉C語(yǔ)言的基本內(nèi)容從而掌握C語(yǔ)言的基本知識(shí)以及了解C程序的基本編寫(xiě)及運(yùn)行;了解程序的分模塊編寫(xiě)并對(duì)程序的每個(gè)模塊進(jìn)行詳細(xì)的設(shè)計(jì)并且能理解一般C語(yǔ)言編寫(xiě)的程序。
熟悉C程序設(shè)計(jì)的開(kāi)發(fā)環(huán)境及C程序的調(diào)試過(guò)程。2.意義通過(guò)本課程設(shè)計(jì),強(qiáng)化上機(jī)動(dòng)手能力,使學(xué)生在理論和實(shí)踐的基礎(chǔ)上進(jìn)一步鞏固《數(shù)據(jù)結(jié)構(gòu)》課程學(xué)習(xí)的內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法。通過(guò)這次實(shí)習(xí)練習(xí),可以更進(jìn)一步的熟悉所學(xué)的知識(shí),還可以加強(qiáng)和鞏固知識(shí)。長(zhǎng)達(dá)兩周的上機(jī)練習(xí),為我們提供了很好的編程環(huán)境。更好的了解編程的意義,為將來(lái)參加實(shí)踐活動(dòng)以及以后的畢業(yè)設(shè)計(jì)打下堅(jiān)實(shí)的基礎(chǔ)。1.2問(wèn)題描述與分析據(jù)了解,我校宿管科是管理學(xué)生住宿、出勤、衛(wèi)生、紀(jì)律等方面的后勤部門(mén),屬于后勤集團(tuán)的一部分。住宿方面,他們主管住宿學(xué)生登記,在新生入學(xué)時(shí),一般由新生持入學(xué)通知書(shū)來(lái)辦理各種入學(xué)手續(xù),然后再拿學(xué)校財(cái)務(wù)部門(mén)開(kāi)具的收據(jù)到所在校區(qū)宿舍服務(wù)公司辦理登記手續(xù)。這些大量的登記數(shù)據(jù)形成數(shù)據(jù)庫(kù)。在衛(wèi)生和出勤(早操)檢查方面,有紀(jì)律檢查部的人員定期來(lái)檢查,檢查結(jié)果交送宿舍服務(wù)公司處理,然后再送交各院系。如有違紀(jì)人員,則先交值班室處理然后交各院系,使情況輕重決定是否交給自律委員會(huì)處理。在硬件設(shè)施(如:桌子、凳子、床)方面,如果有壞掉的,到各個(gè)樓的值班室來(lái)報(bào)修,填一張報(bào)修表,然后持保修表到所在校區(qū)后勤集團(tuán)相關(guān)服務(wù)部門(mén)辦理報(bào)修事宜。同時(shí),如有物品要分發(fā),樓里值班室應(yīng)通知各寢室長(zhǎng)來(lái)值班室領(lǐng)取,值班室有自己的倉(cāng)庫(kù),分發(fā)情況要上報(bào)。各樓值班室的登記數(shù)據(jù)自己保存,以方便學(xué)生家長(zhǎng)查找學(xué)生。在社會(huì)飛速發(fā)展的今天,用計(jì)算機(jī)來(lái)管理宿舍信息是發(fā)展必然趨勢(shì),又因?yàn)樗奚岱N類(lèi)和學(xué)生的不斷增加,對(duì)于管理造成了困難。以往的宿舍管理方法,查詢(xún)速度慢,管理困難,容易丟失數(shù)據(jù),已經(jīng)不適合現(xiàn)在的要求。為克服宿舍管理的困難,和查詢(xún)的不便。采用計(jì)算機(jī)來(lái)管理宿舍和學(xué)生的信息,大大提高了查詢(xún)的速度,節(jié)約了人力和物力資源,達(dá)到了預(yù)期的要求,于是我們便起草了這份設(shè)計(jì)。1.3設(shè)計(jì)環(huán)境硬件環(huán)境:
PC機(jī)
內(nèi)存
256M;硬盤(pán)40G
軟件環(huán)境:
操作系統(tǒng):windows
xp
sp2
編輯環(huán)境:Visual
C/C++6.0
word20032總體設(shè)計(jì)(或概要設(shè)計(jì))2.1需求概述該程序是由C語(yǔ)言編寫(xiě)的一個(gè)宿舍管理查詢(xún)軟件,本程序在MicrosoftVisualC++6.0下運(yùn)行,其主要功能是實(shí)現(xiàn)對(duì)學(xué)生信息的錄入、添加、刪除、修改、查詢(xún)、統(tǒng)計(jì)。其中查詢(xún)可以分別以姓名、學(xué)號(hào)、宿舍號(hào)為關(guān)鍵字查詢(xún)學(xué)生信息。統(tǒng)計(jì)可以分別以學(xué)號(hào)、宿舍號(hào)、性別、班級(jí)、專(zhuān)業(yè)為關(guān)鍵字進(jìn)行統(tǒng)計(jì),并且輸出信息按學(xué)號(hào)大小從小到大輸出。2.2軟件結(jié)構(gòu)軟件系統(tǒng)的結(jié)構(gòu)圖主函數(shù)主函數(shù)密碼模塊錄入模塊添加模塊修改模塊刪除模塊查詢(xún)模塊統(tǒng)計(jì)模塊退出系統(tǒng)學(xué)號(hào)姓名宿舍性別年齡專(zhuān)業(yè)返回班級(jí)按姓名按學(xué)號(hào)按宿舍返回按性別按學(xué)號(hào)按宿舍返回按班級(jí)按專(zhuān)業(yè)2.3程序邏輯函數(shù)之間調(diào)用關(guān)系圖主函數(shù)主函數(shù)main()刪除函數(shù)delete_message()錄入函數(shù)input_message()統(tǒng)計(jì)函數(shù)census_message()添加函數(shù)append_message()排序函數(shù)sortmessage()密碼函數(shù)cipher()修改函數(shù)revise_message()查詢(xún)函數(shù)find_message()3詳細(xì)設(shè)計(jì)(或模塊設(shè)計(jì))3.1錄入模塊、統(tǒng)計(jì)模塊輸入姓名輸入班級(jí)輸入宿舍輸入姓名輸入班級(jí)輸入宿舍輸入學(xué)號(hào)輸入性別輸入年齡輸入專(zhuān)業(yè)是否繼續(xù)錄入結(jié)束NY輸入統(tǒng)計(jì)方式功能選擇選1選4選6選2選3選5按學(xué)號(hào)按宿舍按性別按班級(jí)按專(zhuān)業(yè)結(jié)束返回主頁(yè)是是是是是是否否否否否3.2修改模塊輸入要修改學(xué)生的姓名輸入要修改學(xué)生的姓名功能選擇選1選7選4選8選2選3選5選6修改學(xué)號(hào)修改姓名修改班級(jí)修改宿舍修改性別修改年齡修改專(zhuān)業(yè)是否繼續(xù)結(jié)束返回主頁(yè)是是是是是是是是否否否否否否否4系統(tǒng)實(shí)現(xiàn)4.1數(shù)據(jù)結(jié)構(gòu)定義程序中數(shù)據(jù)主要是學(xué)生信息,具體屬于類(lèi)型如下:tructst_messagecharname[20];/*學(xué)生姓名*/chardorm[7];/*宿舍號(hào)*/charnum[10];/*學(xué)號(hào)*/charsex[5];/*性別*/charage[4];/*年齡*/charmajor[20];/*專(zhuān)業(yè)*/charclasss[8];/*班級(jí)*/4.2功能函數(shù)設(shè)計(jì)第一密碼模塊:調(diào)用cipher(),進(jìn)行管理者的注冊(cè)與登錄操作。第二錄入模塊:調(diào)用input_message(),對(duì)住宿學(xué)生信息進(jìn)行錄入。第三添加模塊:調(diào)用append_message(),對(duì)新來(lái)學(xué)生信息進(jìn)行添加錄入。第四修改模塊:調(diào)用revise_message(),對(duì)需修改學(xué)生的信息進(jìn)行修改。第五刪除模塊:調(diào)用delete_message(),對(duì)某一學(xué)生信息進(jìn)行刪除操作。第六查詢(xún)模塊:調(diào)用find_message(),分別以姓名、學(xué)號(hào)、宿舍號(hào)對(duì)學(xué)生信息進(jìn)行查詢(xún)。第七統(tǒng)計(jì)模塊:調(diào)用census_message(),分別以學(xué)號(hào)、宿舍號(hào)、性別、班級(jí)、專(zhuān)業(yè)方式對(duì)學(xué)生信息進(jìn)行統(tǒng)計(jì),并按學(xué)號(hào)由小到大輸出。4.3程序?qū)崿F(xiàn)登陸界面主頁(yè)界面錄入界面修改頁(yè)面統(tǒng)計(jì)頁(yè)面調(diào)試情況1、測(cè)試數(shù)據(jù)對(duì)功能1(密碼系統(tǒng)測(cè)試)的測(cè)試:先注冊(cè)賬號(hào)密碼分別為:1,1,然后退出程序進(jìn)行登錄測(cè)試。輸入一組錯(cuò)誤賬號(hào)密碼系統(tǒng)顯示“輸入的賬號(hào)或密碼有誤,請(qǐng)重新輸入!”。在輸入正確密碼,系統(tǒng)顯示“登陸成功”并進(jìn)入主界面。對(duì)功能2(錄入學(xué)生信息)的測(cè)試:按照先后順序分別輸入學(xué)生信息:學(xué)號(hào)姓名班級(jí)宿舍號(hào)性別年齡專(zhuān)業(yè)03091002張三090113#401男20通信工程03091001李四090213#401男20計(jì)算機(jī)對(duì)功能3(添加學(xué)生信息)的測(cè)試:按照先后順序分別輸入學(xué)生信息:學(xué)號(hào)姓名班級(jí)宿舍號(hào)性別年齡專(zhuān)業(yè)03091004王紅090114#401女20通信工程03091003李娜090214#401女20計(jì)算機(jī)對(duì)功能4(修改學(xué)生信息)的測(cè)試:輸入要修改學(xué)生的姓名:王五,系統(tǒng)顯示“該學(xué)生信息不存在”。輸入修改學(xué)生姓名:張三,系統(tǒng)顯示出該學(xué)生信息。選擇修改學(xué)號(hào)為:03091005,系統(tǒng)顯示出修改后的學(xué)生信息。對(duì)功能5(刪除學(xué)生信息)的測(cè)試:輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):03091001,系統(tǒng)顯示“該學(xué)生信息不存在”。輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào):03091005,系統(tǒng)顯示出該學(xué)生信息。選擇刪除該學(xué)生信息。對(duì)功能6(查詢(xún)學(xué)生信息)的測(cè)試:查詢(xún)宿舍號(hào)為14#401的信息,系統(tǒng)顯示為:學(xué)號(hào)姓名班級(jí)宿舍號(hào)性別年齡專(zhuān)業(yè)03091003李娜090214#401女20計(jì)算機(jī)03091004王紅090114#401女20通信工程對(duì)功能7(統(tǒng)計(jì)學(xué)生信息)的測(cè)試:選擇按學(xué)號(hào)統(tǒng)計(jì),系統(tǒng)顯示為:學(xué)號(hào)姓名班級(jí)宿舍號(hào)性別年齡專(zhuān)業(yè)03091002張三090113#401男20通信工程03091003李娜090214#401女20計(jì)算機(jī)03091004王紅090114#401女20通信工程學(xué)生總?cè)藬?shù)3人,其中男生1人,女生2人。對(duì)功能8(退出系統(tǒng))的測(cè)試:選擇退出系統(tǒng),程序關(guān)閉。5總結(jié)5.1收獲與體會(huì)通過(guò)這次的課程設(shè)計(jì),讓我們學(xué)到了很多在書(shū)本上無(wú)法學(xué)到的東西。也讓我們加深理解了實(shí)踐和理論的區(qū)別,這一次的具體實(shí)踐更讓我們發(fā)現(xiàn)了很多的不足之處,當(dāng)那些以往沒(méi)有注意到的知識(shí)漏洞以及操作經(jīng)驗(yàn)的缺乏這樣徹底的展現(xiàn)在我們面前時(shí),我們才認(rèn)識(shí)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),其它的計(jì)算機(jī)方面的知識(shí)都要重在實(shí)踐,讀萬(wàn)卷書(shū),不如行萬(wàn)里路。一直以來(lái)我們都把重心放在書(shū)本上以及那些抽象的知識(shí)點(diǎn)概念上面,而因?yàn)檫@次的課程設(shè)計(jì),我們翻閱了很多書(shū)籍以及查閱了大量的資料,也讓我們懂得如何將理論和實(shí)踐相統(tǒng)一,也試著從各個(gè)角度去分析一個(gè)系統(tǒng)軟件所需要具備的各種功能以及我們?cè)撊绾芜\(yùn)用所學(xué)的知識(shí)和技巧去實(shí)現(xiàn)它。在這次課程設(shè)計(jì)中,我們體會(huì)到要想開(kāi)發(fā)應(yīng)該系統(tǒng)軟件其實(shí)不僅需要相當(dāng)?shù)膶?zhuān)業(yè)技術(shù)知識(shí),還要有相當(dāng)嚴(yán)謹(jǐn)縝密的思維能力,盡量減少系統(tǒng)存在各種漏洞的可能性,也許我們這一次完成的課程設(shè)計(jì)還遠(yuǎn)遠(yuǎn)不夠成熟,但我相信,我們會(huì)在今后的工作、學(xué)習(xí)中認(rèn)真總結(jié)經(jīng)驗(yàn)教訓(xùn),扎扎實(shí)實(shí)的認(rèn)真思考,勤于實(shí)踐,將每一次的工作任務(wù)完成的更好!5.2不足與改進(jìn)程序有他的不足之處,比如密碼不能回顯“*”,這樣很容易造成密碼的丟失??梢栽诿艽a模塊中改為回顯“*”形式,并且可以對(duì)密碼進(jìn)行算法加密,這樣更能確保信息的安全。6參考文獻(xiàn)(1)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)案例教程》馬巧梅人民郵電出版社2012-8-1(2)《C程序設(shè)計(jì)(第三版)》,譚浩強(qiáng),清華大學(xué)出版社,2005。(3)《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版),嚴(yán)蔚敏,清華大學(xué)出版社,2003。附無(wú)通信工程學(xué)院課程設(shè)計(jì)說(shuō)明書(shū)題目信號(hào)發(fā)生器的設(shè)計(jì)課程名稱(chēng)單片機(jī)原理及應(yīng)用A專(zhuān)業(yè)電子信息工程目錄一、課程設(shè)計(jì)目的二、課程設(shè)計(jì)任務(wù)三、課程設(shè)計(jì)要求四、課程設(shè)計(jì)思路五、課程設(shè)計(jì)軟件仿真結(jié)果截圖六、課程設(shè)計(jì)體會(huì)七、主要參考文獻(xiàn)八、附錄:源程序代碼課程設(shè)計(jì)目的:在學(xué)習(xí)《單片機(jī)原理及應(yīng)用A》課程的基礎(chǔ)上,進(jìn)一步深入理解MCS-51單片機(jī)的結(jié)構(gòu)、工作原理和應(yīng)用技術(shù),提高單片機(jī)控制系統(tǒng)設(shè)計(jì)、研發(fā)的能力;按照教學(xué)計(jì)劃的要求,利用一周時(shí)間,綜合應(yīng)用所學(xué)知識(shí),設(shè)計(jì)具有一定功能的小型單片機(jī)控制系統(tǒng),培養(yǎng)學(xué)生一定的自學(xué)能力和獨(dú)立分析問(wèn)題、解決問(wèn)題的能力,要求學(xué)生能通過(guò)獨(dú)立思考、查閱工具書(shū)、參考文獻(xiàn),提出自己的設(shè)計(jì)方案,找出設(shè)計(jì)中遇到問(wèn)題的解決途徑。課程設(shè)計(jì)要求:1、整個(gè)課程設(shè)計(jì)的各個(gè)環(huán)節(jié)都要自己動(dòng)手。2、通過(guò)TLC5615串行D/A轉(zhuǎn)換芯片完成信號(hào)發(fā)生器設(shè)計(jì),經(jīng)由示波器觀察信號(hào)波形;3、采用C語(yǔ)言編程實(shí)現(xiàn);4、其他要求參見(jiàn)“nKDE-51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū);5、基本任務(wù)為必做項(xiàng)目,附加任務(wù)為選做項(xiàng)目;6、對(duì)課程設(shè)計(jì)進(jìn)行總結(jié),撰寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū)。三、課程設(shè)計(jì)任務(wù):1、基本任務(wù):利用nKDE-51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)上的硬件資源,實(shí)現(xiàn)信號(hào)發(fā)生器的功能。2、附加任務(wù):通過(guò)鍵盤(pán)(1)選擇輸出信號(hào)的波形;(2)調(diào)整幅度、頻率等參數(shù)。3、工作量要求:(1)設(shè)計(jì)的硬件電路圖與程序流程圖;(2)源程序代碼;(3)系統(tǒng)運(yùn)行結(jié)果符合課程設(shè)計(jì)要求。四、課程設(shè)計(jì)思路:TLC56151、TLC5615芯片結(jié)構(gòu):TLC5615引腳功能:DIN:串行數(shù)據(jù)輸入端OUTSCLKSCLK:串行時(shí)鐘輸入端REFinCSCS:片選端,低電平有效DINOUT:DAC模擬電壓輸出端DOUTREFin:基準(zhǔn)輸入端2、TLC5615芯片工作原理:TLC5615由16位轉(zhuǎn)換寄存器、控制邏輯、10位DAC寄存器、上電復(fù)位、DAC、外部基準(zhǔn)放大器、基準(zhǔn)電壓倍增器等部分組成。TLC5615通過(guò)固定增益為2的運(yùn)放緩沖電阻串接網(wǎng)絡(luò),把10位數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換成模擬電壓。上電時(shí),內(nèi)部電路吧10DAC寄存器復(fù)位至全0,其輸出具有與基準(zhǔn)輸入相同的極性。(1)數(shù)據(jù)輸入。由于DAC是12位寄存器,所以在寫(xiě)入10位數(shù)據(jù)后,最低2位寫(xiě)入2個(gè)“0”。(2)輸出緩沖器。輸出緩沖器具有滿電源電壓幅度輸出,它帶有短路保護(hù)并能驅(qū)動(dòng)有100pF負(fù)載電容的2kΩ負(fù)載。(3)外部基準(zhǔn)。外部基準(zhǔn)電壓輸入經(jīng)過(guò)緩沖,使得DAC輸入電阻與代碼無(wú)關(guān)。因此,REFin的輸入電阻為10MΩ,輸入電容典型值為5pF,它們與輸入代碼無(wú)關(guān)?;鶞?zhǔn)電壓決定DAC的滿度輸出。(4)邏輯接口。邏輯輸入端可使用TTL或CMOS邏輯電平。使用滿電源電壓幅度時(shí),CMOS邏輯可得到最小的功耗。使用TTL邏輯電平是,功耗需求增加約2倍。(5)串行時(shí)鐘和更新速率。TLC5615的最大串行時(shí)鐘頻率近似為14MHz。通常,數(shù)字更新速率受片選周期的限制。對(duì)于滿度輸入階躍跳變,10位DAC的建立時(shí)間約為12.5μs,這把更新頻率限制在80KHz。當(dāng)片選信號(hào)為低電平時(shí),輸入數(shù)據(jù)讀入16bit移位寄存器。SCLK輸入的上升沿把數(shù)據(jù)移入輸入寄存器,接著,CS的上升沿把數(shù)據(jù)傳送至DAC寄存器,當(dāng)CS為高電平時(shí),輸入的數(shù)據(jù)不能由時(shí)鐘同步送入輸入寄存器。所有CS的跳變應(yīng)發(fā)生在SCLK輸入為低電平時(shí)。DIN只需要輸入12位數(shù)據(jù),DIN輸入的12位數(shù)據(jù)中,前10位為T(mén)LC5615輸入的D/A轉(zhuǎn)換數(shù)據(jù),并且輸入時(shí),高位在前,低位在后,后2位必須寫(xiě)入為0的2位數(shù)值,因?yàn)門(mén)LC5615的DAC輸入鎖存器為12位寬。總流程圖:開(kāi)始開(kāi)始鍵盤(pán)掃描(確定是否改變頻率、幅度)鍵盤(pán)掃描(確定是否改變頻率、幅度)檢測(cè)按鍵,確定輸出波形檢測(cè)按鍵,確定輸出波形程序編譯及軟件仿真電路原理圖:元器件列表:元器件名稱(chēng)所屬類(lèi)型AT89C51MicroprocessorICSCRYSTAL晶振MisecllaneousCAP電容CapacitorRESPACK-8ResistorCAP電容CapacitorSWITCH按鍵Switches&relaysTLC5615C(L)DDataConvertersLM016L液晶顯示Display五、課程設(shè)計(jì)軟件仿真結(jié)果截圖:1、按下三角波鍵示波器輸出三角波,同時(shí)液晶屏上顯示“sanjiaobo”按下“鋸齒波”鍵示波器輸出三角波,同時(shí)液晶屏上顯示“juchibo”按下“方波”鍵示波器輸出三角波,同時(shí)液晶屏上顯示“fangbo”按下“正弦波”鍵示波器輸出三角波,同時(shí)液晶屏上顯示“sine”當(dāng)無(wú)任何鍵按下時(shí)示波器輸出直線,同時(shí)液晶屏上顯示“wave”6、顯示字符“三”:課程設(shè)計(jì)體會(huì):本次課程設(shè)計(jì)我做的是信號(hào)發(fā)生器,參考相關(guān)書(shū)籍和老師給的程序,很快就把三角波、鋸齒波、方波、正弦波四種波形顯示出來(lái)了。后面就是波形顯示切換和在液晶屏上顯示對(duì)應(yīng)波形說(shuō)明的問(wèn)題。在老師同學(xué)和自己的努力下,在原程序上利用IF語(yǔ)句和SWITCH語(yǔ)句實(shí)現(xiàn)了波形按鍵切換功能,即想要顯示方波按下“方波”鍵即可。另外我們這組還在LCM1602液晶屏上顯示出了漢字,通過(guò)參考資料加上自己對(duì)漢字顯示原理的理解,最終在液晶屏上顯示出漢字“三”,雖然只是簡(jiǎn)單的“三”,但是過(guò)程是相當(dāng)不容易。這次課程設(shè)計(jì)很有趣,讓我實(shí)實(shí)在在收獲了不少東西,知道了DA轉(zhuǎn)換和LCM1602顯示的原理,尤其是在LCM1602漢字的顯示原理。這次課程設(shè)計(jì)也提高了我的編程能力和同學(xué)的合作能力。主要參考文獻(xiàn):1、《nKDE51單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)》南京郵電大學(xué),2011年2、《單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)》(第2版),謝維成等編著,清華大學(xué)出版社,2009年3、《單片機(jī)原理及應(yīng)用》(第2版),李建忠,西安電子科技大學(xué)出版社,2008年4、《基于protues的51系列單片機(jī)設(shè)計(jì)與仿真》侯玉寶陳忠平李成群等編著,電子工業(yè)出版社八、源程序代碼:LCM1602.H#ifndefLCM1602_h#defineLCM1602_h#defineBUSYFLAG 0x80#defineBLINK 0x01#defineNOBLINK 0x00unsignedcharLCMReadState(void);voidLCMDelay(int);voidLCMWriteCmd(unsignedchar);voidLCMWriteData(unsignedchar);voidLCMClear(void);voidLCMInit(void);voidLCMGotoXY(unsignedchar,unsignedchar);voidLCMDisplayChar(unsignedchar,unsignedchar,unsignedchar);voidLCMDisplayString(unsignedchar,unsignedchar,unsignedchar*);voidLCMBlink(unsignedchar,unsignedchar,unsignedchar);#endifBOXING.H#include<reg51.h>#include<stdio.h>#include<intrins.h>#include<LCM1602.h>#defineOSC 22118400#defineBAUDRATE 9600sbit DIN=P1^4; //串行數(shù)據(jù)輸入端sbit SCK=P1^5; //串行時(shí)鐘輸入端sbit CS=P1^6; //DA片選端sbit S0 =P2^0; //三角波sbit S1 =P2^1; // 鋸齒波sbit S2 =P2^2; // 方波波sbit S3 =P2^3; // 正弦波//正弦波unsignedcharcodetype[256]={ 0x80,0x83,0x86,0x89,0x8c,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xeb,0xed,0xef,0xf0,0xf1,0xf3,0xf4,0xf5,0xf6,0xf8,0xf9,0xfa,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xfa,0xf9,0xf8,0xf6,0xf5,0xf4,0xf3,0xf1,0xf0,0xef,0xed,0xeb,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8c,0x89,0x86,0x83,0x80,0x7d,0x7a,0x77,0x74,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4d,0x4a,0x47,0x44,0x41,0x3f,0x3c,0x39,0x37,0x34,0x32,0x2f,0x2d,0x2b,0x28,0x26,0x24,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0f,0x0d,0x0c,0x0b,0x0a,0x08,0x07,0x06,0x06,0x05,0x04,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x04,0x05,0x06,0x06,0x07,0x08,0x0a,0x0b,0x0c,0x0d,0x0f,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,0x28,0x2b,0x2d,0x2f,0x32,0x34,0x37,0x39,0x3c,0x3f,0x41,0x44,0x47,0x4a,0x4d,0x4f,0x52,0x55,0x58,0x5b,0x5e,0x61,0x64,0x67,0x6a,0x6d,0x70,0x74,0x77,0x7a,0x7d};voidDAConvert(unsignedintda) //并行轉(zhuǎn)串行{ inti; da<<=2; da&=0xFFC; SCK=0; CS=0; for(i=0;i<12;i++) { if(da&0x800) DIN=1; elseDIN=0; SCK=1; SCK=0; da<<=1; } CS=1; SCK=1; DIN=1;}voidDelay(unsignedintt){unsignedinti;while(t--){for(i=0;i<100;i++);}}voidling(){ LCMClear(); LCMDisplayString(1,5,"wave"); while(1) {DAConvert(0); if(S0==0||S1==0||S2==0||S3==0)break; }}voidsanjiaobo(){ LCMClear(); LCMDisplayString(1,2,"sanjiaobo"); while(1) {unsignedinti; for(i=0;i<256;i++) {DAConvert(i);} for(i=256;i>0;i--) {DAConvert(i);} if(S0==1)break;}} voidjuchibo(){ LCMClear(); LCMDisplayString(1,2,"juchibo"); while(1) { unsignedinti; for(i=0;i<256;i++) {DAConvert(i);} if(S1==1)break;}} voidfangbo(){ LCMClear(); LCMDisplayString(1,2,"fangbo"); while(1) { DAConvert(40); Delay(50); DAConvert(0); Delay(50); if(S2==1)break;} }voidsine(){ LCMClear(); LCMDisplayString(1,5,"sine"); while(1) { unsignedchari; DAConvert(type[i]); i++; if(S3==1)break;} }voidboxing(void){ intkey=0; while(1){ if(S0==1&&S1==1&&S2==1&&S3==1)key=0; if(S0==0)key=1; if(S1==0)key=2; if(S2==0)key=3; if(S3==0)key=4; switch(key) {case0:ling(); break; case1:sanjiaobo(); break; case2:juchibo(); break; case3:fangbo(); break; case4:sine(); break; }} } LCM1602.C#include<reg51.h>#include<intrins.h>#include<LCM1602.H>#include<boxing.h>#defineBUSYFLAG 0x80#defineBLINK 0x01#defineNOBLINK 0x00#defineLCM_DB P0sbitLCM_RS =P1^0;sbitLCM_RW =P1^1;sbitLCM_E =P1^2;sbitLCM_BLC =P1^3;unsignedintdataDelayConst=140;/******************************************************************************函數(shù)名:LCMDelay功能:通過(guò)循環(huán)的方式延時(shí)參數(shù):int,表示要延時(shí)的毫秒數(shù)******************************************************************************/voidLCMDelay(intms){ unsignedinti,cnt; cnt=DelayConst*ms; for(i=0;i<cnt;i++);}/******************************************************************************函數(shù)名:LCMReadState功能:查詢(xún)LCM的忙標(biāo)志/當(dāng)前AC地址返回:BYTE,最高bit為1表示忙,為0表示閑******************************************************************************/unsignedcharLCMReadState(void){ unsignedcharstate; LCM_E=0; LCM_RS=0; LCM_RW=1; LCM_E=1; _nop_(); _nop_(); state=LCM_DB; LCM_E=0; returnstate;}/*******************************************************************************函數(shù)名:LCMClear功能:清屏*******************************************************************************/voidLCMClear(void){ LCMDelay(1); LCM_E=0; LCM_RS=0; LCM_RW=0; LCM_DB=0x01; LCM_E=1; _nop_(); _nop_(); LCM_E=0; LCMDelay(1);}/*******************************************************************************函數(shù)名:LCMWriteCmd功能:向LCM寫(xiě)入控制字參數(shù):BYTE,命令字節(jié)。寫(xiě)入前不判斷忙表示(因?yàn)槌跏蓟^(guò)程中不能判斷)*******************************************************************************/voidLCMWriteCmd(unsignedcharcmd){ LCMDelay(1); LCM_E=0; LCM_RS=0; LCM_RW=0; LCM_DB=cmd; LCM_E=1; _nop_(); _nop_(); LCM_E=0;}/******************************************************************************函數(shù)名:LCMWriteData功能:向LCM寫(xiě)入數(shù)據(jù)參數(shù):BYTE,將要寫(xiě)入的數(shù)據(jù)******************************************************************************/voidLCMWriteData(unsignedchardc){ while(LCMReadState()&BUSYFLAG); LCM_RS=1; LCM_RW=0; LCM_DB=dc; LCM_E=1; _nop_(); _nop_(); LCM_E=0;}/******************************************************************************函數(shù)名:LCMInit功能:初始化LCM參數(shù):DWORD,晶振頻率(Hz),供計(jì)算延時(shí)常數(shù)******************************************************************************/voidLCMInit(void){ LCMDelay(60); //延時(shí)60ms,等待LCM復(fù)位 LCMWriteCmd(0x38); //功能設(shè)置:8位接口,2行,5x7字符點(diǎn)陣 LCMDelay(5); //延時(shí) LCMWriteCmd(0x38); //第二次 LCMDelay(1); //延時(shí) LCMWriteCmd(0x38); //此后可以通過(guò)監(jiān)測(cè)忙標(biāo)志判斷指令執(zhí)行情況 while(LCMReadState()&BUSYFLAG); LCMWriteCmd(0x08); //關(guān)閉顯示 while(LCMReadState()&BUSYFLAG); LCMWriteCmd(0x01); //清屏 while(LCMReadState()&BUSYFLAG); LCMWriteCmd(0x06); //顯示地址自動(dòng)增量,整體不移位 while(LCMReadState()&BUSYFLAG); LCMWriteCmd(0x0e); //開(kāi)顯示,開(kāi)光標(biāo),不閃爍 while(LCMReadState()&BUSYFLAG);}/******************************************************************************函數(shù)名:LCMGotoXY功能:移動(dòng)光標(biāo)到X行,Y列參數(shù):BYTE,x表示行(0,1),y表示列(橫向,取值0~0x0f)******************************************************************************/voidLCMGotoXY(unsignedcharx,unsignedchary) //x:行(0~1)y:列(0~F){ unsignedcharcmd; if(x==0) { cmd=0x80|y; } else { cmd=0x80|0x40|y;//(第1行第0列為40H開(kāi)始) } LCMWriteCmd(cmd); while(LCMReadState()&BUSYFLAG);}/******************************************************************************函數(shù)名:LCMDisplayString功能:從指定的位置開(kāi)始顯示字符串參數(shù):x表示行(0,1),y表示列(橫向,取值0~0x0f),*str為指向?qū)⒁@示的字符串的指針******************************************************************************/voidLCMDisplayString(unsignedcharx,unsignedchary,unsignedchar*str){ unsignedcharptr; ptr=0; while(*(str+ptr)!=0) { LCMDisplayChar(x,(y+ptr),*(str+ptr)); ptr++; }}#include<reg51.h>#include<stdio.h>#defineBUSYFLAG 0x80#defineBLINK 0x01#defineNOBLINK 0x00#defineOSC 22118400unsignedcharucTH,ucTL,Ticks;//*****************************************************************************//函數(shù)名:T0ISR//功能:50ms中斷服務(wù)程序//*****************************************************************************voidT0ISR(void)interrupt1{ TH0=ucTH; TL0=ucTL; TR0=1; Ticks++; if(Ticks==20) { Ticks=0; LCM_BLC=0;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貓膩?zhàn)髌贰堕g客》經(jīng)典語(yǔ)錄
- 基本體操教案
- 光學(xué)分析儀器賬務(wù)處理實(shí)例-記賬實(shí)操
- 弱電施工技術(shù)交底
- 2024年藥物控釋材料項(xiàng)目綜合評(píng)估報(bào)告
- 2019湘美版 高中美術(shù) 選擇性必修5 工藝《第一單元 工藝概述》大單元整體教學(xué)設(shè)計(jì)2020課標(biāo)
- 2024屆河北省張家口市重點(diǎn)中學(xué)高三第二學(xué)期月考試卷(二)數(shù)學(xué)試題
- 2024屆廣東省珠海三中高三第二次五校聯(lián)考數(shù)學(xué)試題
- 材料合同書(shū)樣本簡(jiǎn)單
- 老人摔跤應(yīng)急處置
- 戶(hù)外廣告設(shè)施檢驗(yàn)規(guī)范
- 電氣安裝施工記錄表格(共46頁(yè))
- GB T 197-2018 普通螺紋 公差(高清版)
- 學(xué)前衛(wèi)生學(xué):集體兒童保健
- 【課件】第16課變革與突破——19世紀(jì)西方美術(shù)課件高中美術(shù)人教版(2019)美術(shù)鑒賞
- 漿砌片石護(hù)坡施工方案(工程科)
- 水利工程測(cè)量課件
- 另辟蹊徑-利用MSYS2安裝MinGW+Qt開(kāi)發(fā)環(huán)境(含32位-64位-動(dòng)態(tài)庫(kù)-靜態(tài)庫(kù)-qwt-opencv等等)
- 初高中數(shù)學(xué)銜接知識(shí)
- 圖書(shū)室開(kāi)放時(shí)間表(精編版)
- 基層領(lǐng)導(dǎo)干部的素質(zhì)要求之淺見(jiàn)
評(píng)論
0/150
提交評(píng)論