軟件設(shè)計(jì)方案及三色廣告牌的制作(電路圖及源程序)_第1頁(yè)
軟件設(shè)計(jì)方案及三色廣告牌的制作(電路圖及源程序)_第2頁(yè)
軟件設(shè)計(jì)方案及三色廣告牌的制作(電路圖及源程序)_第3頁(yè)
軟件設(shè)計(jì)方案及三色廣告牌的制作(電路圖及源程序)_第4頁(yè)
軟件設(shè)計(jì)方案及三色廣告牌的制作(電路圖及源程序)_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件設(shè)計(jì)方案第一章、用戶界面設(shè)計(jì)規(guī)范 11、界面設(shè)計(jì)介紹 12、界面設(shè)計(jì)原則 2第二章、數(shù)據(jù)庫(kù)設(shè)計(jì)原則 61、設(shè)計(jì)數(shù)據(jù)庫(kù)之前 62、表與字段的設(shè)計(jì) 63、鍵和索引 74、數(shù)據(jù)完整性設(shè)計(jì) 85、其他設(shè)計(jì) 86、數(shù)據(jù)庫(kù)命名規(guī)范 9第三章、編程規(guī)范總則 101、排版 102、注釋 113、標(biāo)識(shí)符命名 124、可讀性 135、變量與結(jié)構(gòu) 136、函數(shù)與過(guò)程 147、可測(cè)性 158、程序效率 169、質(zhì)量保證 1710、代碼編輯、編譯與審查 1811、代碼測(cè)試與維護(hù) 18PAGEPAGE32第一章、用戶界面設(shè)計(jì)規(guī)范用戶界面:又稱人機(jī)界面,實(shí)現(xiàn)用戶與計(jì)算機(jī)之間的通信,以控制計(jì)算機(jī)或進(jìn)行用戶與計(jì)算機(jī)之間的數(shù)據(jù)傳送的系統(tǒng)部件。GUI:即圖形用戶界面,一種可視化的用戶界面,它使用圖形界面代替正文界面。本系統(tǒng)堅(jiān)持圖形用戶界面(GUI)設(shè)計(jì)原則,界面直觀、對(duì)用戶透明。用戶接觸軟件后對(duì)界面上對(duì)應(yīng)的功能一目了然、不需要多少培訓(xùn)就可以方便地使用本應(yīng)用系統(tǒng)。1、界面設(shè)計(jì)介紹界面設(shè)計(jì)是為了滿足軟件專業(yè)化標(biāo)準(zhǔn)化的需求而產(chǎn)生的對(duì)軟件的使用界面進(jìn)行美化優(yōu)化規(guī)范化的設(shè)計(jì)分支。1)軟件啟動(dòng)封面設(shè)計(jì)應(yīng)使軟件啟動(dòng)封面最終為高清晰度的圖像,選用的色彩不宜超過(guò)256色,大小多為主流顯示器分辨率的1/6大。啟動(dòng)封面上應(yīng)該醒目地標(biāo)注制作或支持的公司標(biāo)志、產(chǎn)品商標(biāo)、軟件名稱、版本號(hào)、網(wǎng)址、版權(quán)聲明、序列號(hào)等信息,以樹(shù)立軟件形象,方便使用者或購(gòu)買者在軟件啟動(dòng)的時(shí)候得到提示。插圖宜使用具有獨(dú)立版權(quán)的、象征性強(qiáng)的、識(shí)別性高的、視覺(jué)傳達(dá)效果好的圖形,若使用攝影也應(yīng)該進(jìn)行數(shù)位處理,以形成該軟件的個(gè)性化特征。如果是系列軟件還將考慮整體設(shè)計(jì)的統(tǒng)一和延續(xù)性。2)軟件框架設(shè)計(jì)軟件的框架設(shè)計(jì)要復(fù)雜得多。軟件框架設(shè)計(jì)應(yīng)該簡(jiǎn)潔明快,盡量少用無(wú)謂的裝飾,應(yīng)該考慮節(jié)省屏幕空間,各種分辨率的大小,縮放時(shí)的狀態(tài)和原則,并且為將來(lái)設(shè)計(jì)的按鈕、菜單、標(biāo)簽、滾動(dòng)條及狀態(tài)欄預(yù)留位置。設(shè)計(jì)中將整體色彩組合進(jìn)行合理搭配,將軟件商標(biāo)放在顯著位置,主菜單應(yīng)放在左邊或上邊,滾動(dòng)條放在右邊,狀態(tài)欄放在下邊,以符合視覺(jué)流程和用戶使用心理。3)軟件按鈕設(shè)計(jì)軟件按鈕設(shè)計(jì)應(yīng)該具有交互性,即應(yīng)該有3到6種狀態(tài)效果:點(diǎn)擊前鼠標(biāo)未放在上面時(shí)的狀態(tài);鼠標(biāo)放在上面但未點(diǎn)擊的狀態(tài);點(diǎn)擊時(shí)狀態(tài);點(diǎn)擊后鼠標(biāo)未放在上面時(shí)的狀態(tài);不能點(diǎn)擊時(shí)狀態(tài);獨(dú)立自動(dòng)變化的狀態(tài)。按鈕應(yīng)具備簡(jiǎn)潔的圖示效果,名稱易懂,用詞準(zhǔn)確,能望文知意最好,讓使用者產(chǎn)生功能關(guān)聯(lián)反應(yīng),群組內(nèi)按鈕應(yīng)該風(fēng)格統(tǒng)一,功能差異大的按鈕應(yīng)該有所區(qū)別。4)軟件面板設(shè)計(jì)軟件面板設(shè)計(jì)應(yīng)該具有縮放功能,面板應(yīng)該對(duì)功能區(qū)間劃分清晰,應(yīng)該和對(duì)話框、彈出框等風(fēng)格匹配,盡量節(jié)省空間,切換方便。5)菜單設(shè)計(jì)菜單設(shè)計(jì)一般有選中狀態(tài)和未選中狀態(tài),左邊應(yīng)為名稱,右邊應(yīng)為快捷鍵。如果有下級(jí)菜單應(yīng)該有下級(jí)箭頭符號(hào),不同功能區(qū)間應(yīng)該用線條分割。對(duì)與進(jìn)行的操作無(wú)關(guān)的菜單要用屏蔽的方式加以處理,如果采用動(dòng)態(tài)加載方式,即只有需要的菜單才顯示最好。主菜單的寬度要接近,字?jǐn)?shù)不應(yīng)多于四個(gè),每個(gè)菜單的字?jǐn)?shù)能相同最好。主菜單數(shù)目不應(yīng)太多,最好為單排布置。6)標(biāo)簽設(shè)計(jì)標(biāo)簽設(shè)計(jì)應(yīng)該注意轉(zhuǎn)角部分的變化,狀態(tài)可參考按鈕。7)圖標(biāo)設(shè)計(jì)圖標(biāo)設(shè)計(jì)色彩不宜超過(guò)64色,大小為16x16、32x32兩種,應(yīng)該加以著重考慮視覺(jué)沖擊力,它需要在很小的范圍表現(xiàn)出軟件的內(nèi)涵,在設(shè)計(jì)時(shí)使用簡(jiǎn)單的顏色,利用眼睛對(duì)色彩和網(wǎng)點(diǎn)的空間混合效果,做出精彩圖標(biāo)。8)滾動(dòng)條及狀態(tài)欄設(shè)計(jì)滾動(dòng)條主要是為了對(duì)區(qū)域性空間的固定大小中內(nèi)容量的變換進(jìn)行設(shè)計(jì),應(yīng)該有上下箭頭,滾動(dòng)標(biāo)等,有些還有翻頁(yè)標(biāo)。狀態(tài)欄是為了對(duì)軟件當(dāng)前狀態(tài)的顯示和提示。9)安裝過(guò)程設(shè)計(jì)安裝過(guò)程設(shè)計(jì)主要是將軟件安裝的過(guò)程進(jìn)行美化,包括對(duì)軟件功能進(jìn)行圖示化。10)包裝及商品化最后軟件產(chǎn)品的包裝應(yīng)該考慮保護(hù)好軟件產(chǎn)品,功能的宣傳融合于美觀中,可以印刷部分產(chǎn)品介紹。2、界面設(shè)計(jì)原則1)易用性(1)完成相同或相近功能的按鈕用Frame框起來(lái),常用按鈕要支持快捷方式;(2)完成同一功能或任務(wù)的元素放在集中位置,減少鼠標(biāo)移動(dòng)的距離;(3)按功能將界面劃分局域塊,用Frame框括起來(lái),并要有功能說(shuō)明或標(biāo)題;(4)界面要支持鍵盤自動(dòng)瀏覽按鈕功能,即按Tab鍵的自動(dòng)切換功能;(5)同一界面上的控件數(shù)最好不要超過(guò)10個(gè),多于10個(gè)時(shí)可以考慮使用分頁(yè)界面顯示;(6)分頁(yè)界面要支持在頁(yè)面間的快捷切換,常用組合快捷鍵CtrlTab;(7)默認(rèn)按鈕要支持Enter及選操作,即按Enter后自動(dòng)執(zhí)行默認(rèn)按鈕對(duì)應(yīng)操作;(8)可寫控件檢測(cè)到非法輸入后應(yīng)給出說(shuō)明并能自動(dòng)獲得焦點(diǎn);(9)Tab鍵的順序與控件排列順序要一致,目前流行從上到下、從左到右的方式;(10)復(fù)選框和選項(xiàng)框要有默認(rèn)選項(xiàng),按選擇機(jī)率的高低而先后排列,并支持Tab選擇;(11)界面空間較小時(shí)使用下拉框而不用選項(xiàng)框;(12)選項(xiàng)數(shù)較少時(shí)使用選項(xiàng)框,相反使用下拉列表框;(13)適當(dāng)使用相關(guān)的專業(yè)術(shù)語(yǔ),提倡使用通用性字眼。2)規(guī)范性通常界面設(shè)計(jì)都按Windows界面的規(guī)范來(lái)設(shè)計(jì),即包含“菜單條、工具欄、工具廂、狀態(tài)欄、滾動(dòng)條、右鍵快捷菜單”的標(biāo)準(zhǔn)格式。小型軟件一般不提供工具廂。(1)菜單前的圖標(biāo)能直觀地代表要完成的操作,常用菜單要有命令快捷方式;(2)完成相同或相近功能的菜單用橫線隔開(kāi)放在同一位置,菜單深度一般要求最多控制在三層以內(nèi);(3)相同或相近功能的工具欄放在一起,工具欄中的每一個(gè)按鈕要有及時(shí)提示信息;(4)系統(tǒng)常用的工具欄設(shè)置默認(rèn)放置位置,工具欄的圖標(biāo)能直觀地代表要完成的操作,一條工具欄的長(zhǎng)度不能超出屏幕寬度;(5)工具欄太多時(shí)可以考慮使用工具廂;工具廂要具有可增減性,由用戶自己根據(jù)需求定制,默認(rèn)總寬度不要超過(guò)屏幕寬度的1/5;(6)狀態(tài)條要能顯示用戶切實(shí)需要的信息,常用的有:目前的操作、系統(tǒng)狀態(tài)、用戶位置、用戶信息、提示信息、錯(cuò)誤信息等,高度以放置五好字為宜;(7)滾動(dòng)條的長(zhǎng)度要根據(jù)顯示信息的長(zhǎng)度或?qū)挾饶芗皶r(shí)變換,以利于用戶了解顯示信息的位置和百分比,并且寬度應(yīng)比狀態(tài)條的略窄;(8)菜單和工具條要有清楚的界限,菜單要求凸出顯示,這樣在移走工具條時(shí)仍有立體感;(9)菜單和狀態(tài)條中通常使用五號(hào)字體。工具條一般比菜單要寬,但不要寬得太多,否則看起來(lái)很不協(xié)調(diào);(10)右鍵快捷菜單采用與菜單相同的準(zhǔn)則。3)合理性屏幕對(duì)角線相交的位置是用戶直視的地方,正上方四分之一處為易吸引用戶注意力的位置,在放置窗體時(shí)要注意利用這兩個(gè)位置。(1)父窗體或主窗體的中心位置應(yīng)該在對(duì)角線焦點(diǎn)附近;(2)子窗體位置應(yīng)該在主窗體的左上角或正中,多個(gè)子窗體彈出時(shí)應(yīng)該依次向右下方偏移,以顯示出窗體標(biāo)題為宜;(3)重要的命令按鈕與使用較頻繁的按鈕要放在界面上注目的位置;(4)與正在進(jìn)行的操作無(wú)關(guān)的按鈕應(yīng)該加以屏蔽(Windows中用灰色顯示,沒(méi)法使用該按鈕);(5)對(duì)可能造成數(shù)據(jù)無(wú)法恢復(fù)的操作必須提供確認(rèn)信息,給用戶放棄選擇的機(jī)會(huì)。4)美觀與協(xié)調(diào)性(1)按鈕大小基本相近,且與界面的大小、空間要協(xié)調(diào),忌用太長(zhǎng)的名稱;(2)避免空曠的界面上放置很大的按鈕,放置完控件后界面不應(yīng)有很大的空缺位置;(3)前景與背景色搭配合理協(xié)調(diào),反差不宜太大,最好少用深色,常用色考慮使用Windows界面色調(diào);(4)界面風(fēng)格要保持一致,字的大小、顏色、字體要相同,除非是需要藝術(shù)處理或有特殊要求的地方;(5)如果窗體支持最小化、最大化或放大時(shí),窗體上的控件也要隨著窗體而縮放;(6)對(duì)于含有按鈕的界面一般不應(yīng)該支持縮放,即右上角只有關(guān)閉功能;(7)通常父窗體支持縮放時(shí),子窗體沒(méi)有必要縮放。5)界面一致性在界面設(shè)計(jì)中應(yīng)該保持界面的一致性。一致性既包括使用標(biāo)準(zhǔn)的控件,也指使用相同的信息表現(xiàn)方法,如在字體、標(biāo)簽風(fēng)格、顏色、術(shù)語(yǔ)、顯示錯(cuò)誤信息等方面確保一致。(1)顯示信息一致性① 標(biāo)簽提示:字體為不加粗、宋體、黑色、灰底或透明、無(wú)邊框、右對(duì)齊、不帶冒號(hào)、一般情況為五號(hào);② 日期:正常字體、宋體、白底黑字;③ 對(duì)齊方法

左對(duì)齊:一般文字、單個(gè)數(shù)字、日期等

右對(duì)齊:數(shù)字、時(shí)間、日期加時(shí)間④ 分辨率800*600,增強(qiáng)色16色;⑤ 字體缺省為宋體、五號(hào)、黑色;⑥ 底色缺省為灰色。這些信息的排列顯示風(fēng)格供參考,在同一軟件中應(yīng)當(dāng)注意表現(xiàn)形式的一致性。(2)布局合理化應(yīng)注意在一個(gè)窗口內(nèi)部所有控件的布局和信息組織的藝術(shù)性,使得用戶界面美觀。布局不宜過(guò)于密集,也不能過(guò)于空曠,合理的利用空間。在一個(gè)窗口中按tab鍵,移動(dòng)順序不能雜亂無(wú)章,先從上至下,再?gòu)淖笾劣?。一屏中首先?yīng)輸入的和重要信息的控件在tab順序中應(yīng)當(dāng)靠前,并放在窗口上較醒目的位置。布局力求簡(jiǎn)潔、有序、易于操作。(3)鼠標(biāo)與鍵盤對(duì)應(yīng)應(yīng)用中的功能只用鍵盤也應(yīng)當(dāng)可以完成,即設(shè)計(jì)的應(yīng)用中還應(yīng)加入一些必要的按鈕和菜單項(xiàng)。但是,許多鼠標(biāo)的操作,如雙擊、拖動(dòng)對(duì)象等,并不能簡(jiǎn)單地用鍵盤來(lái)模擬即可實(shí)現(xiàn)。例如在一個(gè)列表框中用鼠標(biāo)單擊其中一項(xiàng)表示選中該項(xiàng)內(nèi)容,為了用鍵盤也能實(shí)現(xiàn)這一功能,必須在窗口中定義一個(gè)表示選中的按鈕,以作為實(shí)現(xiàn)單擊功能的替。又如在一個(gè)窗口中有兩個(gè)數(shù)據(jù)窗口,可以用鼠標(biāo)從一個(gè)數(shù)據(jù)窗口中將一項(xiàng)拖出然后放到另一個(gè)中,如果只用鍵盤,就應(yīng)當(dāng)在菜單中設(shè)置拷貝或移動(dòng)的菜單項(xiàng)。(4)快捷鍵在菜單項(xiàng)中使用快捷鍵可以讓使用鍵盤的用戶操作得更快一些,在Windows及其應(yīng)用軟件中快捷鍵的使用大多是一致的。本系統(tǒng)中應(yīng)用的快捷鍵在各個(gè)配置項(xiàng)上語(yǔ)義必須保持一致。Ctrl-O打開(kāi)Ctrl-Tab下一窗口Ctrl-S保存Ctrl-Esc任務(wù)列表Ctrl-C拷貝Ctrl-F4關(guān)閉窗口Ctrl-V粘貼Alt-F4結(jié)束應(yīng)用Ctrl-D刪除Alt-Tab下一應(yīng)用Ctrl-X剪切Enter缺省按鈕/確認(rèn)操作Ctrl-I插入Esc取消按鈕/取消操作Ctrl-H幫助Shift-F1上下文相關(guān)幫助Ctrl-P打印Ctrl-W關(guān)閉其它快捷鍵其它快捷鍵使用漢語(yǔ)拼音的開(kāi)頭字母,不常用的可以沒(méi)有快捷鍵。6)向?qū)?duì)于應(yīng)用中某些部分的處理流程是固定的,用戶必須按照指定的順序輸入操作信息,為了使用戶操作得到必要的引示應(yīng)該使用向?qū)В褂脩羰褂霉δ軙r(shí)比較輕松明了,但是向?qū)П仨氂迷诠潭ㄌ幚砹鞒讨?,并且處理流程?yīng)該不少于3個(gè)處理步驟。7)用戶幫助系統(tǒng)應(yīng)該提供詳盡而可靠的幫助文檔,在用戶使用產(chǎn)生迷惑時(shí)可以自己尋求解決方法。常用的幫助設(shè)施有兩種:集成的和附加的。集成的幫助設(shè)施一開(kāi)始就是設(shè)計(jì)在軟件中的,它與語(yǔ)境有關(guān),用戶可以直接選擇與所要執(zhí)行操作相關(guān)的主題。通過(guò)集成幫助設(shè)施可以縮短用戶獲得幫助的時(shí)間,增加界面的友好性,附加的幫助設(shè)施在系統(tǒng)建好以后再加進(jìn)去,通常是一種查詢能力比較弱的聯(lián)機(jī)幫助。(1)幫助文檔中的性能介紹與說(shuō)明要和系統(tǒng)性能配套一致;(2)操作時(shí)要提供及時(shí)調(diào)用系統(tǒng)幫助的功能,常用F1;(3)最好提供目前流行的聯(lián)機(jī)幫助格式或HTML幫助格式;(4)用戶可以用關(guān)鍵詞在幫助索引中搜索所要的幫助,當(dāng)然也應(yīng)該提供幫助主題詞;(5)在幫助中應(yīng)該提供我們的技術(shù)支持方式,一旦用戶難以自己解決可以方便地尋求新的幫助方式。8)出錯(cuò)信息和警告出錯(cuò)信息和警告是指出現(xiàn)問(wèn)題時(shí)系統(tǒng)給出的壞消息,信息以用戶可以理解的術(shù)語(yǔ)描述。(1)信息應(yīng)提供如何從錯(cuò)誤中恢復(fù)的建設(shè)性意見(jiàn);(2)信息應(yīng)指出錯(cuò)誤可能導(dǎo)致哪些不良后果,以便用戶檢查是否出現(xiàn)了這些情況并幫助用戶進(jìn)行改正;(3)信息應(yīng)伴隨著視覺(jué)上的提示,如特殊的圖像、顏色或者信息閃爍;(4)信息不能帶有判斷色彩,即在任何情況下不能指責(zé)用戶。9)一般交互(1)一致性:菜單選擇、數(shù)據(jù)顯示以及其它功能都應(yīng)使用一致的格式;(2)提供有意義的反饋;(3)在數(shù)據(jù)錄入上允許取消大多數(shù)操作;(4)減少在動(dòng)作間必須記憶的信息數(shù)量;(5)允許用戶非惡意錯(cuò)誤,系統(tǒng)應(yīng)保護(hù)自己不受致命錯(cuò)誤的破壞。10)數(shù)據(jù)輸入(1)盡量減少用戶輸入動(dòng)作的數(shù)量;(2)維護(hù)信息顯示和數(shù)據(jù)輸入的一致性;(3)交互應(yīng)該是靈活的,對(duì)鍵盤和鼠標(biāo)輸入的靈活性提供支持;(4)在當(dāng)前動(dòng)作的語(yǔ)境中使不合適的命令不起作用。11)獨(dú)特性如果一味地遵循業(yè)界的界面標(biāo)準(zhǔn),則會(huì)喪失自己的個(gè)性。在框架符合規(guī)范的情況下,設(shè)計(jì)具有自己獨(dú)特風(fēng)格的界面尤為重要,在商業(yè)軟件流通中會(huì)有很好的潛移默化的廣告效用。安裝界面上應(yīng)有單位介紹或產(chǎn)品介紹,并有自己的圖標(biāo)。第二章、數(shù)據(jù)庫(kù)設(shè)計(jì)原則數(shù)據(jù)庫(kù)技術(shù)是信息資源管理最有效的手段。數(shù)據(jù)庫(kù)設(shè)計(jì)是建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)的核心和基礎(chǔ),它要求對(duì)于指定的應(yīng)用環(huán)境,構(gòu)造出較優(yōu)的數(shù)據(jù)庫(kù)模式,建立起數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),并使系統(tǒng)能有效地存儲(chǔ)數(shù)據(jù),滿足用戶的各種應(yīng)用需求。1、設(shè)計(jì)數(shù)據(jù)庫(kù)之前1)理解客戶需求,詢問(wèn)用戶如何看待未來(lái)需求變化。讓客戶解釋其需求,而且隨著開(kāi)發(fā)的繼續(xù),還要經(jīng)常詢問(wèn)客戶以保證其需求仍然在開(kāi)發(fā)的目的之中;2)了解企業(yè)業(yè)務(wù),在以后的開(kāi)發(fā)階段節(jié)約大量時(shí)間;3)重視輸入輸出。在定義數(shù)據(jù)庫(kù)表和字段需求(輸入)時(shí),首先應(yīng)檢查現(xiàn)有的或者已經(jīng)設(shè)計(jì)出的報(bào)表、查詢和視圖(輸出),以決定為了支持這些輸出哪些是必要的表和字段;4)創(chuàng)建數(shù)據(jù)字典和E-R圖,對(duì)SQL表達(dá)式的文檔化來(lái)說(shuō)這是完全必要的;5)定義標(biāo)準(zhǔn)的對(duì)象命名規(guī)范。2、表與字段的設(shè)計(jì)1)表設(shè)計(jì)原則(1)標(biāo)準(zhǔn)化和規(guī)范化;數(shù)據(jù)的標(biāo)準(zhǔn)化有助于消除數(shù)據(jù)庫(kù)中的數(shù)據(jù)冗余。標(biāo)準(zhǔn)化有好幾種形式,但ThirdNormalForm(3NF)通常被認(rèn)為在性能、擴(kuò)展性和數(shù)據(jù)完整性方面達(dá)到了最好平衡。事實(shí)上,為了效率的緣故,對(duì)表不進(jìn)行標(biāo)準(zhǔn)化有時(shí)也是必要的。(2)采用數(shù)據(jù)驅(qū)動(dòng),增強(qiáng)系統(tǒng)的靈活性與擴(kuò)展性;(3)在設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候考慮到哪些數(shù)據(jù)字段將來(lái)可能會(huì)發(fā)生變更。2)字段設(shè)計(jì)原則(1)每個(gè)表中都應(yīng)該添加的3個(gè)有用的字段;① dRecordCreationDate,在SQLServer下默認(rèn)為GETDATE();② sRecordCreator,在SQLServer下默認(rèn)為NOTNULLDEFAULTUSER;③ nRecordVersion,記錄的版本標(biāo)記,有助于準(zhǔn)確說(shuō)明記錄中出現(xiàn)null數(shù)據(jù)或者丟失數(shù)據(jù)的原因。(2)對(duì)地址和電話采用多個(gè)字段,電話號(hào)碼和郵件地址最好擁有自己的數(shù)據(jù)表,其間具有自身的類型和標(biāo)記類別;(3)使用角色實(shí)體定義屬于某類別的列,創(chuàng)建特定的時(shí)間關(guān)聯(lián)關(guān)系,從而可以實(shí)現(xiàn)自我文檔化;(4)選擇數(shù)字類型和文本類型要盡量充足,否則無(wú)法進(jìn)行計(jì)算操作;(5)增加刪除標(biāo)記字段。在關(guān)系數(shù)據(jù)庫(kù)里不要單獨(dú)刪除某一行,而在表中包含一個(gè)“刪除標(biāo)記”字段,這樣就可以把行標(biāo)記為刪除。3、鍵和索引1)鍵選擇原則(1)鍵設(shè)計(jì)4原則①所有的鍵都必須唯一;②為關(guān)聯(lián)字段創(chuàng)建外鍵;③避免使用復(fù)合鍵;④外鍵總是關(guān)聯(lián)唯一的鍵字段。(2)使用系統(tǒng)生成的主鍵,控制數(shù)據(jù)庫(kù)的索引完整性,并且當(dāng)擁有一致的鍵結(jié)構(gòu)時(shí),找到邏輯缺陷很容易;(3)不要用用戶的鍵,通常情況下不要選擇用戶可編輯的字段作為鍵;(4)可選鍵有時(shí)可作主鍵,能擁有建立強(qiáng)大索引的能力。2)索引使用原則索引是從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)的最高效方式之一,絕大多數(shù)的數(shù)據(jù)庫(kù)性能問(wèn)題都可以采用索引技術(shù)得到解決。(1)邏輯主鍵使用唯一的成組索引,對(duì)系統(tǒng)鍵(作為存儲(chǔ)過(guò)程)采用唯一的非成組索引,對(duì)任何外鍵列采用非成組索引??紤]數(shù)據(jù)庫(kù)的空間有多大,表如何進(jìn)行訪問(wèn),還有這些訪問(wèn)是否主要用于讀寫;(2)大多數(shù)數(shù)據(jù)庫(kù)都索引自動(dòng)創(chuàng)建的主鍵字段,但是不能忘了索引外鍵,它們也是經(jīng)常使用的鍵;(3)不要索引memo/note字段,不要索引大型字段,這樣會(huì)讓索引占用太多的存儲(chǔ)空間;(4)不要索引常用的小型表,不要為小型數(shù)據(jù)表設(shè)置任何鍵,尤其當(dāng)它們經(jīng)常有插入和刪除操作時(shí)。4、數(shù)據(jù)完整性設(shè)計(jì)1)完整性實(shí)現(xiàn)機(jī)制(1)實(shí)體完整性:主鍵(2)參照完整性① 父表中刪除數(shù)據(jù):級(jí)聯(lián)刪除,受限刪除,置空值;② 父表中插入數(shù)據(jù):受限插入,遞歸插入;③ 父表中更新數(shù)據(jù):級(jí)聯(lián)更新,受限更新,置空值。DBMS對(duì)參照完整性可以有兩種方法實(shí)現(xiàn):外鍵實(shí)現(xiàn)機(jī)制(約束規(guī)則)和觸發(fā)器實(shí)現(xiàn)機(jī)制。(3)用戶定義完整性:NOTNULL,CHECK,觸發(fā)器。2)用約束而非商務(wù)規(guī)則強(qiáng)制數(shù)據(jù)完整性;3)強(qiáng)制指示完整性。在有害數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)之前將其剔除,激活數(shù)據(jù)庫(kù)系統(tǒng)的指示完整性特性;4)使用查找控制數(shù)據(jù)完整性,控制數(shù)據(jù)完整性的最佳方式就是限制用戶的選擇;5)采用視圖。可以為應(yīng)用程序建立專門的視圖而不必非要應(yīng)用程序直接訪問(wèn)數(shù)據(jù)表,這樣做還等于在處理數(shù)據(jù)庫(kù)變更時(shí)給你提供了更多的自由。5、其他設(shè)計(jì)1)避免使用觸發(fā)器,確實(shí)需要的話最好集中對(duì)它文檔化;2)使用常用英語(yǔ)(或者其他任何語(yǔ)言)而不要使用編碼,確實(shí)需要的話可以在編碼旁附上用戶知道的英語(yǔ);3)保存常用信息。讓一個(gè)表專門存放一般數(shù)據(jù)庫(kù)信息,可以實(shí)現(xiàn)一種簡(jiǎn)單機(jī)制跟蹤數(shù)據(jù)庫(kù),這樣做對(duì)非客戶機(jī)/服務(wù)器環(huán)境特別有用;4)包含版本機(jī)制,在修改數(shù)據(jù)庫(kù)結(jié)構(gòu)時(shí)更為方便;5)編制文檔,對(duì)所有的快捷方式、命名規(guī)范、限制和函數(shù)都要編制文檔;6)反復(fù)測(cè)試,保證選擇的數(shù)據(jù)類型滿足商業(yè)要求;7)檢查設(shè)計(jì),在開(kāi)發(fā)期間檢查數(shù)據(jù)庫(kù)設(shè)計(jì)的常用技術(shù)是通過(guò)其所支持的應(yīng)用程序原型檢查數(shù)據(jù)庫(kù)。6、數(shù)據(jù)庫(kù)命名規(guī)范1)實(shí)體(表)的命名(1)表以名詞或名詞短語(yǔ)命名,給表的別名定義簡(jiǎn)單規(guī)則;(2)如果表或者是字段的名稱僅有一個(gè)單詞,那么建議不使用縮寫,而是用完整的單詞;(3)所有的存儲(chǔ)值列表的表前面加上前綴Z,目的是將這些值列表類排序在數(shù)據(jù)庫(kù)最后;(4)所有的冗余類的命名(主要是累計(jì)表)前面加上前綴X。冗余類是為了提高數(shù)據(jù)庫(kù)效率,非規(guī)范化數(shù)據(jù)庫(kù)的時(shí)候加入的字段或者表;(5)關(guān)聯(lián)類通過(guò)用下劃線連接兩個(gè)基本類之后,再加前綴R的方式命名,后面按照字母順序羅列兩個(gè)表名或者表名的縮寫。關(guān)聯(lián)表用于保存多對(duì)多關(guān)系。2)屬性(列)的命名(1)采用有意義的列名,表內(nèi)的列要針對(duì)鍵采用一整套設(shè)計(jì)規(guī)則;每一個(gè)表都將有一個(gè)自動(dòng)ID作為主健,邏輯上的主健作為第一組候選主健來(lái)定義。如果是自定義的邏輯上的編碼則用縮寫加“ID”的方法命名。如果鍵是數(shù)字類型,你可以用_NO作為后綴。如果是字符類型則可以采用_CODE后綴。對(duì)列名應(yīng)該采用標(biāo)準(zhǔn)的前綴和后綴。(2)所有的屬性加上有關(guān)類型的后綴,如果還需要其它的后綴,都放在類型后綴之前。數(shù)據(jù)類型是文本的字段,類型后綴TX可以不寫,有些類型比較明顯的字段也可以不寫類型后綴;(3)采用前綴命名。給每個(gè)表的列名都采用統(tǒng)一的前綴,那么在編寫SQL表達(dá)式的時(shí)候會(huì)得到大大的簡(jiǎn)化,但這樣做也有缺點(diǎn),比如會(huì)破壞自動(dòng)表連接工具的作用。3)視圖的命名(1)視圖以V作為前綴,其他命名規(guī)則和表的命名類似;(2)命名應(yīng)盡量體現(xiàn)各視圖的功能。4)觸發(fā)器的命名觸發(fā)器以TR作為前綴,觸發(fā)器名為相應(yīng)的表名加上后綴,Insert觸發(fā)器加_I,Delete觸發(fā)器加_D,Update觸發(fā)器加_U。如:TR_User_I,TR_User_D,TR_User_U。5)存儲(chǔ)過(guò)程名存儲(chǔ)過(guò)程應(yīng)以UP_開(kāi)頭,和系統(tǒng)的存儲(chǔ)過(guò)程區(qū)分,后續(xù)部分主要以動(dòng)賓形式構(gòu)成,并用下劃線分割各個(gè)組成部分。6)變量名變量名采用小寫,若屬于詞組形式,用下劃線分隔每個(gè)單詞。7)命名中其他注意事項(xiàng)(1)以上命名都不得超過(guò)30個(gè)字符的系統(tǒng)限制,變量名的長(zhǎng)度限制為29(不包括標(biāo)識(shí)字符@);(2)數(shù)據(jù)對(duì)象、變量的命名都采用英文字符,禁止使用中文命名,絕對(duì)不要在對(duì)象名的字符之間留空格;(3)小心保留詞,要保證你的字段名沒(méi)有和保留詞、數(shù)據(jù)庫(kù)系統(tǒng)或者常用訪問(wèn)方法沖突;(4)保持字段名和類型的一致性,在命名字段并為其指定數(shù)據(jù)類型的時(shí)候一定要保證一致性。第三章、編程規(guī)范總則1、排版1)程序塊要采用縮進(jìn)風(fēng)格編寫,縮進(jìn)的空格數(shù)為4個(gè),對(duì)于由開(kāi)發(fā)工具自動(dòng)生成的代碼可以不一致;2)相對(duì)獨(dú)立的程序塊之間、變量說(shuō)明之后必須加空行;3)較長(zhǎng)的語(yǔ)句要分成多行書(shū)寫,長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語(yǔ)句可讀;4)循環(huán)、判斷等語(yǔ)句中若有較長(zhǎng)的表達(dá)式或語(yǔ)句,則要進(jìn)行適應(yīng)的劃分,同3);5)若函數(shù)或過(guò)程中的參數(shù)較長(zhǎng),也要進(jìn)行適當(dāng)?shù)膭澐郑?)不允許把多個(gè)短語(yǔ)句寫在一行中,即一行只寫一條語(yǔ)句;7)if、for、do、while、case、switch、default等語(yǔ)句自占一行,且if、for、do、while等語(yǔ)句的執(zhí)行語(yǔ)句部分無(wú)論多少都要加括號(hào){};8)對(duì)齊只使用空格鍵,不使用TAB鍵;9)函數(shù)或過(guò)程的開(kāi)始、結(jié)構(gòu)的定義及循環(huán)、判斷等語(yǔ)句中的代碼都要采用縮進(jìn)風(fēng)格,case語(yǔ)句下的處理語(yǔ)句也要遵從語(yǔ)句縮進(jìn)要求;10)程序塊的分界符(如大括號(hào)‘{’和‘}’)應(yīng)各獨(dú)占一行并且位于同一列,同時(shí)與引用它們的語(yǔ)句左對(duì)齊。在函數(shù)體的開(kāi)始定義、類的定義、結(jié)構(gòu)的定義、枚舉的定義以及if、for、do、while、switch、case語(yǔ)句中的程序都要采用如上的縮進(jìn)方式;11)在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等操作時(shí),它們之間的操作符之前、之后或者前后要加空格,但不要連續(xù)留兩個(gè)以上空格。進(jìn)行非對(duì)等操作時(shí),如果是關(guān)系密切的操作符(如->)后不應(yīng)加空格。采用這種松散方式編寫代碼的目的是使代碼更加清晰,在已經(jīng)非常清晰的語(yǔ)句中沒(méi)有必要再留空格。如果語(yǔ)句已足夠清晰,則括號(hào)內(nèi)側(cè)(即左括號(hào)后面和右括號(hào)前面)不需要加空格,多重括號(hào)間也不必加空格。在長(zhǎng)語(yǔ)句中,如果需要加的空格非常多,那么應(yīng)該保持整體清晰,而在局部不加空格。(1)逗號(hào)、分號(hào)只在后面加空格。inta,b,c;(2)比較操作符、賦值操作符、算術(shù)操作符、邏輯操作符、位操作符等雙目操作符的前后加空格。a=bc;a*=2;a=b^2;(3)"!"、"~"、""、"--"、"&"(地址運(yùn)算符)等單目操作符前后不加空格。flag=!isFull;p=&com;i;(4)"->"、"."前后不加空格。(5)if、for、while、switch等與后面的括號(hào)間應(yīng)加空格,使if等關(guān)鍵字更為突出、明顯。if(a>=b&&c>d)12)一行程序以小于80字符為宜,不要寫得過(guò)長(zhǎng)。2、注釋注釋應(yīng)該說(shuō)明代碼的目的,要講清為什么要那么做,而不是怎么去做。1)一般情況下,源程序有效注釋量必須在20%以上。注釋的原則是有助于對(duì)程序的閱讀理解,在該加的地方都加,注釋不宜太多也不能太少,注釋語(yǔ)言必須準(zhǔn)確、易懂、簡(jiǎn)潔;2)注釋格式盡量統(tǒng)一,建議使用“/*……*/”;3)說(shuō)明性文件(如頭文件.h文件、.inc文件等)頭部應(yīng)進(jìn)行注釋,注釋必須列出:版權(quán)說(shuō)明、版本號(hào)、生成日期、作者、內(nèi)容、功能、與其它文件的關(guān)系等,頭文件的注釋中還應(yīng)有函數(shù)功能簡(jiǎn)要說(shuō)明;4)源文件頭部應(yīng)進(jìn)行注釋,列出:版權(quán)說(shuō)明、版本號(hào)、生成日期、作者、模塊功能、主要函數(shù)及其功能等;5)函數(shù)頭部應(yīng)進(jìn)行注釋,列出:函數(shù)功能、輸入?yún)?shù)、輸出參數(shù)、返回值等;6)邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,以保證注釋與代碼的一致性;7)避免在注釋中使用縮寫,特別是非常用的縮寫。如無(wú)法避免,應(yīng)對(duì)縮寫進(jìn)行必要的說(shuō)明;8)注釋應(yīng)與其描述的代碼相近,對(duì)代碼的注釋應(yīng)放在其上方或右方(對(duì)單條語(yǔ)句的注釋)相鄰位置,如放于上方則需與其上面的代碼用空行隔開(kāi);9)變量、常量、宏的注釋有時(shí)也是必須的,應(yīng)放在其上方相鄰位置或右方;10)數(shù)據(jù)結(jié)構(gòu)聲明(包括數(shù)組、結(jié)構(gòu)、類、枚舉等),如果其命名不是充分自注釋的,必須加以注釋。對(duì)數(shù)據(jù)結(jié)構(gòu)的注釋應(yīng)放在其上方相鄰位置,對(duì)結(jié)構(gòu)中的每個(gè)域的注釋放在此域的右方;11)全局變量要有較詳細(xì)的注釋,包括對(duì)其功能、取值范圍、哪些函數(shù)或過(guò)程存取它以及存取時(shí)注意事項(xiàng)等的說(shuō)明;12)將注釋與其上面的代碼用空行隔開(kāi),注釋與所描述內(nèi)容進(jìn)行同樣的縮排;13)對(duì)變量的定義和分支語(yǔ)句(條件分支、循環(huán)語(yǔ)句等)必須編寫注釋。這些語(yǔ)句往往是程序?qū)崿F(xiàn)某一特定功能的關(guān)鍵,對(duì)于維護(hù)人員來(lái)說(shuō),良好的注釋幫助更好地理解程序,有時(shí)甚至優(yōu)于看設(shè)計(jì)文檔;14)通過(guò)對(duì)函數(shù)或過(guò)程、變量、結(jié)構(gòu)等正確的命名以及合理地組織代碼的結(jié)構(gòu),使代碼成為自注釋的,減少不必要的注釋;15)當(dāng)代碼段較長(zhǎng),特別是多重嵌套時(shí),在程序塊的結(jié)束行右方加注釋標(biāo)記,以表明某程序塊的結(jié)束;16)建議注釋多使用中文,除非能用非常流利準(zhǔn)確的英文表達(dá)。3、標(biāo)識(shí)符命名1)標(biāo)識(shí)符的命名要清晰明了,有明確含義,同時(shí)使用完整的單詞或大家基本可以理解的縮寫,避免使人產(chǎn)生誤解。較長(zhǎng)的單詞可取單詞的頭幾個(gè)字母形成縮寫,一些單詞有大家公認(rèn)的縮寫;2)命名中若使用特殊約定或縮寫,應(yīng)該在源文件的開(kāi)始之處,進(jìn)行必要的注釋說(shuō)明;3)命名風(fēng)格要自始至終保持一致;4)對(duì)于變量命名,禁止取單個(gè)字符(如i、j、k...)。單個(gè)字符容易敲錯(cuò),且編譯時(shí)又不易檢查出來(lái)。建議除了要有具體含義外,還能表明其變量類型、數(shù)據(jù)類型等,但i、j、k作局部循環(huán)變量是可以的;5)命名規(guī)范必須與所使用的系統(tǒng)風(fēng)格保持一致,并在同一項(xiàng)目中統(tǒng)一。除非必要,不要用數(shù)字或較奇怪的字符來(lái)定義標(biāo)識(shí)符;6)在同一軟件產(chǎn)品內(nèi),應(yīng)規(guī)劃好接口部分標(biāo)識(shí)符(變量、結(jié)構(gòu)、函數(shù)及常量)的命名,防止編譯、鏈接時(shí)產(chǎn)生沖突;7)用正確的反義詞組命名具有互斥意義的變量或相反動(dòng)作的函數(shù)等;下面是一些在軟件中常用的反義詞組:add/removebegin/endcreate/destroyinsert/deleteadd/deleteget/releaseincrement/decrementput/getlock/unlockopen/closefirst/lastmin/maxold/newstart/stopnext/previoussend/receiveshow/hidesource/targetsource/destinationcut/pasteup/down8)除了特殊應(yīng)用,應(yīng)避免使用以下劃線開(kāi)始和結(jié)尾的定義。4、可讀性1)注意運(yùn)算符的優(yōu)先級(jí),并用括號(hào)明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級(jí);2)避免使用不易理解的數(shù)字,用有意義的標(biāo)識(shí)來(lái)替代;3)源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰,便于程序閱讀和查找;4)不要使用難懂的技巧性很高的語(yǔ)句,除非很有必要時(shí)。程序的高效率并不等同于語(yǔ)句的高技巧,而在于算法。5、變量與結(jié)構(gòu)1)去掉沒(méi)必要的公共變量,以降低模塊間的耦合度;2)仔細(xì)定義并明確公共變量的含義、作用、取值范圍及公共變量間的關(guān)系;3)明確公共變量與操作此公共變量的函數(shù)或過(guò)程的關(guān)系,如訪問(wèn)、修改及創(chuàng)建等。這種關(guān)系的說(shuō)明可在注釋或文檔中描述;4)當(dāng)向公共變量傳遞數(shù)據(jù)時(shí),要十分小心,防止賦與不合理的值或越界等現(xiàn)象發(fā)生。若有必要應(yīng)進(jìn)行合法性檢查,以提高代碼的可靠性、穩(wěn)定性;5)構(gòu)造僅有一個(gè)模塊或函數(shù)可以修改、創(chuàng)建,而其余有關(guān)模塊或函數(shù)只訪問(wèn)的公共變量,防止多個(gè)不同模塊或函數(shù)都可以修改、創(chuàng)建同一公共變量的現(xiàn)象;6)使用嚴(yán)格形式定義的、可移植的標(biāo)準(zhǔn)數(shù)據(jù)類型,盡量不要使用與具體硬件或軟件環(huán)境關(guān)系密切的變量;7)結(jié)構(gòu)的功能要單一,是針對(duì)一種事務(wù)的抽象。結(jié)構(gòu)中的各元素應(yīng)代表同一事務(wù)的不同側(cè)面,而不應(yīng)把描述沒(méi)有關(guān)系或關(guān)系很弱的不同事務(wù)的元素放到同一結(jié)構(gòu)中;8)不同結(jié)構(gòu)間的關(guān)系不要過(guò)于復(fù)雜,否則應(yīng)合為一個(gè)結(jié)構(gòu);9)仔細(xì)設(shè)計(jì)結(jié)構(gòu)中元素的布局與排列順序,使結(jié)構(gòu)容易理解、節(jié)省占用空間,并減少引起誤用的現(xiàn)象;10)結(jié)構(gòu)的設(shè)計(jì)要盡量考慮向前兼容和以后的版本升級(jí),并為某些未來(lái)可能的應(yīng)用保留余地;11)留心具體語(yǔ)言及編譯器處理不同數(shù)據(jù)類型的原則及有關(guān)細(xì)節(jié);12)編程時(shí),要注意數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換。對(duì)編譯系統(tǒng)默認(rèn)的數(shù)據(jù)類型轉(zhuǎn)換要有充分的認(rèn)識(shí),盡量減少?zèng)]有必要的數(shù)據(jù)類型默認(rèn)轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換,合理地設(shè)計(jì)數(shù)據(jù)并使用自定義數(shù)據(jù)類型,避免數(shù)據(jù)間進(jìn)行不必要的類型轉(zhuǎn)換;13)對(duì)自定義數(shù)據(jù)類型進(jìn)行恰當(dāng)命名,使它成為自描述性的,以提高代碼可讀性,但要注意其命名方式在同一產(chǎn)品中的統(tǒng)一。6、函數(shù)與過(guò)程1)設(shè)計(jì)高扇入、合理扇出(小于7)的函數(shù)。較良好的軟件結(jié)構(gòu)通常是頂層函數(shù)的扇出較高,中層函數(shù)的扇出較少,而底層函數(shù)則扇入到公共模塊中;2)函數(shù)的規(guī)模盡量限制在200行以內(nèi),不包括注釋和空格行;3)對(duì)所調(diào)用函數(shù)的錯(cuò)誤返回碼要仔細(xì)、全面地處理;4)在同一項(xiàng)目組應(yīng)明確規(guī)定對(duì)接口函數(shù)參數(shù)的合法性檢查應(yīng)由函數(shù)的調(diào)用者負(fù)責(zé)還是由接口函數(shù)本身負(fù)責(zé),缺省是由函數(shù)調(diào)用者負(fù)責(zé);5)防止將函數(shù)的參數(shù)作為工作變量。對(duì)必須改變的參數(shù),最好先用局部變量代之,再將該局部變量的內(nèi)容賦給該參數(shù);6)一個(gè)函數(shù)僅完成一件功能,不要設(shè)計(jì)多用途的函數(shù)。函數(shù)名應(yīng)準(zhǔn)確描述函數(shù)的功能;7)函數(shù)的功能應(yīng)該是可以預(yù)測(cè)的,也就是說(shuō)只要輸入數(shù)據(jù)相同就應(yīng)產(chǎn)生同樣的輸出;8)避免設(shè)計(jì)多參數(shù)函數(shù),不使用的參數(shù)從接口中去掉,減少函數(shù)間接口的復(fù)雜度;9)非調(diào)度函數(shù)應(yīng)減少或防止控制參數(shù),盡量只使用數(shù)據(jù)參數(shù),防止函數(shù)間的控制耦合;10)檢查函數(shù)所有參數(shù)輸入與非參數(shù)輸入的有效性;11)在編程時(shí),經(jīng)常遇到在不同函數(shù)中使用相同的代碼,許多開(kāi)發(fā)人員都愿把這些代碼提出來(lái),并構(gòu)成一個(gè)新函數(shù)。若這些代碼關(guān)聯(lián)較大并且是完成一個(gè)功能的,那么這種構(gòu)造是合理的,否則這種構(gòu)造將產(chǎn)生隨機(jī)內(nèi)聚的函數(shù);12)功能不明確且較小的函數(shù),特別是僅有一個(gè)上級(jí)函數(shù)調(diào)用它時(shí),應(yīng)考慮把它合并到上級(jí)函數(shù)中,而不必單獨(dú)存在;13)減少函數(shù)本身或函數(shù)間的遞歸調(diào)用。除非為某些算法或功能的實(shí)現(xiàn)方便,應(yīng)減少?zèng)]必要的遞歸調(diào)用;14)仔細(xì)分析模塊的功能及性能需求,并進(jìn)一步細(xì)分,若有必要畫出有關(guān)數(shù)據(jù)流圖,據(jù)此來(lái)進(jìn)行模塊的函數(shù)劃分與組織;15)對(duì)于提供了返回值的函數(shù),在引用時(shí)最好使用其返回值;16)當(dāng)一個(gè)過(guò)程(函數(shù))中對(duì)較長(zhǎng)變量(一般是結(jié)構(gòu)的成員)有較多引用時(shí),可以用一個(gè)意義相當(dāng)?shù)暮甏妗?、可測(cè)性1)在同一項(xiàng)目組或產(chǎn)品組內(nèi),要有一套統(tǒng)一的為集成測(cè)試與系統(tǒng)聯(lián)調(diào)準(zhǔn)備的調(diào)測(cè)開(kāi)關(guān)及相應(yīng)打印函數(shù),并且要有詳細(xì)的說(shuō)明;2)在同一項(xiàng)目組或產(chǎn)品組內(nèi),調(diào)測(cè)打印出的信息串的格式要有統(tǒng)一的形式。信息串中至少要有所在模塊名(或源文件名)及行號(hào);3)編程的同時(shí)要為單元測(cè)試選擇恰當(dāng)?shù)臏y(cè)試點(diǎn),并仔細(xì)構(gòu)造測(cè)試代碼、測(cè)試用例,同時(shí)給出明確的注釋說(shuō)明。測(cè)試代碼部分應(yīng)作為(模塊中的)一個(gè)子模塊,以方便測(cè)試代碼在模塊中的安裝與拆卸(通過(guò)調(diào)測(cè)開(kāi)關(guān));4)使用斷言來(lái)發(fā)現(xiàn)軟件問(wèn)題,提高代碼可測(cè)性。用斷言來(lái)檢查程序正常運(yùn)行時(shí)不應(yīng)發(fā)生但在調(diào)測(cè)時(shí)有可能發(fā)生的非法情況,但不能用斷言來(lái)檢查最終產(chǎn)品肯定會(huì)出現(xiàn)且必須處理的錯(cuò)誤情況;5)對(duì)較復(fù)雜的斷言加上明確的注釋,用斷言確認(rèn)函數(shù)的參數(shù),保證沒(méi)有定義的特性或功能不被使用,對(duì)程序開(kāi)發(fā)環(huán)境的假設(shè)進(jìn)行檢查;6)正式軟件產(chǎn)品中應(yīng)把斷言及其它調(diào)測(cè)代碼去掉(即把有關(guān)的調(diào)測(cè)開(kāi)關(guān)關(guān)掉),以加快軟件運(yùn)行速度;7)在軟件系統(tǒng)中設(shè)置與取消有關(guān)測(cè)試手段,不能對(duì)軟件實(shí)現(xiàn)的功能等產(chǎn)生影響;8)用調(diào)測(cè)開(kāi)關(guān)來(lái)切換軟件的DEBUG版和正式版,而不要同時(shí)存在正式版本和DEBUG版本的不同源文件,以減少維護(hù)的難度;9)軟件的DEBUG版本和發(fā)行版本應(yīng)該統(tǒng)一維護(hù),不允許分家,并且要時(shí)刻注意保證兩個(gè)版本在實(shí)現(xiàn)功能上的一致性;10)在編寫代碼之前,應(yīng)預(yù)先設(shè)計(jì)好程序調(diào)試與測(cè)試的方法和手段,并設(shè)計(jì)好各種調(diào)測(cè)開(kāi)關(guān)及相應(yīng)測(cè)試代碼如打印函數(shù)等;11)調(diào)測(cè)開(kāi)關(guān)應(yīng)分為不同級(jí)別和類型。針對(duì)模塊或系統(tǒng)某部分代碼的調(diào)測(cè),針對(duì)模塊或系統(tǒng)某功能的調(diào)測(cè),對(duì)性能、容量等的測(cè)試;12)編寫防錯(cuò)程序,然后在處理錯(cuò)誤之后可用斷言宣布發(fā)生錯(cuò)誤。8、程序效率1)在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測(cè)性的前提下提高代碼效率,包括全局效率、局部效率、時(shí)間效率及空間效率;2)局部效率應(yīng)為全局效率服務(wù),不能因?yàn)樘岣呔植啃识鴮?duì)全局效率造成影響;3)通過(guò)對(duì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的劃分與組織的改進(jìn),以及對(duì)程序算法的優(yōu)化來(lái)提高空間效率;4)仔細(xì)考慮循環(huán)體內(nèi)的語(yǔ)句是否可以放在循環(huán)體之外,使循環(huán)體內(nèi)工作量最小,從而提高程序的時(shí)間效率;5)仔細(xì)考查、分析系統(tǒng)及模塊處理輸入(如事務(wù)、消息等)的方式,并加以改進(jìn);6)對(duì)模塊中函數(shù)的劃分及組織方式進(jìn)行分析、優(yōu)化,改進(jìn)模塊中函數(shù)的組織結(jié)構(gòu),提高程序效率;7)不應(yīng)花過(guò)多的時(shí)間拼命地提高調(diào)用不很頻繁的函數(shù)代碼的效率;8)仔細(xì)地構(gòu)造或直接用匯編編寫調(diào)用頻繁或性能要求極高的函數(shù)。嵌入?yún)R編可提高時(shí)間及空間效率,但也存在一定風(fēng)險(xiǎn);9)在保證程序質(zhì)量的前提下,通過(guò)壓縮代碼量、去掉不必要代碼以及減少不必要的局部和全局變量,來(lái)提高空間效率;10)盡量減少循環(huán)嵌套層次。在多重循環(huán)中,應(yīng)將最忙的循環(huán)放在最內(nèi)層,以減少CPU切入循環(huán)層的次數(shù);11)避免循環(huán)體內(nèi)含判斷語(yǔ)句,應(yīng)將循環(huán)語(yǔ)句置于判斷語(yǔ)句的代碼塊之中;12)盡量用乘法或其它方法代替除法,特別是浮點(diǎn)運(yùn)算中的除法;13)不要一味地追求緊湊的代碼,因?yàn)榫o湊的代碼并不代表高效的機(jī)器碼。9、質(zhì)量保證1)在軟件設(shè)計(jì)過(guò)程中構(gòu)筑軟件質(zhì)量;2)代碼質(zhì)量保證優(yōu)先原則(1)正確性,指程序要實(shí)現(xiàn)設(shè)計(jì)要求的功能;(2)穩(wěn)定性/安全性,指程序穩(wěn)定、可靠、安全;(3)可測(cè)試性,指程序要具有良好的可測(cè)試性;(4)規(guī)范/可讀性,指程序書(shū)寫風(fēng)格、命名規(guī)則等要符合規(guī)范;(5)全局效率,指軟件系統(tǒng)的整體效率;(6)局部效率,指某個(gè)模塊、子模塊、函數(shù)的本身效率;(7)個(gè)人表達(dá)方式,指?jìng)€(gè)人編程習(xí)慣。3)只引用屬于自己的存貯空間;4)防止引用已經(jīng)釋放的內(nèi)存空間;5)過(guò)程/函數(shù)中分配的內(nèi)存,在過(guò)程/函數(shù)退出之前要釋放;6)過(guò)程/函數(shù)中申請(qǐng)的(為打開(kāi)文件而使用的)文件句柄,在過(guò)程/函數(shù)退出之前要關(guān)閉;7)防止內(nèi)存操作越界;8)認(rèn)真處理程序所能遇到的各種出錯(cuò)情況;9)系統(tǒng)運(yùn)行之初,要初始化有關(guān)變量及運(yùn)行環(huán)境,防止未經(jīng)初始化的變量被引用,并對(duì)加載到系統(tǒng)中的數(shù)據(jù)進(jìn)行一致性檢查;10)嚴(yán)禁隨意更改其它模塊或系統(tǒng)(不屬于自己)的有關(guān)設(shè)置和配置,不能隨意改變與其它模塊的接口;11)注意易混淆的操作符。當(dāng)編完程序后,應(yīng)從頭至尾檢查一遍這些操作符,以防止拼寫錯(cuò)誤;12)有可能的話,if語(yǔ)句盡量加上else分支,對(duì)沒(méi)有else分支的語(yǔ)句要小心對(duì)待。switch語(yǔ)句必須有default分支;13)不使用與硬件或操作系統(tǒng)關(guān)系很大的語(yǔ)句,而使用建議的標(biāo)準(zhǔn)語(yǔ)句,以提高軟件的可移植性和可重用性;14)精心構(gòu)造算法,并對(duì)其性能、效率進(jìn)行測(cè)試,對(duì)較關(guān)鍵的算法最好使用其它算法來(lái)確認(rèn);15)注意表達(dá)式是否會(huì)上溢、下溢,使用變量時(shí)要注意其邊界值;16)系統(tǒng)應(yīng)具有一定的容錯(cuò)能力,對(duì)一些錯(cuò)誤事件(如用戶誤操作等)能進(jìn)行自動(dòng)補(bǔ)救;17)對(duì)一些具有危險(xiǎn)性的操作代碼要仔細(xì)考慮,防止對(duì)數(shù)據(jù)、硬件等的安全構(gòu)成危害,以提高系統(tǒng)的安全性。10、代碼編輯、編譯與審查1)同產(chǎn)品軟件(項(xiàng)目組)內(nèi),最好使用相同的編輯器,并使用相同的設(shè)置選項(xiàng);2)打開(kāi)編譯器的所有告警開(kāi)關(guān)對(duì)程序進(jìn)行編譯;3)通過(guò)代碼走讀及審查方式對(duì)代碼進(jìn)行檢查;4)編寫代碼時(shí)要注意隨時(shí)保存,并定期備份,防止由于斷電、硬盤損壞等原因造成代碼丟失;5)某些語(yǔ)句經(jīng)編譯后產(chǎn)生告警,如果你認(rèn)為它是正確的,那么應(yīng)通過(guò)某種手段去掉告警信息;6)使用代碼檢查工具對(duì)源程序檢查,使用軟件工具進(jìn)行代碼審查。11、代碼測(cè)試與維護(hù)1)單元測(cè)試要求至少達(dá)到語(yǔ)句覆蓋;2)整理或優(yōu)化后的代碼要經(jīng)過(guò)審查及測(cè)試;3)代碼版本升級(jí)要經(jīng)過(guò)嚴(yán)格測(cè)試;4)使用工具軟件對(duì)代碼版本進(jìn)行維護(hù);5)正式版本上軟件的任何修改都應(yīng)有詳細(xì)的文檔記錄;6)發(fā)現(xiàn)錯(cuò)誤立即修改,并且要記錄下來(lái);7)關(guān)鍵的代碼在匯編級(jí)跟蹤;8)仔細(xì)設(shè)計(jì)并分析測(cè)試用例,使測(cè)試用例覆蓋盡可能多的情況,以提高測(cè)試用例的效率;9)盡可能模擬出程序的各種出錯(cuò)情況,對(duì)出錯(cuò)處理代碼進(jìn)行充分的測(cè)試;10)仔細(xì)測(cè)試代碼處理數(shù)據(jù)、變量的邊界情況;11)保留測(cè)試信息,以便分析、總結(jié)經(jīng)驗(yàn)及進(jìn)行更充分的測(cè)試;12)不應(yīng)通過(guò)“試”來(lái)解決問(wèn)題,應(yīng)尋找問(wèn)題的根本原因;13)對(duì)自動(dòng)消失的錯(cuò)誤進(jìn)行分析,搞清楚錯(cuò)誤是如何消失的;14)測(cè)試時(shí)應(yīng)設(shè)法使很少發(fā)生的事件經(jīng)常發(fā)生;15)明確模塊或函數(shù)處理哪些事件,并使它們經(jīng)常發(fā)生;16)堅(jiān)持在編碼階段就對(duì)代碼進(jìn)行徹底的單元測(cè)試,不要等以后的測(cè)試工作來(lái)發(fā)現(xiàn)問(wèn)題;17)去除代碼運(yùn)行的隨機(jī)性,讓函數(shù)運(yùn)行的結(jié)果可預(yù)測(cè),并使出現(xiàn)的錯(cuò)誤可再現(xiàn)。畢業(yè)論文畢業(yè)論文題目:三色廣告牌的制作三色廣告牌的制作摘要:本文詳細(xì)介紹了基于單片機(jī)89S52和復(fù)雜邏輯器件EPM712884-15的LED點(diǎn)陣式漢字顯示系統(tǒng)的硬件結(jié)構(gòu)、功能特點(diǎn)、顯示數(shù)據(jù)的處理方式、軟件框圖,并給出部分程序。該系統(tǒng)能完成時(shí)間顯示、漢字動(dòng)畫處理、循環(huán)顯示等功能。關(guān)鍵詞:?jiǎn)纹瑱C(jī)、復(fù)雜邏輯器件、LED點(diǎn)陣Three-colorbillboardAbstract:Thethesisintroducesdetailedthehardwarestructure,functionalfeatures,thewaystodealwiththedemonstrationdata,softwareframeoftheLEDlatticecharactersystemwhichbasesonthemonolithicintegratedcircuit89S52andthecomplexlogicalappliance.Meanwhile,itshowspartialprocedures.Thissystemcancompletesuchfunctionsas:displayingthetime;handlingthecyclicdisplayofcharacterandsoon.Keywords:Monolithicintegratedcircuit;Complexlogicalcomponent;LEDlattice目錄前言…………………31.原理圖………………………42.硬件部分………62.1單片機(jī)AT89S52………62.2CPLDEPM7128SL……………62.2.1介紹CPLE的技術(shù)……………62.2.2.EPM7128SL的主要特征及工作方式…………72.3MAX+PLUS……………92.3.174154集成電路………92.3.2列驅(qū)動(dòng)所需邏輯功能的實(shí)現(xiàn)……………92.3.3行驅(qū)動(dòng)所需邏輯功能的實(shí)現(xiàn)……………102.3.4列驅(qū)動(dòng)電路……………102.3.5行驅(qū)動(dòng)電路……………122.4ISP下載線……………132.5三色點(diǎn)陣……………142.6系統(tǒng)字庫(kù)數(shù)據(jù)存儲(chǔ)部EEPROMAT24C64……………162.7電源…………163.軟件部分…………163.1靜態(tài)字的顯示原理……………163.2移動(dòng)字的顯示原理……………174.總結(jié)……………17致謝…………18參考文獻(xiàn)……………19附錄程序……………20三色廣告牌的制作專業(yè)班級(jí):物理系02級(jí)電子(1)班關(guān)杰杰指導(dǎo)教師:蘇祖全助教黃大星助教前言現(xiàn)在流行的LED顯示屏多采用掃描顯示方式.掃描顯示的原理是基于人眼的視覺(jué)暫留效應(yīng),各顯示行(列)輪流顯示,只要刷新頻率不小于24幀/s,人眼感覺(jué)到的將是完整的圖象.不論圖形還是文字,只要控制其組成這些圖形或文字的各個(gè)點(diǎn)所對(duì)應(yīng)的LED器件發(fā)光,就可以得到我們想要的顯示結(jié)果,顯示的方法有靜態(tài)驅(qū)動(dòng)顯示和動(dòng)態(tài)掃描顯示兩種。同時(shí)控制各個(gè)發(fā)光點(diǎn)亮滅的方法稱為靜態(tài)驅(qū)動(dòng)顯示方式,這種顯示方法需要擴(kuò)展單片機(jī)的端口,設(shè)計(jì)出來(lái)的實(shí)物不論從體積還是從經(jīng)濟(jì)上都很龐大。所以,在設(shè)計(jì)時(shí),我們采用動(dòng)態(tài)掃描顯示方法。動(dòng)態(tài)掃描的意思簡(jiǎn)單地說(shuō)就是逐行輪流點(diǎn)亮,這樣各列就可以公用一個(gè)列驅(qū)動(dòng)器,就16x16的點(diǎn)陣來(lái)說(shuō),把所有同一行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起,通過(guò)單片機(jī)送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)給鎖存器鎖存,選通第1行并使其燃亮一定時(shí)間,然后熄滅:再送出第2行數(shù)據(jù)并鎖存,選通第2行使其燃亮相同的時(shí)間,然后熄滅;照此類推,第16行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快時(shí)(每秒24次以上),由于人眼視覺(jué)的暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定不閃爍的圖形了。采用掃描方式進(jìn)行顯示時(shí),每行有一個(gè)行驅(qū)動(dòng)器,各行的同名列共用一個(gè)列驅(qū)動(dòng)器。顯示數(shù)據(jù)通常存儲(chǔ)在單片機(jī)的存儲(chǔ)器中。顯示時(shí)要把一行中各列的數(shù)據(jù)都傳送到相應(yīng)的列驅(qū)動(dòng)器上去,從控制電路到列驅(qū)動(dòng)器的數(shù)據(jù)傳輸可以采用并行方式或串行方式。采用并行方式時(shí),從控制電路到列驅(qū)動(dòng)器的線路數(shù)量大,相應(yīng)的硬件數(shù)目多。當(dāng)列數(shù)很多時(shí),并行傳輸?shù)姆桨甘遣豢扇〉?。而采?位并行總線片選芯片的方法來(lái)完成列數(shù)據(jù)的傳輸.單片機(jī)采用89S52,晶振采用24MHz,以提高刷新的頻率使顯示更穩(wěn)定。P1口輸出行號(hào)經(jīng)EPM7128-84-15譯碼后,產(chǎn)生行選通信號(hào)送入顯示器的行(發(fā)光二極管的陽(yáng)極)進(jìn)行輪流顯示。單片機(jī)的P0口用于發(fā)送8位列數(shù)據(jù),P2口輸出行號(hào)經(jīng)EPM7128-84-15譯碼后產(chǎn)生列選通信號(hào),進(jìn)行列芯片選通.在32*64的三色點(diǎn)陣中,單片機(jī)P1口輸出行號(hào)經(jīng)EPM7128-84-15譯碼后選通第一行,P0口發(fā)送8位顯示數(shù)據(jù)到列驅(qū)動(dòng)芯片TIPC8B273,P2口輸出行號(hào)經(jīng)EPM7128-84-15譯碼后產(chǎn)生列驅(qū)動(dòng)芯片選通信號(hào),進(jìn)行列芯片選通.選中的芯片會(huì)把8位列列顯示數(shù)據(jù)鎖存到列驅(qū)動(dòng)輸出I/O口上.驅(qū)動(dòng)三色點(diǎn)陣的列.因?yàn)橐恍杏?4個(gè)點(diǎn)而一塊驅(qū)動(dòng)芯片是8位.所以選通第一行后要送8個(gè)8位列顯示數(shù)據(jù)到列驅(qū)動(dòng)芯片TIPC8B273完成一行的顯示.32*64三色點(diǎn)陣一共有32行.所以要循環(huán)32次。1.原理圖:該顯示牌由顯示模塊、控制模塊、行驅(qū)動(dòng)模塊、列驅(qū)動(dòng)模塊、ISP下載線接口、電源組成。能夠顯示三種顏色(紅、黃、橙);存儲(chǔ)200個(gè)漢字。文字和圖片能向左移動(dòng)和向上移動(dòng).●顯示模塊:由32塊8*8的雙色點(diǎn)陣組成;●控制模塊:用89S52作為控制核心(有8K的FLASHROM);●行驅(qū)動(dòng)電路:由EPM7128-15可編程邏輯器件及達(dá)林頓管tipc127驅(qū)動(dòng)放大電路構(gòu)成;●列驅(qū)動(dòng)電路:由兩組(紅色一組、黃色一組)TIPC6B273及EPM7128-15可編程邏輯器件構(gòu)成,●ISP下載線接口:是用下載程序的,方便顯示內(nèi)容的更改?!耠娫矗菏怯瞄_(kāi)關(guān)電源來(lái)供電的通過(guò)在電腦中輸入想要顯示的內(nèi)容,用字模轉(zhuǎn)換軟件提取字模。將字模復(fù)制到程序中,更改程序中的字符數(shù),重新編譯。然后通過(guò)ISP下載線直接下載到單片機(jī)里面。這樣三色廣告牌能從右到左和從下到上顯示剛才輸入的文字。2.硬件部分該三色廣告牌,主要由單片機(jī)AT89S52,基于CPLD技術(shù)的EPM7128SL,MAX+PLUS的邏輯電路功能實(shí)現(xiàn),ISP下載線接口,32塊8×8的三色點(diǎn)陣,用于存方字庫(kù)的EEPROMAT24c64,輸出5v的直流開(kāi)關(guān)電源所組成。2.1單片機(jī)AT89S52核心芯片采用ATMEL公司的51系列單機(jī)AT89S52,該芯片帶有8K的程序程序存貯空間,256字節(jié)的RAM,六個(gè)中斷源,帶有ISP監(jiān)控程序,可在線下載。其中P2.5--P2.0口是行驅(qū)動(dòng),選擇任一行亮,P2.4控制前16行的開(kāi)關(guān)允許,P2.5控制后16行的開(kāi)關(guān)允許;P1.4--P1.0口是列驅(qū)動(dòng),鎖存任一點(diǎn)陣數(shù)據(jù),P1.4是鎖存的開(kāi)關(guān)允許,0開(kāi),1關(guān).P0作為數(shù)據(jù)輸出口;P3.3,P3.4分別是EEPROM的SDA和SCL口.2.2CPLDEPM7128SL2.2.1CPLE技術(shù)隨著大規(guī)模集成電路和單片機(jī)的迅速發(fā)展,復(fù)雜可編程邏輯器件(CPLD)具有使用靈活、可靠性高、功能強(qiáng)大的優(yōu)點(diǎn),在電子產(chǎn)品設(shè)計(jì)中得到了廣泛的應(yīng)用。CPLD可實(shí)現(xiàn)在系統(tǒng)編程,重復(fù)多次,而且還兼容IEEE1149.1(JTAG)標(biāo)準(zhǔn)的測(cè)試激勵(lì)端和邊界掃描能力,若使用CPLD器件進(jìn)行開(kāi)發(fā),不僅可以提高系統(tǒng)的集成化程度、可靠性和可擴(kuò)充性,而且還可大大縮短產(chǎn)品的設(shè)計(jì)周期。由于CPLD采用連續(xù)連接結(jié)構(gòu),易于預(yù)測(cè)延時(shí),從而使電路仿真更加準(zhǔn)確。CPLD是標(biāo)準(zhǔn)的大規(guī)模集成電路產(chǎn)品,可用于各種數(shù)字邏輯系統(tǒng)的設(shè)計(jì)。近年來(lái),隨著采用先進(jìn)的集成工藝和大批量生產(chǎn),CPLD器件成本不斷下降,集成密度、速度和性能都大幅度提高,這樣一個(gè)芯片就可以實(shí)現(xiàn)一個(gè)復(fù)雜的數(shù)字電路系統(tǒng);再加上使用方便的開(kāi)發(fā)工具,給設(shè)計(jì)修改帶來(lái)很大方便。2.2.2.EPM7128SL的主要特征及工作方式EPM7128SL是Ahera公司生產(chǎn)的CPLD芯片,該芯片密度為6000門,有60個(gè)專用I/O口,PLCC84封裝,正常工作溫度范圍0~70℃。該CPLD芯片內(nèi)部結(jié)構(gòu)如圖1所示。從圖中可以看出,該芯片內(nèi)部由邏輯陣列模塊、可編程I/O單元和可編程連線陣列三部分組成。每個(gè)邏輯陣列模塊中包含16個(gè)宏單元,共128個(gè)宏單元。可編程I/O單元能兼容TrI’L和CMOS多種接口和電壓標(biāo)準(zhǔn),可配置為輸入、輸出、雙向、集電極開(kāi)路和三態(tài)等形式,能提供適當(dāng)?shù)尿?qū)動(dòng)電流,以降低功耗,防止過(guò)沖和減少電源噪聲??删幊踢B線陣列在各個(gè)邏輯宏單元之間以及邏輯宏單元與I/O單元之間提供信號(hào)連接。圖中的數(shù)字代表芯片的引腳號(hào),其中1、2、83、84為全局輸入引腳.GCLK(83):全局時(shí)鐘腳,這個(gè)腳的驅(qū)動(dòng)能力最強(qiáng),到所有邏輯單元的延時(shí)基本相同,所以如系統(tǒng)有外部時(shí)鐘輸入,建議定義此腳為時(shí)鐘輸入腳。OE1(84):全局輸出使能,如有三態(tài)輸出,建議由此腳來(lái)控制(也可由內(nèi)部邏輯產(chǎn)生輸出使能信號(hào)),優(yōu)點(diǎn)和用法同上。OE2/GCLK2(2):全局輸出使能/全局時(shí)鐘腳,兩者皆可。GCLRn(1):全局清零,如有寄存器清零,建議由此腳來(lái)控制(也可由內(nèi)部邏輯產(chǎn)生清零信號(hào)),優(yōu)點(diǎn)和用法同上。如圖示板上留有下載插口FC1(針對(duì)PLCC84的插座中CPLD芯片),你只要把隨配的ByteblasterMV電纜的10PIN端插入下載插口FC1,另一端連接到電腦并口上(有時(shí)為了方便操作,可以通過(guò)并口延長(zhǎng)線公頭接電腦并口,母頭接ByteblasterMV的公頭)就可以在線編2.3MAX+PLUS2.3.174154集成電路的真值表2.3.2列驅(qū)動(dòng)所需邏輯功能的實(shí)現(xiàn)如圖,p14口產(chǎn)生片選信號(hào),當(dāng)片選信號(hào)是1的時(shí)候,集成塊74154不工作;當(dāng)片選信號(hào)是0的時(shí)候,集成塊74154工作,此時(shí)ABCD口輸入信號(hào),輸出端才有對(duì)應(yīng)的輸出信號(hào)。輸入和輸出的具體參數(shù),如2.3.174154集成電路的真值表所示。在集成塊輸出端接反相器的原因:是因?yàn)槠x信號(hào)是低電平觸發(fā),輸出的信號(hào)為低電平,而TPIC273工作時(shí)有片損,需要高電平驅(qū)動(dòng)。2.3.3行驅(qū)動(dòng)所需邏輯功能的實(shí)現(xiàn)如圖所示,此部分主要由兩塊74154集成塊成,使用兩塊集成塊的原因是為了控制點(diǎn)陣三種顏色的顯示。P24口產(chǎn)生片選信號(hào),控制上面74154集成塊的工作狀態(tài),當(dāng)片選信號(hào)是1的時(shí)候,集成塊74154不工作;當(dāng)片選信號(hào)是0的時(shí)候,集成塊74154工作,此時(shí)ABCD口輸入信號(hào),輸出端才有對(duì)應(yīng)的輸出信號(hào)。輸入和輸出的具體參數(shù),如2.3.174154集成電路的真值表所示。P25口產(chǎn)生片選信號(hào),控制下面74154集成塊的工作狀態(tài),當(dāng)片選信號(hào)是1的時(shí)候,集成塊74154不工作;當(dāng)片選信號(hào)是0的時(shí)候,集成塊74154工作,此時(shí)ABCD口輸入信號(hào),輸出端才有對(duì)應(yīng)的輸出信號(hào)。輸入和輸出的具體參數(shù),如2.3.174154集成電路的真值表所示。2.3.4列驅(qū)動(dòng)電路1概述TPIC6B273是美國(guó)TI公司生產(chǎn)的一種8通道D型觸發(fā)器鎖存、功率輸出新型器件,該器件集8位數(shù)據(jù)鎖存、驅(qū)動(dòng)輸出控制為一體,可用于LED顯示器的驅(qū)動(dòng)等方面。其基本特點(diǎn)為:●具有8通道功率DMOS晶體管輸出,每個(gè)通道可連續(xù)輸出150mA的電流;●各輸出回路導(dǎo)通電阻低至5Ω;●每個(gè)輸出通道典型限定能力為500mA;●輸出端為OC門形式,外接設(shè)備(器件)驅(qū)動(dòng)電源可高達(dá)50V。TPIC6B273采用20腳雙列直插式DIP封裝形式,其引腳排列如圖1所示。它的控制方式與74LS(HC)273的控制方式相同。2應(yīng)用電路TPIC6B273器件是74LS273與MC1413兩器件結(jié)合的產(chǎn)物(MC1413為7路輸入/輸出驅(qū)動(dòng),而TPIC6B273為8路輸出驅(qū)動(dòng)),因此,該器件使用簡(jiǎn)單且應(yīng)用電路設(shè)計(jì)方便,現(xiàn)給出利用該器件設(shè)計(jì)的3種LED顯示器驅(qū)動(dòng)電路的實(shí)例。2.1LED電子禮花樹(shù)驅(qū)動(dòng)控制本電路的驅(qū)動(dòng)電路原理圖如圖2所示。為了擴(kuò)展方便,該電路系統(tǒng)采用插板結(jié)構(gòu),每個(gè)輸出插板選用4個(gè)TPIC6B273作數(shù)據(jù)鎖存和功率驅(qū)動(dòng),圖中通過(guò)譯碼芯片74HC688、74HC393與跳線開(kāi)關(guān)K1等完成地址選擇、譯碼及TPIC6B273的選通和數(shù)據(jù)鎖存工作。電子禮花樹(shù)上的LED工作于動(dòng)態(tài)狀態(tài),設(shè)其工作電流為45mA(3~4倍的靜態(tài)額定工作電流),各色LED的平均電壓為2.5V,各芯片的每一路輸出可帶動(dòng)的LED為:2.5×20×3=150個(gè),實(shí)際情況下,為了可靠工作,通常選擇驅(qū)動(dòng)一半數(shù)量(約80個(gè))的LED驅(qū)動(dòng),這樣,每個(gè)電子禮花樹(shù)驅(qū)動(dòng)板可驅(qū)動(dòng)的LED為:80×8×4=2560個(gè)。該電路經(jīng)長(zhǎng)時(shí)間的工作實(shí)踐檢驗(yàn),TPIC6B273工作可靠,系統(tǒng)工作性能良好。

圖2LED電子禮花樹(shù)驅(qū)動(dòng)電路原理圖

2.2LED顯示屏驅(qū)動(dòng)控制用于發(fā)布消息、顯示漢字的點(diǎn)陣式LED顯示屏通常由若干塊LED點(diǎn)陣顯示模塊組成;用于顯示漢字、圖形的8×8單色LED顯示點(diǎn)陣模塊,每塊有64個(gè)LED;而紅、綠雙色LED顯示點(diǎn)陣模塊有64個(gè)紅色LED和64個(gè)綠色LED。為了減少引腳且便于封裝,各種LED顯示點(diǎn)陣模塊都采用陣列形式排布,即在行列線的交點(diǎn)處接有顯示LED。因此,LED點(diǎn)陣顯示模塊的顯示驅(qū)動(dòng)只能采用動(dòng)態(tài)驅(qū)動(dòng)方式,每次最多只能點(diǎn)亮一行LED(共陽(yáng)形式LED顯示點(diǎn)陣模塊)或一列LED(共陰形式LED顯示點(diǎn)陣模塊)。由于TPIC6B273是以OC門方式輸出的,所以特別適宜選擇共陽(yáng)形式LED顯示點(diǎn)陣模塊做基礎(chǔ)顯示單元。圖3所示是一個(gè)單色LED顯示模塊(單色8×8點(diǎn)陣)的顯示驅(qū)動(dòng)原理圖。圖中,由8?jìng)€(gè)晶體管為LED點(diǎn)陣顯示模塊(8行LED)提供行驅(qū)動(dòng)電流,TPIC6B273則用于控制一個(gè)單色LED顯示模塊的列方向顯示,微機(jī)通過(guò)總線操作控制來(lái)完成對(duì)每一個(gè)LED點(diǎn)陣顯示模塊內(nèi)每個(gè)LED顯示點(diǎn)的亮、暗控制操作。以此類推,可實(shí)現(xiàn)整屏LED點(diǎn)陣的亮、暗控制,從而實(shí)現(xiàn)LED顯示屏漢字或圖象的顯示控制操作。

紅、綠雙色LED顯示點(diǎn)陣模塊在同一點(diǎn)陣顯示窗內(nèi)共同封裝了紅、綠各一個(gè)LED顯示元件。因此,每一個(gè)點(diǎn)均可實(shí)現(xiàn)紅、綠、橙(紅色、綠色LED同時(shí)點(diǎn)亮?xí)r)三色的顯示。當(dāng)以占空比的方式控制顯示亮度時(shí),還可以實(shí)現(xiàn)灰度變化。圖4是雙色LED顯示點(diǎn)陣模塊的顯示驅(qū)動(dòng)原理圖。若采用共陽(yáng)形式雙色LED顯示模塊,那么雙色LED顯示點(diǎn)陣模塊將有8路共陽(yáng)行向驅(qū)動(dòng)引線以及紅、綠各8路列向灌電流驅(qū)動(dòng)引線。這樣,通過(guò)對(duì)行方向各晶體管的控制便可為顯示模塊內(nèi)的紅、綠兩色LED提供動(dòng)態(tài)驅(qū)動(dòng)電流。兩個(gè)TPIC6B273則分別控制紅、綠色LED的列方向顯示。因此,對(duì)兩個(gè)TPIC6B273的適當(dāng)選通并鎖存特定的數(shù)據(jù),便可對(duì)每一個(gè)紅、綠雙色LED顯示模塊上的顯示點(diǎn)實(shí)現(xiàn)紅、綠、橙或無(wú)色4種狀態(tài)的顯示控制。2.3.5行驅(qū)動(dòng)電路單獨(dú)介紹TIP122名稱封裝極性功能耐壓電流功率頻率配對(duì)管TIP12228NPN音頻功放開(kāi)關(guān)100V5A65WTIP127

TIP12728PNP音頻功放開(kāi)關(guān)100V5A65WTIP122品名極性管腳功能參數(shù)TIP122NPN28音頻功放開(kāi)關(guān)100V8A65WDARLTIP127PNP28音頻功放開(kāi)關(guān)100V8A65WDARL2.4ISP下載線2.5三色點(diǎn)陣圖(1)8×8點(diǎn)陣LED外觀及引腳圖圖(2)8×8點(diǎn)陣LED等效電路8X8三色點(diǎn)陣LED工作原理說(shuō)明從圖(2)中可以看出,8X8點(diǎn)陣一共有64個(gè)點(diǎn),每個(gè)點(diǎn)里面包含有兩個(gè)發(fā)光二極管,一個(gè)紅色一個(gè)黃色,總共由128個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就點(diǎn)亮;顯色原理如圖(2)所示,以行1(22)的位置上,第一組相鄰的黃色二極管和紅色二極管為例,它們的的正極是相連接的,共用一行來(lái)控制.它們的正極是相連接的,當(dāng)黃色二極管導(dǎo)通,紅色三極管不導(dǎo)通時(shí),該點(diǎn)就顯示黃色。當(dāng)紅色二極管導(dǎo)通,黃色二極管不導(dǎo)通,該點(diǎn)就顯示紅色。當(dāng)兩個(gè)發(fā)光二極管同時(shí)導(dǎo)通時(shí),該點(diǎn)就會(huì)顯示綠色。點(diǎn)陣LED掃描法介紹點(diǎn)陣LED一般采用掃描式顯示,實(shí)際運(yùn)用分為三種方式:(1)點(diǎn)掃描;(2)行掃描;(3)

列掃描。若使用第一種方式,其掃描頻率必須大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三種方式,則頻率必須大于16×8=128Hz,周期小于7.8ms即可符合視覺(jué)暫留要求。此外一次驅(qū)動(dòng)一列或一行(8顆LED)時(shí)需外加驅(qū)動(dòng)電路提高電流,否則LED亮度會(huì)不足。

2.6系統(tǒng)字庫(kù)數(shù)據(jù)存儲(chǔ)部EEPROMAT24C64采用可電擦寫EEPROMAT24C64。原理圖如右所示。I2c原理~2.7電源該電源是輸入220v輸出5v的直流開(kāi)關(guān)電源。3.軟件部分3.1靜態(tài)字的顯示原理其實(shí)一般情況下,要4塊8×8的點(diǎn)陣才可以顯示一個(gè)字。我們?yōu)榱朔奖闫鹨?jiàn),就拿一塊點(diǎn)陣來(lái)說(shuō)明一個(gè)簡(jiǎn)單的靜態(tài)字的顯示原理。例如我們要在點(diǎn)陣上顯示一個(gè)“二”字,大家知道,點(diǎn)陣不會(huì)一直都在發(fā)亮的,它只是在不停的閃爍的。而點(diǎn)陣就是采用逐行輪流點(diǎn)亮,這樣各列就可以公用一個(gè)列驅(qū)動(dòng)器,就右圖點(diǎn)陣來(lái)說(shuō),把所有同一行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起,通過(guò)單片機(jī)送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)給鎖存器鎖存,選通第1行的具體點(diǎn)并使其燃亮一定時(shí)間,然后熄滅:再送出第2行數(shù)據(jù)并鎖存,選通第2行使其具體點(diǎn)燃亮相同的時(shí)間,然后熄滅;照此類推,第8行之后,又重新燃亮第1行,反復(fù)輪回。而圖中的“二”字,只有第2行跟第5行有點(diǎn)要點(diǎn)亮,其他行第點(diǎn)都不需要點(diǎn)亮。當(dāng)這樣輪回的速度足夠快時(shí)(每秒24次以上),由于人眼視覺(jué)的暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定不閃爍的“二”字了。3.2移動(dòng)字的顯示原理,移動(dòng)字的顯示原理其實(shí)是在靜態(tài)字顯示原理的基礎(chǔ)上對(duì)要顯示字在點(diǎn)陣點(diǎn)亮點(diǎn)的位置進(jìn)行移位。例如:我們?cè)?.1上說(shuō)到對(duì)點(diǎn)陣的掃描是逐行掃描的,而掃描的速度足夠快,我們就感覺(jué)到字體是靜態(tài)的沒(méi)有閃爍地顯示著。如圖2所示,而移動(dòng)字的顯示是在點(diǎn)陣完整掃描一次之后在下一次重新掃描的時(shí),對(duì)點(diǎn)亮的位置進(jìn)行移位向前先后向上向后的移位,點(diǎn)陣就可以實(shí)現(xiàn)文字的向前,向后向上向下的動(dòng)態(tài)顯示了。4.總結(jié)存在的主要問(wèn)題及解決措施1:?jiǎn)纹瑱C(jī)的內(nèi)部ROM不足夠,從而不能把所有中文字固化在單片機(jī)里供顯示時(shí)調(diào)用。解決方法:外接大容量FLASHROM2:?jiǎn)纹瑱C(jī)的內(nèi)部RAM不足夠,導(dǎo)致顯示緩沖區(qū)不足夠大,不能全屏顯示出來(lái)。解決方法:外接大空量RAM3:EPM7128-15可編程邏輯器件供電電流不足解決方法:外接上拉電阻4:使用者不能通過(guò)在電腦輸入文字傳輸給三色廣告牌顯示出來(lái)。解決方法:通過(guò)VB編程來(lái)完成三色廣告牌的上位機(jī),完成電腦輸入文字傳輸給三色廣告牌顯示。5:不能雙色同時(shí)顯示在同一個(gè)屏幕上。解決方法:使紅色與黃色相互配合,完成一屏文字的顯示。6:顯示屏刷新頻率不足,導(dǎo)致文字移動(dòng)時(shí)閃爍解決方法:提高單片機(jī)工作速度(使用24M晶振),優(yōu)化程序代碼。7:由于32塊三色點(diǎn)陣所需電流比較大。普通電源功率不夠,導(dǎo)致點(diǎn)陣顯示亮度不夠。解決方法:使用開(kāi)關(guān)電源(因?yàn)殚_(kāi)關(guān)電源能提供足夠的電流給顯示牌)8:行驅(qū)動(dòng)電流不足夠?qū)е氯珡V告牌顯示亮度不足。解決方法:采用大功率達(dá)林頓管TIP127(耐壓100伏,電流8安),足以驅(qū)動(dòng)一行(黃色64個(gè)點(diǎn),紅色64個(gè)點(diǎn))。9:?jiǎn)纹瑱C(jī)I/O口不足夠。解決方法:采用EPM7128-15可編程邏輯器件來(lái)完成選行與列驅(qū)動(dòng)芯片的片選,從而減少了單片機(jī)I/O口的使用。致謝:在本文的撰寫過(guò)程中,得到信息工程學(xué)院王晨明副教授以及其它老師的關(guān)心和支持。論文要求用Multisim8驗(yàn)證瓦易定理時(shí),由于某種原因,本人沒(méi)有學(xué)過(guò),在自己看書(shū)基本弄懂的情況下,為了加深對(duì)定理的理解,于是本人就問(wèn)王老師,王老師在百忙之中抽出寶貴的時(shí)間詳細(xì)地、不厭其煩地給予指導(dǎo),解答疑難。在此,我表示衷心感謝!參考文獻(xiàn)鄭步生,吳渭編著.Multisim2001電路設(shè)計(jì)及仿真入門與應(yīng)用[M].北京:電子工業(yè)出版社,2002.蔣卓勤,鄧玉元主編.MULTISIM2001及其在電路設(shè)計(jì)中的應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003.鐘文耀,段玉生,何麗靜編著.EWB設(shè)計(jì)入門與應(yīng)用[M].北京:清華大學(xué)出版社2000路而紅主編.虛擬電子實(shí)驗(yàn)室MULTISIM7&ULTIBOARD7[M].北京:人民郵電出版社,2005路而紅編著.虛擬電子實(shí)驗(yàn)室ELECTRONICSWORKBENCH[M].北京:人民郵電出版社,2000朱力恒主編.電子技術(shù)仿真實(shí)驗(yàn)教程[M]電子工業(yè)出版社,2003王軍.計(jì)算機(jī)基礎(chǔ)電路[M].北京:電子工業(yè)出版社,2000.黃培根,奚慧平主編.MULTISIM7&電子技術(shù)實(shí)驗(yàn)[M].杭州:浙江大學(xué)出版社,2005附錄程序:#include<reg52.h>#defineucharunsignedcharbitmov_left,mov_up;sbite_U_ROW=0xA4;sbite_D_ROW=0xA5;sbite_LIND=0x94;unsignedchardatamark1,b;unsignedcharidatadis[128];//voidmov_up();//voidmov_left();voiddelay(unsignedint);voidclear();voidmain(void){ registeruchardatai,j,k,l,flat; ucharcodeBMP[][128]=//數(shù)據(jù)表{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x70,0x00,//"動(dòng)",0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x30,0x30,0x00,0xF8,0x0F,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x08,0x00,0x00,0xFF,0x1F,0x00,0x00,0x30,0x18,0x00,0xC0,0x30,0x18,0xFC,0x3F,0x30,0x18,0x80,0x03,0x30,0x18,0x80,0x03,0x30,0x18,0x80,0x01,0x10,0x18,0xC0,0x00,0x10,0x18,0x40,0x08,0x18,0x18,0x60,0x10,0x18,0x18,0x20,0x30,0x18,0x18,0x10,0x60,0x0C,0x18,0x08,0x60,0x0C,0x08,0xCC,0xDF,0x04,0x08,0xFC,0xC0,0x06,0x08,0x08,0x40,0x03,0x0C,0x00,0x80,0x01,0x0C,0x00,0x80,0x00,0x0C,0x00,0x40,0xE0,0x07,0x00,0x30,0x80,0x07,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00},/*"感"*/{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x88,0x01,0x00,0x00,0x08,0x03,0x20,0x00,0x08,0x13,0xE0,0xFF,0xFF,0x3F,0x60,0x00,0x18,0x00,0x60,0x00,0x18,0x00,0x60,0x00,0x19,0x04,0x60,0xFF,0x1B,0x0E,0x60,0x00,0x1C,0x06,0x60,0x00,0x10,0x03,0x60,0x06,0xB3,0x01,0x60,0xFE,0xB3,0x01,0x20,0x06,0xE1,0x00,0x20,0x06,0x61,0x00,0x30,0x06,0xF1,0x10,0x10,0xFE,0xD9,0x11,0x18,0x06,0x8F,0x13,0x08,0x00,0x06,0x3E,0x04,0x00,0x01,0x3C,0x02,0xC2,0x01,0x20,0x00,0x8E,0x03,0x03,0x20,0x06,0x03,0x06,0x20,0x06,0x02,0x0C,0x30,0x06,0x20,0x0C,0x38,0x06,0x60,0x0C,0x18,0x06,0x60,0x00,0x00,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"地"*/{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,0x38,0x00,0xC0,0x00,0x18,0x00,0xC0,0x00,0x18,0x00,0xC0,0x40,0x18,0x00,0xC0,0xC0,0x18,0x00,0xC0,0x40,0x18,0x00,0xC0,0x40,0x18,0x04,0xC0,0x40,0x18,0x0F,0xC0,0x44,0xD8,0x04,0xC0,0x44,0x38,0x04,0xFC,0x43,0x1F,0x04,0xC0,0xC0,0x18,0x04,0xC0,0x78,0x18,0x04,0xC0,0x44,0x18,0x04,0xC0,0x40,0x18,0x04,0xC0,0x40,0x18,0x04,0xC0,0x40,0x18,0x04,0xC0,0x40,0x18,0x06,0xC0,0x40,0xD8,0x07,0xC0,0x40,0x18,0x13,0xC0,0x4C,0x18,0x10,0xC0,0x43,0x08,0x10,0xF0,0x40,0x00,0x10,0x3E,0xC0,0x00,0x30,0x0C,0xC0,0x00,0x70,0x00,0xC0,0xFF,0x3F,0x00,0x80,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"帶*/{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x86,0xE3,0x00,0x00,0x86,0x61,0x00,0x00,0x86,0x61,0x00,0x00,0x86,0x61,0x08,0xF8,0xFF,0xFF,0x1F,0x00,0x86,0x61,0x00,0x00,0x86,0x61,0x00,0x00,0x86,0x61,0x00,0x00,0x86,0x60,0x00,0x00,0x00,0x00,0x10,0xF0,0xFF,0xFF,0x3F,0x10,0x80,0x00,0x38,0x18,0x80,0x03,0x0C,0x1C,0x80,0x01,0x04,0x88,0x80,0x01,0x03,0x00,0xFF,0xFF,0x03,0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0x81,0x01,0x00,0x81,0xF9,0x01,0x00,0x81,0xE1,0x01,0x80,0x8

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論