欧洲成人午夜精品无码区久久_久久精品无码专区免费青青_av无码电影一区二区三区_各种少妇正面着bbw撒尿视频_中文精品久久久久国产网址

學(xué)術(shù)刊物 生活雜志 SCI期刊 投稿指導(dǎo) 期刊服務(wù) 文秘服務(wù) 出版社 登錄/注冊(cè) 購(gòu)物車(chē)(0)

首頁(yè) > 精品范文 > c語(yǔ)言程序設(shè)計(jì)實(shí)例

c語(yǔ)言程序設(shè)計(jì)實(shí)例精品(七篇)

時(shí)間:2023-03-01 16:29:08

序論:寫(xiě)作是一種深度的自我表達(dá)。它要求我們深入探索自己的思想和情感,挖掘那些隱藏在內(nèi)心深處的真相,好投稿為您帶來(lái)了七篇c語(yǔ)言程序設(shè)計(jì)實(shí)例范文,愿它們成為您寫(xiě)作過(guò)程中的靈感催化劑,助力您的創(chuàng)作。

篇(1)

關(guān)鍵詞: 《C語(yǔ)言程序設(shè)計(jì)》 程序案例 計(jì)算思維 流程圖

1.引言

《C語(yǔ)言程序設(shè)計(jì)》課程的實(shí)踐性是很強(qiáng)的,理論聯(lián)系實(shí)際是這門(mén)課的特點(diǎn),怎樣利用所學(xué)理論知識(shí)解決實(shí)際問(wèn)題是學(xué)習(xí)這門(mén)課的重點(diǎn),也是難點(diǎn)。多年的教學(xué)實(shí)踐表明,在教學(xué)過(guò)程中使用計(jì)算思維的方法解決問(wèn)題,對(duì)培養(yǎng)學(xué)生的綜合應(yīng)用能力是有益的,通過(guò)使用流程圖描述算法,學(xué)生將更好地理解和掌握結(jié)構(gòu)化程序設(shè)計(jì)方法。

2.教學(xué)中充分調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性

學(xué)生只有對(duì)C語(yǔ)言程序有濃厚的興趣,才會(huì)積極和創(chuàng)造性地學(xué)習(xí)??蓮囊韵聨讉€(gè)方面探討:

(1)強(qiáng)調(diào)學(xué)生學(xué)習(xí)C語(yǔ)言的重要性。突出教學(xué)重點(diǎn),使學(xué)生明確學(xué)習(xí)任務(wù)。在首次課堂教學(xué)中,教師一定要向?qū)W生講解清楚C語(yǔ)言課程的教學(xué)目標(biāo)(為什么學(xué)習(xí)編程或程序設(shè)計(jì))。對(duì)于C語(yǔ)言程序設(shè)計(jì)課程的教學(xué)目標(biāo),可有如下三方面的講解,學(xué)習(xí)基本的編程知識(shí)、培養(yǎng)求解問(wèn)題的能力和具備一定的創(chuàng)新素質(zhì)。知識(shí)的傳授和學(xué)習(xí)應(yīng)融入問(wèn)題求解中;問(wèn)題求解能力是創(chuàng)新的基礎(chǔ)。

(2)結(jié)合《C語(yǔ)言全國(guó)計(jì)算機(jī)等級(jí)考試》的試題庫(kù)進(jìn)行教學(xué),學(xué)生學(xué)習(xí)起來(lái)更有動(dòng)力。試題庫(kù)包括筆試試題庫(kù)和上機(jī)試題庫(kù)。試題庫(kù)按章節(jié)分類(lèi),題目類(lèi)型以程序設(shè)計(jì)為主。筆試題型有單項(xiàng)選擇、程序分析、程序填空、程序改錯(cuò)和程序設(shè)計(jì),上機(jī)題型有程序改錯(cuò)、程序填空和程序設(shè)計(jì)。

(3)利用Visual c++6.0工具進(jìn)行C語(yǔ)言程序教學(xué),培養(yǎng)學(xué)生的學(xué)習(xí)興趣。VC是一種基于Windows操作系統(tǒng)的可視化集成開(kāi)發(fā)環(huán)境,是廣泛使用的一種開(kāi)發(fā)工具。VC程序的兩種模式是WINAPI方式和MFC方式。應(yīng)用這兩種模式能夠有效提高教學(xué)質(zhì)量,激發(fā)學(xué)生的學(xué)習(xí)興趣。

3.教學(xué)內(nèi)容的設(shè)置

上課內(nèi)容安排不盡合理,對(duì)于實(shí)踐教學(xué)環(huán)節(jié)重視不夠,難以提高學(xué)生的積極性。教師應(yīng)理論聯(lián)系實(shí)際,注重編程實(shí)現(xiàn)的示范性,讓學(xué)生清楚地看到教師編寫(xiě)代碼和程序調(diào)試的過(guò)程和運(yùn)行結(jié)果。上課安排內(nèi)容應(yīng)包括兩部分:一部分為學(xué)習(xí)基本知識(shí),對(duì)基礎(chǔ)知識(shí)的理解和掌握。另一部分是理論聯(lián)系實(shí)際,對(duì)實(shí)際案例問(wèn)題的分析引導(dǎo)學(xué)生,并且案例留有思考空間,使學(xué)生舉一反三,培養(yǎng)學(xué)生創(chuàng)造性思考的能力。比如在第一次課告訴學(xué)生C語(yǔ)言的十四種語(yǔ)句,既讓學(xué)生對(duì)C語(yǔ)言有全面的認(rèn)識(shí),又消除學(xué)生對(duì)C語(yǔ)言的畏難情緒。C語(yǔ)言的語(yǔ)句概括起來(lái)只有十四種,即定義變量語(yǔ)句、賦值語(yǔ)句、返回語(yǔ)句、函數(shù)聲明語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、分支(選擇)語(yǔ)句(共三種分支語(yǔ)句)、循環(huán)語(yǔ)句(共三種循環(huán)語(yǔ)句)、break語(yǔ)句、Conitnue語(yǔ)句和復(fù)合語(yǔ)句。所有的C程序,都是由其中的某些語(yǔ)句組成的。在具體介紹這些語(yǔ)句的時(shí)候,一定要完整清楚地列出各種語(yǔ)句的語(yǔ)法格式。以后講C程序的時(shí)候,會(huì)提問(wèn)學(xué)生這個(gè)程序中包含哪些C語(yǔ)句,學(xué)生比較容易看明白C程序的語(yǔ)句組成,幫助學(xué)生很快讀懂程序,有利于改正學(xué)生編寫(xiě)程序時(shí)的常見(jiàn)語(yǔ)法錯(cuò)誤。

4.實(shí)驗(yàn)指導(dǎo)書(shū)建設(shè)

學(xué)習(xí)C語(yǔ)言的很多學(xué)生都認(rèn)為概念易懂,程序難寫(xiě),其實(shí)主要是缺乏足夠的實(shí)踐和練習(xí)。依據(jù)主教材結(jié)構(gòu)和實(shí)際需要,上機(jī)課結(jié)合課本《C語(yǔ)言程序設(shè)計(jì)上機(jī)指導(dǎo)》進(jìn)行相關(guān)和有趣的案例的程序運(yùn)行。學(xué)生分析算法、畫(huà)出流程圖到寫(xiě)出程序,并親自運(yùn)行出結(jié)果,會(huì)給學(xué)生很大的成就感。要將計(jì)算思維的方法應(yīng)用到程序設(shè)計(jì),設(shè)計(jì)各種算法以實(shí)現(xiàn)功能,并拓寬思路,掌握C語(yǔ)言的概念和編程方法。

5.案例設(shè)計(jì)與計(jì)算思維相結(jié)合

學(xué)習(xí)C語(yǔ)言,目的不是僅僅懂得一門(mén)程序設(shè)計(jì)語(yǔ)言,更重要的是讓學(xué)生的編程思維得到鍛煉和提高。C語(yǔ)言學(xué)習(xí)分成以下三個(gè)循序漸進(jìn)的部分:第一部分是入門(mén),主要介紹C語(yǔ)言程序的基本結(jié)構(gòu)、數(shù)據(jù)的表達(dá)方式、基本表達(dá)式語(yǔ)句、C語(yǔ)言程序的運(yùn)行方式等。這部分可以設(shè)計(jì)由簡(jiǎn)單表達(dá)式語(yǔ)句組成的按順序執(zhí)行的程序。第二部分是程序的基本結(jié)構(gòu),主要介紹程序設(shè)計(jì)的簡(jiǎn)單算法表示方法,分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。這部分能用計(jì)算思維的方法,設(shè)計(jì)簡(jiǎn)單的算法,根據(jù)算法編寫(xiě)程序,掌握思考問(wèn)題和解決問(wèn)題的方法。第三部分是程序設(shè)計(jì)方法和手段的提高,主要介紹程序的模塊化實(shí)現(xiàn)方法和更多的程序設(shè)計(jì)方法。這部分能采用計(jì)算思維的方式掌握模塊化的程序設(shè)計(jì)方法,對(duì)問(wèn)題進(jìn)行分解,靈活地使用指針、結(jié)構(gòu)、文件、位運(yùn)算等方法編寫(xiě)程序。

6.案例設(shè)計(jì)實(shí)例

編寫(xiě)程序計(jì)算學(xué)生年齡的遞歸函數(shù):已知第一位學(xué)生年齡最小為10歲,其余學(xué)生一個(gè)比一個(gè)大2歲,求第5位學(xué)生的年齡。分析得到的遞歸公式如下:

age=10(n=1)age(n-1)+2(n>1)

在遞歸公式中,使用數(shù)字1為回歸的條件,使用IFELSE語(yǔ)句決定是遞推還是回歸。

根據(jù)問(wèn)題得出流程圖和程序?yàn)椋?/p>

只有寫(xiě)出遞歸算法的數(shù)學(xué)公式,才能編寫(xiě)出遞歸函數(shù),從而很容易根據(jù)遞歸問(wèn)題描述寫(xiě)出遞歸公式,進(jìn)而寫(xiě)出遞歸程序。

7.結(jié)語(yǔ)

“基于問(wèn)題求解的C語(yǔ)言”教學(xué)模式,隨著我國(guó)計(jì)算機(jī)技術(shù)的應(yīng)用和發(fā)展,為了適應(yīng)社會(huì)的需求,培養(yǎng)學(xué)生解決問(wèn)題的能力,增強(qiáng)學(xué)生自主能動(dòng)性和動(dòng)手操作能力,讓學(xué)生成為社會(huì)的技能型人才,都是有益的。實(shí)踐證明,借助流程圖表達(dá)算法,能讓學(xué)生更好地理解結(jié)構(gòu)化程序設(shè)計(jì)的思想,更好地掌握C程序設(shè)計(jì)的核心方法。

參考文獻(xiàn):

[1]李麗娟.C語(yǔ)言程序設(shè)計(jì)教程實(shí)驗(yàn)指導(dǎo)與習(xí)題解答[M].北京:人民郵電出版社,2013.

[2]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1999.

[3]魏書(shū)堤,趙輝煌,鄧紅衛(wèi).基于計(jì)算思維的C語(yǔ)言教學(xué)案例設(shè)計(jì)[J].當(dāng)代教育理論與實(shí)踐,2014(3).

[4]但志平,汪東,王安慧,任小燕.地方高校C語(yǔ)言教學(xué)改革的探討與分析[J].教育教學(xué)論壇,2014.5.

篇(2)

Abstract: This paper illustrates the mixed programming turn back mechanism and basic methods of parameter transferring.

關(guān)鍵詞: C 語(yǔ)言;匯編語(yǔ)言;參數(shù)傳遞

Key words: C language;assembly language;parameter transferring

中圖分類(lèi)號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2014)29-0225-02

1 緒論

C語(yǔ)言與匯編語(yǔ)言混合編程,可以發(fā)揮各自優(yōu)勢(shì),提高程序的開(kāi)發(fā)效率。這必然涉及到二者相互調(diào)用時(shí)的接口:C程序與匯編程序如何轉(zhuǎn)返、二者之間如何互傳數(shù)據(jù)。

2 名字聲明約定

2.1 匯編、C模塊對(duì)自己未定義的但要引用的別的模塊的名字(該名字允許被引用)要聲明。C模塊聲明格式:函數(shù)聲明格式:extern類(lèi)型函數(shù)名(形參表);變聲明格式: Extern類(lèi)型變量;匯編模塊聲明格式:函數(shù)聲明格式:extern函數(shù)名:屬性(near,far)。變聲明格式:Extern變量名:屬性(byte,word,dword等)。

2.2 自己定義的不僅自己可用,且可供別的模塊引用的名字也必須聲明。匯編模塊聲明格式:PUBLIC名字。C模塊聲明格式:全局變量,函數(shù)名前不加static即可。

3 轉(zhuǎn)返機(jī)制

為了說(shuō)明C主程序如何轉(zhuǎn)到匯編子程序,匯編子程序執(zhí)行結(jié)束如何返回C主程序,把例1 x1.c C程序翻譯成匯編程序x1.asm,命令行鍵入命令TCC-S x1即可。

例1 /*x1.c*/

extern int f2(int,int,int);

main(){int a;a=f2(1,2,3);a=a+10;}

上述程序經(jīng)編譯后,匯編程序如下(無(wú)關(guān)內(nèi)容省去)

/*x1.asm*/

_TEXT segment byte public 'CODE'

_main proc near ;小模式,類(lèi)型為near,名字main編譯后變?yōu)閮?nèi)部名(前加下劃線)

push si ;保護(hù)si

mov ax,3

push ax ;實(shí)參3壓棧

mov ax,2

push ax ;實(shí)參2壓棧

mov ax,1

push ax ;實(shí)參1壓棧

call near ptr _f2 ;轉(zhuǎn)入子程序

add sp,6 ;丟棄棧中三個(gè)實(shí)參,確保實(shí)參不變

mov si,ax ;出口參數(shù)固定是ax,從ax取結(jié)果

mov ax,si ;機(jī)械性翻譯,效率低,人工匯編編程,兩個(gè)mov可不要

add ax,10

mov si,ax ;出口參數(shù)固定是ax,main加工結(jié)果送到約定寄存器ax

@1:pop si ;恢復(fù)si

ret ;main子程序返回

_main endp

_TEXT ends

PC機(jī)的堆棧是由高向低發(fā)展,壓棧操作,棧中內(nèi)容增多,SP值減小,反之出棧操作,棧中內(nèi)容減少,SP值增大。

分析以上程序可看出,f(1,2,3)翻譯成機(jī)器語(yǔ)言后變成若干條機(jī)器指令。結(jié)論:參數(shù)從右到左進(jìn)入堆棧;在函數(shù)返回后,調(diào)用者要負(fù)責(zé)清除(平衡)堆棧。

4 C調(diào)匯編子程序

參數(shù)傳遞調(diào)用規(guī)范:主程序通過(guò)堆棧傳遞參數(shù),主程序把待加工的數(shù)據(jù)放入棧中,子程序從堆棧中取數(shù)。子程序把加工的加工返還給主程序,結(jié)果小于等于16位,固定用AX;結(jié)果是32位,固定用DX和AX;結(jié)果大于32位,則存放在靜態(tài)變量存貯區(qū),AX(存段內(nèi)地址)指向該區(qū),若是FAR指針,DX(存段地址)和AX指向該區(qū)。所傳數(shù)據(jù)可能是值,稱(chēng)為值傳遞,可能是地址,稱(chēng)為地址傳遞。

4.1 值傳遞:實(shí)參的值壓棧

例2 /*f1.c*/

extern int add0(int,int);

main(){int x,y;x=2;y=3;printf("%d\n",add0(x,y));}

;f2.asm

.model small,c ;小模式,near過(guò)程,棧中只壓IP,無(wú)CS

public add0

.code

add0 proc

push bp

mov bp,sp

mov ax,[bp+4] ;取第一個(gè)實(shí)參X

add ax,[bp+6] ; 取第二個(gè)實(shí)參Y,出口AX

pop bp

ret ;彈出返回地址,返回

add0 endp

end 程序運(yùn)行結(jié)果是:5

4.2 傳地址:實(shí)參的地址壓棧

例3 /*f1.c*/

extern int add0(int*,int*);

main()

{int x,y;x=2;y=3;printf("%d\n",add0(&x,&y));}

;f2.asm

.model small,c ;小模式,near過(guò)程,棧中只壓IP,無(wú)CS

public add0

.code

add0 proc

push bp

mov bp,sp

mov bx,[bp+4] ;取第一個(gè)實(shí)參X的地址送bx

mov ax,[bx]

mov bx,[bp+6] ; 取第二個(gè)實(shí)參Y的地址送bx

add ax,[bx] ;出口AX

pop bp

ret ;彈出返回地址,返回

add0 endp

end 程序運(yùn)行結(jié)果是:5

4.3 通過(guò)外部變量 外部變量是公共變量,所有模塊均可自由的使用,無(wú)需傳遞參數(shù)。但應(yīng)當(dāng)盡可能避免使用全局變量,否則不可避免因?yàn)槟硞€(gè)全局變量的定義或使用而發(fā)生沖突,如例4.5。

例4 /*f1.c*/

int x=2;int y=3;int z;

extern void sub0(int,int);

main(){x=2;y=3;add0(x,y);printf("%d\n",z);}

;f2.asm

.model small,c ;小模式,near過(guò)程,棧中只壓IP,無(wú)CS

public add0

extern x:word,y:word,z:word

.code

add0 proc

mov ax,x

add ax,y

mov z,ax

ret ;彈出返回地址,返回

add0 endp

end 程序運(yùn)行結(jié)果是:5

5 匯編調(diào)C函數(shù)

例5 /*f1.c*/

extern int suba();

int subc(int x,int *y){return x-*y;}

main(){printf("%d\n",suba());}

;f2.asm

.model small,c; 小模式,near過(guò)程,棧中只壓IP,無(wú)CS

extern subc:near

.data

x1 dw 50

y1 dw 10

public suba

.code

suba proc

mov ax,offset y1

push ax ;壓第二個(gè)實(shí)參Y1,傳地址

mov ax,x1

push ax ;壓第一個(gè)實(shí)參X1,傳值

call subc ;匯編調(diào)C函數(shù)

add sp,4 ;平衡堆棧

ret ;彈出返回地址,返回

suba endp

end 程序運(yùn)行結(jié)果是:40

參考文獻(xiàn):

[1]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].清華大學(xué)出版社,2004.

篇(3)

Abstract: The pointer is the essence, focus and difficult of C language which is also the basis of C language Series. This article describes the arithmetic rules of pointer constants and variables in C language, as well as the access to the address.

關(guān)鍵詞: 指針;地址;數(shù)組;運(yùn)算

Key words: pointer;address;array;operation

中圖分類(lèi)號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2014)11-0214-02

1 緒論

C語(yǔ)言的精華是指針,程序設(shè)計(jì)的關(guān)鍵也是指針,使用指針的難點(diǎn)是指針的運(yùn)算。用指針訪問(wèn)數(shù)組元素,相對(duì)比較抽象,故本文用簡(jiǎn)單的自然語(yǔ)言予以淺析。

2 指針變量的概念

2.1 內(nèi)存地址:內(nèi)存中存儲(chǔ)單元的編號(hào) 內(nèi)存中,有眾多的存儲(chǔ)單元(單位:字節(jié))。為了區(qū)分不同單元,必須為每一個(gè)單元編號(hào),這個(gè)編號(hào)就是存儲(chǔ)單元的“地址”,就像電話很多,為了區(qū)分每一部電話,必須為其編號(hào),該編號(hào)就是電話號(hào)碼。每個(gè)單元有且僅有一個(gè)惟一的地址。單元中存放數(shù)據(jù),注意區(qū)分單元的地址與單元中的內(nèi)容(數(shù)據(jù))。

2.2 變量地址:該變量在內(nèi)存中的起始地址 變量名是單元的外部名字(用戶命名),單元號(hào)是單元的內(nèi)部名字(系統(tǒng)命名)如 int x 假設(shè)整型變量是2個(gè)字節(jié),系統(tǒng)分配的存儲(chǔ)單元為 100 和101,則首地址100就是變量x在內(nèi)存中的地址。

直接訪問(wèn)──直接利用變量的地址進(jìn)行存取。

如:把“書(shū)”送給“張偉”就是直接訪問(wèn)。

間接訪問(wèn)──通過(guò)另一變量訪問(wèn)該變量的值。

如:把“書(shū)”送給“張偉他哥”就是間接訪問(wèn),先間訪“張偉”,知道他哥的地址,再按此地址送“書(shū)”。

2.3 指針變量

指針:即地址,存放地址的變量稱(chēng)為指針變量。

指針變量定義格式:數(shù)據(jù)類(lèi)型 *指針變量[, *指針變量2……];

取地址運(yùn)算的格式: &變量

例如

main()

{int x,*p; /*整形的指針的p單元

P=&x;

X=10;

*p+=20;

Printf(“%d,%d\n”,x,*p);

} 程序運(yùn)行結(jié)果是30,30

3 數(shù)組的指針和指向數(shù)組的指針變量

3.1 數(shù)組的指針 數(shù)組元素在內(nèi)存中連續(xù)存放,數(shù)組名代表數(shù)組首地址,是一個(gè)地址常量。

3.2 指向數(shù)組的指針變量的定義

例如,int a[10], *p=a(或&a[0]);

或者:int a[10], *p;p=a;

3.3 數(shù)組元素的引用

3.3.1 按名存取 有 int a[10],*p=a;定義,則p=a,一個(gè)數(shù)組,兩個(gè)名字p和a,訪問(wèn)元素時(shí)用a[i]或p[i]。

3.3.2 按地址存取 有 int a[10],*p=a;定義,則:p+i和a+i都是數(shù)組元素a[i]的地址,訪問(wèn)元素時(shí)用*(p+i)和*(a+i)。按地址存取:*(p+i),*(a+i),按名存?。篴[i],p[i]四個(gè)是等價(jià)關(guān)系。

注意:①p+n指向數(shù)組的下n個(gè)元素,而不是簡(jiǎn)單地使指針變量p的值+n。編譯時(shí)為p+n*m。m為一個(gè)元素占用的字節(jié)數(shù)。②指針變量:既然是變量,其值隨時(shí)在變,必須注意其當(dāng)前值,否則容易出錯(cuò)。③指向數(shù)組的指針變量,可以指向數(shù)組以后的任何內(nèi)存單元,C語(yǔ)言不做越界檢查,這些單元不是系統(tǒng)分配的單元,強(qiáng)占資源,易導(dǎo)致死機(jī)。④int a[10],*p=a;p++對(duì),a++錯(cuò),a常量,p變量。

3.3.3 指向數(shù)組的指針變量所支持的運(yùn)算 地址加減數(shù)值等于新地址,除此以外運(yùn)算沒(méi)有意義,由此得出推論,指針支持的運(yùn)算有:

算術(shù)運(yùn)算:指針變量±整形數(shù)據(jù)、指針變量-指針變量=整型數(shù)值,該數(shù)值表示兩指針之間的數(shù)據(jù)個(gè)數(shù),并非地址之差。

關(guān)系運(yùn)算:指針變量 關(guān)系運(yùn)算符 指針變量,表示兩個(gè)變量值的大小關(guān)系,誰(shuí)在前誰(shuí)在后。

4 二維數(shù)組的指針及其指針變量

4.1 二維數(shù)組的指針 有定義語(yǔ)句: int a[3][4];

①?gòu)亩S數(shù)組角度看,數(shù)組名a代表數(shù)組的起始地址, 是一個(gè)以行為單位進(jìn)行控制的行指針,由一維數(shù)組構(gòu)成的一維數(shù)組就是二維數(shù)組,a+i是行指針值,指向二維數(shù)組的第i行。*(a+i)是列指針值,指向第i行第0列。*(*(a+i)):數(shù)組元素a[i][0]的值。用a作指針訪問(wèn)數(shù)組元素a[i][j]的格式:*(*(a+i)+j)。②int a[3][4],b[4];由定義可看出,a[i]相當(dāng)于數(shù)組名b,故a[0]、a[1]、a[2]分別表示第0、1、2一維數(shù)組的名字。③賦值:行指針變量=二維數(shù)組名或行指針變量。

4.2 行指針變量定義格式 數(shù)據(jù)類(lèi)型 (*指針變量)[n];

4.3 二維數(shù)組元素的訪問(wèn) int a[5][4],(*P)[4]=a;和int b[4],可以看出,b相當(dāng)于a[5],第i行的一維數(shù)組名是a[i],元素地址±數(shù)值=元素地址,行地址±數(shù)值=行地址,a+i,a[i],*(a+i)其值相等,但a+i是行地址,a[i],*(a+i) 是元素地址。

①按名存?。篴[i][j]或p[i][j]

②按地址存?。海?a[i]+j), *(*(a+i)+j), (*p[i]+j), *(*(p+i)+j)

5 動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)

靜態(tài)數(shù)組:編譯階段確定數(shù)組的大小,運(yùn)行階段不能改變數(shù)組大小。缺點(diǎn)是事先無(wú)法準(zhǔn)確確定數(shù)組的大小,太小不滿足處理需要,太大浪費(fèi)內(nèi)存空間。

動(dòng)態(tài)數(shù)組:運(yùn)行階段,根據(jù)實(shí)際需要?jiǎng)討B(tài)確定數(shù)組的大小。

在C語(yǔ)言中,可利用內(nèi)存的申請(qǐng)和釋放庫(kù)函數(shù),以及指向數(shù)組的指針變量可當(dāng)數(shù)組名使用的特點(diǎn),來(lái)實(shí)現(xiàn)動(dòng)態(tài)數(shù)組。如下程序

#include “alloc.h”

#include “stdlib.h”

main()

{ int *p=NULL, count, i,*q;

scanf(“%d”, &count);

p=(int *)malloc( sizeof(int) * count ); /*申請(qǐng)動(dòng)態(tài)數(shù)組使用的內(nèi)存塊*/

if ( p==NULL ) exit(0);

for (i=0; i

for (q=p+ count-1; q>=p; q++) printf(“%d,”, *q); /*倒序顯示*/

free(p); /*釋放由malloc()函數(shù)申請(qǐng)的內(nèi)存塊*/

} 程序功能是鍵入任意個(gè)數(shù)據(jù),倒序顯示。

5.1 庫(kù)函數(shù)malloc()

①用法:void *malloc(unsigned size)。②功能:在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)分配size個(gè)字節(jié)的連續(xù)空間。③返回值:申請(qǐng)成功,則返回新分配內(nèi)存塊的起始地址;否則,返回NULL。

malloc()函數(shù)的返回值是一個(gè)無(wú)類(lèi)型指針,但在實(shí)際使用malloc()函數(shù)時(shí),必須將其返回值強(qiáng)制轉(zhuǎn)換成被賦值指針變量的數(shù)據(jù)類(lèi)型,否則出錯(cuò)。

5.2 運(yùn)算符sizeof

①格式:sizeof(變量名/類(lèi)型名)。②功能:求變量/類(lèi)型占用的內(nèi)存字節(jié)數(shù)。如sizeof(long)=4。

5.3 庫(kù)函數(shù)free()

①用法:void free(void *ptr)。②功能:釋放由ptr指向的內(nèi)存塊(ptr是調(diào)用malloc() 函數(shù)的返回值)。③返回值:無(wú)。

一般情況下,使用malloc()函數(shù)申請(qǐng)的內(nèi)存塊,操作結(jié)束后,應(yīng)及時(shí)使用free()函數(shù)予以釋放。特別是在循環(huán)使用malloc()函數(shù)申請(qǐng)時(shí),如果不及時(shí)釋放不再使用的內(nèi)存塊,很可能很快就耗盡系統(tǒng)的內(nèi)存資源,從而導(dǎo)致程序無(wú)法繼續(xù)運(yùn)行甚至死機(jī)。

6 結(jié)束語(yǔ)

學(xué)習(xí)C語(yǔ)言必須掌握指針的概念,以便為以后C系列語(yǔ)言學(xué)習(xí)打下基礎(chǔ)。

參考文獻(xiàn):

[1]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].清華大學(xué)出版社,2004.

篇(4)

關(guān)鍵詞: ATmega16單片機(jī);數(shù)字溫度傳感器;儀用放大器;液晶顯示

中圖分類(lèi)號(hào):U469.75文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2012)0320059-01

0 引言

隨著現(xiàn)代人的生活質(zhì)量不斷提高,在滿足了衣食住行的需要以后,更加注重身體保健和合理飲食,以及保持健康的體形。隨時(shí)關(guān)注自己體重的變化調(diào)配飲食,不僅對(duì)青年女性需要,對(duì)中年老年等各層次的男女人群都是非常需要和必要的。低成本、高智能化的智能人體電子秤無(wú)疑具有極其廣闊的市場(chǎng)前景,具有較大的研究意義。

1 系統(tǒng)設(shè)計(jì)方案

1.1 系統(tǒng)結(jié)構(gòu)。系統(tǒng)主要由電源模塊、數(shù)據(jù)采集、數(shù)據(jù)處理和數(shù)據(jù)顯示四大部分組成。由壓力傳感器、溫度傳感器組成的數(shù)據(jù)采集部分將所得的壓力和溫度數(shù)據(jù)送ATmega16單片機(jī)處理,然后將處理所得的體重和溫度數(shù)據(jù)顯示在液晶顯示器上。

1.2 ATmega16單片機(jī)控制器。ATmega16是基于增強(qiáng)的AVR RISC結(jié)構(gòu)的低功耗8位CMOS微控制器。由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,ATmega16的數(shù)據(jù)吞吐率高達(dá)1MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。ATmega16具有16K字節(jié)的系統(tǒng)內(nèi)可編程Flash,512字節(jié)EEPROM,1K 字節(jié)SRAM;32個(gè)通用I/O口線,32個(gè)通用工作寄存器,用于邊界掃描的JTAG接口,支持片內(nèi)調(diào)試與編程;三個(gè)具有比較模式的靈活的定時(shí)器/計(jì)數(shù)器,片內(nèi)/外中斷;可編程串行USART,有起始條件檢測(cè)器的通用串行接口;8路10位具有可選差分輸入級(jí)可編程增益的ADC;具有片內(nèi)振蕩器的可編程看門(mén)狗定時(shí)器,一個(gè)SPI串行端口,以及六個(gè)可以通過(guò)軟件進(jìn)行選擇的省電模式。

1.3 壓力傳感器。1)壓力傳感器原理簡(jiǎn)介。電阻應(yīng)變式傳感器是一種利用電阻應(yīng)變效應(yīng),將各種力學(xué)量轉(zhuǎn)換為電信號(hào)的結(jié)構(gòu)型傳感器。電阻應(yīng)變片把機(jī)械應(yīng)變信號(hào)轉(zhuǎn)換為R/R后,采用惠更斯電橋轉(zhuǎn)換電路把應(yīng)變片的R/R變化轉(zhuǎn)換成電壓或電流變化。2)壓力信號(hào)前級(jí)濾波放大電路。壓力信號(hào)前級(jí)電路是稱(chēng)重系統(tǒng)的重要組成部分,對(duì)系統(tǒng)的精度有很大影響。由于壓力傳感器輸出的電壓信號(hào)為毫伏級(jí),所以對(duì)運(yùn)算放大器精度要求很高。采用普通運(yùn)算放大器組成的放大電路不能滿足精度要求。這里采用差動(dòng)輸入,高共模抑制比,高差模輸入阻抗,高增益,高精度精度且外部接口簡(jiǎn)單INA126儀用運(yùn)算放大器,對(duì)壓力傳感器信號(hào)進(jìn)行放大。

1.4 數(shù)字溫度傳感器DS18B20。DS18B20是Dallas 半導(dǎo)體公司發(fā)明的支持“一線總線”接口的溫度傳感器,其分辨率為9-12位,可根據(jù)需要通過(guò)程序設(shè)定精度;測(cè)量溫度范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi),精度可達(dá)±0.5℃。由于現(xiàn)場(chǎng)溫度測(cè)量結(jié)果以9-12位數(shù)字量方式串行(“一線總線”)傳送,不僅大大提高了系統(tǒng)的抗干擾性,而且簡(jiǎn)化了電路,在使用中不需要任何元件。同時(shí),DS18B20支持3V-5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。

1.5 電源模塊。電源部分也是系統(tǒng)的重要組成部分之一,其能否提供穩(wěn)定而準(zhǔn)確的電源關(guān)系到系統(tǒng)設(shè)計(jì)的成敗。系統(tǒng)需要多種電源,采用12V直流電源供電,可以通過(guò)穩(wěn)壓芯片轉(zhuǎn)換為其他電壓值為電路各部分供電。首先12V經(jīng)過(guò)三端穩(wěn)壓集成電路78L05后輸出5V電路工作電壓,同時(shí)又經(jīng)過(guò)LM2575穩(wěn)壓電路后輸出-5V為儀用放大器INA126提供負(fù)工作電壓,經(jīng)過(guò)AMS1117穩(wěn)壓器輸出1.5V電壓為單片機(jī)內(nèi)ADC提供轉(zhuǎn)換參考電壓,它對(duì)ADC的轉(zhuǎn)換精度有很大影響,所以必須保證精確穩(wěn)定。

2 系統(tǒng)軟件設(shè)計(jì)

按照硬件電路設(shè)計(jì),采用C 語(yǔ)言編程。系統(tǒng)軟件主要分為體重采集與處理子程序、溫度采集與處理子程序、LCD液晶顯示程序、體重存儲(chǔ)子程序四個(gè)部分。主程序是為了協(xié)調(diào)各個(gè)環(huán)節(jié)的工作,硬件初始化包括端口初始化、T0初始化、T1初始化、外部中斷初始化。體重測(cè)量數(shù)據(jù)通過(guò)A/D轉(zhuǎn)換讀取。溫度轉(zhuǎn)換是通過(guò)1線協(xié)議來(lái)控制和訪問(wèn)DS18B20讀取溫度數(shù)據(jù)。體重的存儲(chǔ)由外部中斷實(shí)現(xiàn),包括T0溢出中斷、T1溢出中斷和外部中斷INT2。其主程序流程如下圖所示:

3 結(jié)論

本設(shè)計(jì)的創(chuàng)新之處有以下幾個(gè)方面:1)選用內(nèi)含8路10位ADC的ATmega16單片機(jī)為控制核心,大大簡(jiǎn)化了電路,節(jié)約了設(shè)計(jì)成本;2)能夠存儲(chǔ)并通過(guò)按鍵調(diào)出以前所測(cè)的體重,以便和當(dāng)前體重比較,判斷一段時(shí)間內(nèi)體重升高或下降;3)應(yīng)用了單總線數(shù)字溫度傳感器DS18B20,能夠準(zhǔn)確的測(cè)量和實(shí)時(shí)顯示當(dāng)前環(huán)境溫度,簡(jiǎn)單而實(shí)用;4)系統(tǒng)操作簡(jiǎn)單方便,能夠?qū)崿F(xiàn)人機(jī)互動(dòng),用戶界面友好。

參考文獻(xiàn):

[1]秦偉,基于STC89C51 RC電子稱(chēng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),第5卷第31期.

[2]張軍、宋濤,AVR單片機(jī)實(shí)用C語(yǔ)言程序設(shè)計(jì)實(shí)例精粹,北京:電子工業(yè)出版社,2009.1.

篇(5)

關(guān)鍵詞:單片機(jī);實(shí)例化;模塊化;實(shí)驗(yàn)平臺(tái);教學(xué)改革

中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B

1引言

MCS-51系列單片機(jī)因結(jié)構(gòu)緊湊、指令系統(tǒng)靈活、成本低、開(kāi)發(fā)工具普及等原因,得到了非常廣泛的應(yīng)用。目前幾乎所有工科大專(zhuān)院校都開(kāi)設(shè)了單片機(jī)原理及應(yīng)用等課程。但多年的教學(xué)實(shí)踐經(jīng)驗(yàn)也表明,單片機(jī)原理與應(yīng)用課程的教學(xué)質(zhì)量較難保證,其主要原因是:傳統(tǒng)的灌輸式課堂教學(xué)方法、過(guò)多的理論課時(shí)抑制了學(xué)生學(xué)習(xí)的積極性,而較少的實(shí)驗(yàn)課時(shí)又使本門(mén)課程的理論和實(shí)踐脫節(jié)。如何根據(jù)單片機(jī)原理與應(yīng)用課程的特點(diǎn),尋求一種能較好培養(yǎng)學(xué)生實(shí)踐能力的教學(xué)方法,是每一位任課教師都應(yīng)深入思考的問(wèn)題。

2傳統(tǒng)單片機(jī)教學(xué)模式的不足之處

目前,大多數(shù)單片機(jī)課程在教學(xué)內(nèi)容設(shè)置和教學(xué)順序安排方面仍然采用傳統(tǒng)的先基礎(chǔ)后應(yīng)用的模式,即從介紹單片機(jī)的硬件結(jié)構(gòu)、指令系統(tǒng)及尋址方式入手,然后依次講解匯編語(yǔ)言程序設(shè)計(jì)、系統(tǒng)總線擴(kuò)展及接口技術(shù),最后介紹應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例。在上述安排中,課堂理論教學(xué)的學(xué)時(shí)大大多于實(shí)驗(yàn)教學(xué)的學(xué)時(shí),例如對(duì)于32學(xué)時(shí)的單片機(jī)原理與應(yīng)用,通常實(shí)驗(yàn)只分配4~6學(xué)時(shí)。同時(shí),實(shí)驗(yàn)環(huán)節(jié)通常安排在“匯編語(yǔ)言程序設(shè)計(jì)”之后才開(kāi)始進(jìn)行。這種教學(xué)體系的不足之處在于:

(1) 課程開(kāi)始時(shí)原理性內(nèi)容太多,內(nèi)容較為枯燥,學(xué)生理解困難,影響學(xué)習(xí)熱情;

(2) 側(cè)重于原理知識(shí)介紹,應(yīng)用系統(tǒng)設(shè)計(jì)及實(shí)驗(yàn)學(xué)時(shí)不足,不利于培養(yǎng)學(xué)生的實(shí)踐能力;

(3) 因課時(shí)限制,程序設(shè)計(jì)語(yǔ)言的介紹止步于匯編語(yǔ)言,更常用的C51則無(wú)暇顧及;

(4) 實(shí)驗(yàn)系統(tǒng)功能固定,缺少和南京郵電大學(xué)通信類(lèi)教學(xué)內(nèi)容相關(guān)的實(shí)驗(yàn)內(nèi)容,實(shí)驗(yàn)學(xué)時(shí)少,不利于進(jìn)行較為復(fù)雜的綜合性、設(shè)計(jì)性實(shí)驗(yàn),使學(xué)生在構(gòu)建實(shí)際的單片機(jī)應(yīng)用時(shí)缺少系統(tǒng)化的思路。

上述幾個(gè)原因中,對(duì)教學(xué)質(zhì)量影響最大的原因就是實(shí)驗(yàn)課時(shí)不足、實(shí)驗(yàn)系統(tǒng)功能固定以及缺少通信類(lèi)實(shí)驗(yàn)內(nèi)容,不利于學(xué)生進(jìn)行綜合性、設(shè)計(jì)性實(shí)驗(yàn),學(xué)生無(wú)法對(duì)所學(xué)知識(shí)融會(huì)貫通。同時(shí),單片機(jī)原理與應(yīng)用課程通常在第六或第七學(xué)期作為選修課開(kāi)出,而此時(shí)學(xué)生由于找工作或考研等多方面因素的影響,對(duì)這些課程的重視程度不夠,也使得教學(xué)效果大打折扣。

3通過(guò)實(shí)例化教學(xué)加強(qiáng)單片機(jī)課程的實(shí)踐環(huán)節(jié)

對(duì)于單片機(jī)這類(lèi)實(shí)踐性較強(qiáng)的課程,在教學(xué)中更應(yīng)該強(qiáng)調(diào)學(xué)以致用。為了能更好地培養(yǎng)學(xué)生單片機(jī)技術(shù)應(yīng)用能力,激發(fā)學(xué)生的學(xué)習(xí)主動(dòng)性,我們?cè)趩纹瑱C(jī)教學(xué)過(guò)程中進(jìn)行了實(shí)例化教學(xué)的探索。所謂的“實(shí)例化”教學(xué),就是把單片機(jī)課程中所要教授的各項(xiàng)理論知識(shí)和實(shí)踐技能按由淺入深的原則分解到一個(gè)個(gè)具體的實(shí)驗(yàn)實(shí)例中,通過(guò)讓學(xué)生在教學(xué)過(guò)程中按順序完成這些實(shí)驗(yàn)來(lái)達(dá)到教學(xué)目的。在實(shí)例的設(shè)計(jì)和順序安排上必須注意循序漸進(jìn),各部分內(nèi)容既循序漸進(jìn),又互相聯(lián)系,前面的實(shí)例為后續(xù)的實(shí)例打基礎(chǔ),后續(xù)的實(shí)例在不斷引入新內(nèi)容和新概念的同時(shí),也對(duì)前面實(shí)例中提到的知識(shí)點(diǎn)進(jìn)行適當(dāng)?shù)闹貜?fù),以加深學(xué)生對(duì)教學(xué)內(nèi)容的理解。

為了達(dá)到上述的教學(xué)目的,作者在主持單片機(jī)教學(xué)改革項(xiàng)目時(shí),決定自行設(shè)計(jì)模塊化的單片機(jī)通信接口實(shí)驗(yàn)平臺(tái),以配合單片機(jī)教學(xué)方式及教學(xué)內(nèi)容的改革。

4單片機(jī)模塊化實(shí)驗(yàn)系統(tǒng)的特點(diǎn)

4.1實(shí)驗(yàn)平臺(tái)的主要特點(diǎn)

(1) 提供豐富的基本接口實(shí)驗(yàn)?zāi)K,這些模塊主要通過(guò)單片機(jī)的I/O端口控制。

(2) 提供單片機(jī)總線擴(kuò)展接口,用于控制功能較復(fù)雜的器件。

(3) 提供多種通信接口實(shí)驗(yàn)?zāi)K,如串行口、電話通信接口、網(wǎng)絡(luò)通信接口、GSM/GPRS接口等。

(4) 選用具有IAP功能及集成MON51調(diào)試跟蹤功能的CPU,下載實(shí)驗(yàn)代碼及動(dòng)態(tài)跟蹤調(diào)試方便,不用仿真器,極大地降低了實(shí)驗(yàn)系統(tǒng)的成本。

(5) 實(shí)驗(yàn)平臺(tái)上CPU可選擇多種晶振頻率,方便不同種類(lèi)實(shí)驗(yàn)的需求。

(6) 大多數(shù)實(shí)驗(yàn)電路均實(shí)現(xiàn)模塊化設(shè)計(jì),學(xué)生進(jìn)行實(shí)驗(yàn)時(shí)首先必須設(shè)計(jì)電路并動(dòng)手連接,既解決了單片機(jī)在控制復(fù)雜系統(tǒng)時(shí)I/O端口不足的問(wèn)題,又有利于通過(guò)不同模塊的組合設(shè)計(jì)新的實(shí)驗(yàn),也可以鍛煉學(xué)生的動(dòng)手能力。改變了以往很多實(shí)驗(yàn)系統(tǒng)不需要搭電路,只要運(yùn)行例子代碼即可完成實(shí)驗(yàn)的不足。

4.2實(shí)驗(yàn)平臺(tái)的功能

本實(shí)驗(yàn)平臺(tái)目前可進(jìn)行的驗(yàn)證性實(shí)驗(yàn)約有三十多個(gè),包括通過(guò)單片機(jī)的輸入輸出接口可直接完成的實(shí)驗(yàn),如通過(guò)單片機(jī)控制LED、LED點(diǎn)陣、獨(dú)立鍵盤(pán)、行列式鍵盤(pán)、數(shù)碼管、E2PROM、實(shí)時(shí)鐘、串行A/D、串行D/A、溫度傳感器、紅外接收器、液晶顯示器、直流電機(jī)、步進(jìn)電機(jī)等,實(shí)驗(yàn)內(nèi)容基本涵蓋了單片機(jī)應(yīng)用領(lǐng)域的各個(gè)方面,除了滿足單片機(jī)原理及應(yīng)用課程的課內(nèi)實(shí)驗(yàn)的需求外,還可供學(xué)生進(jìn)行課外科技創(chuàng)新活動(dòng)使用。

除了單片機(jī)I/O端口可直接控制的接口模塊之外,本實(shí)驗(yàn)平臺(tái)還設(shè)計(jì)了單片機(jī)擴(kuò)展總線接口,并在總線上接入了32K字節(jié)RAM存儲(chǔ)器、擴(kuò)展了并行輸入/輸出端口、串行口、電話用戶線接口、以太網(wǎng)通信接口以及獨(dú)立的GSM/GPRS模塊等器件,在此基礎(chǔ)上,可進(jìn)行十多個(gè)和通信相關(guān)的實(shí)驗(yàn),如單片機(jī)控制擴(kuò)展串口芯片與PC機(jī)的串行通信、基于RS-485接口的多機(jī)通信、模擬電話用戶摘掛機(jī)及脈沖撥號(hào)、DTMF信號(hào)的接收和識(shí)別、TCP/IP協(xié)議棧測(cè)試、GPRS數(shù)傳通信、GSM短消息收發(fā)等。這些通信類(lèi)實(shí)驗(yàn)是本實(shí)驗(yàn)平臺(tái)的主要特色之一,包含了多種通信方式和通信協(xié)議,大部分都屬于設(shè)計(jì)性和綜合性實(shí)驗(yàn),具有一定的趣味性和挑戰(zhàn)性,對(duì)于培養(yǎng)學(xué)生的分析能力、實(shí)踐能力、數(shù)據(jù)處理能力及資料查閱能力等都大有幫助。

5實(shí)驗(yàn)平臺(tái)的硬件設(shè)計(jì)

實(shí)驗(yàn)平臺(tái)的硬件結(jié)構(gòu)框圖如圖1所示。

5.1實(shí)驗(yàn)平臺(tái)CPU的選擇

實(shí)驗(yàn)系統(tǒng)選擇NXP公司(原Philips公司)的P89V51RD2單片機(jī)作為CPU。該CPU為8052內(nèi)核,片內(nèi)包含64K字節(jié)的Flash存儲(chǔ)器、1K字節(jié)的擴(kuò)展RAM,以及SPI接口、雙數(shù)據(jù)指針、硬件看門(mén)狗電路及5通道的PCA電路等資源;同時(shí)該CPU還具有ISP/IAP以及在線仿真功能,可通過(guò)串行口更新應(yīng)用程序代碼或下載Mon51仿真代碼供跟蹤調(diào)試程序使用,不需要硬件仿真器即可完成各種實(shí)驗(yàn)代碼的在線調(diào)試,功能強(qiáng)大,性價(jià)比高,極其適合實(shí)驗(yàn)類(lèi)應(yīng)用的需求。

CPU的串行口通過(guò)RS-232電平變換電路和實(shí)驗(yàn)微機(jī)的串行口相連,完成實(shí)驗(yàn)代碼下載及在線調(diào)試工作。

5.2I/O控制類(lèi)接口模塊的設(shè)計(jì)

所謂I/O控制類(lèi)接口,指的是可以通過(guò)單片機(jī)的并行I/O端口引腳直接控制的實(shí)驗(yàn)電路部分的接口。例如對(duì)于4×4行列式鍵盤(pán),當(dāng)采用掃描法工作時(shí),共有4根行掃描線和4根列掃描線,在實(shí)驗(yàn)平臺(tái)中將這8根掃描線引出到圖1中所示的I/O控制接口部分。在實(shí)驗(yàn)時(shí),可選擇單片機(jī)P0~P3中的某個(gè)并行端口,用8芯扁平電纜將I/O控制接口部分的鍵盤(pán)掃描線和CPU的并行端口連接起來(lái)即可進(jìn)行實(shí)驗(yàn)。

與鍵盤(pán)接口類(lèi)似,實(shí)驗(yàn)平臺(tái)中的1602字符點(diǎn)陣液晶顯示模塊、實(shí)時(shí)鐘、E2PROM存儲(chǔ)器、串行A/D、串行D/A、溫度傳感器、紅外接收模塊、8位共陰級(jí)數(shù)碼管模塊、可獨(dú)立驅(qū)動(dòng)的數(shù)碼管、按鍵、LED、撥動(dòng)開(kāi)關(guān)、移位寄存器、CPLD模塊、步進(jìn)電機(jī)及直流電機(jī)等器件和設(shè)備都是通過(guò)單片機(jī)的I/O端口引腳直接控制的方式進(jìn)行實(shí)驗(yàn)的,但是單片機(jī)本身的I/O端口引腳只有32根,無(wú)法同時(shí)控制所有的資源。為了解決這個(gè)矛盾,在電路設(shè)計(jì)時(shí),將這類(lèi)器件的受控引腳引出到接插件上,所有和受控引腳引出線相連的接插件就構(gòu)成了I/O控制接口。在進(jìn)行具體的實(shí)驗(yàn)時(shí),根據(jù)實(shí)際電路的設(shè)計(jì)要求,使用兩端帶有接插件的扁平電纜將CPU的并行I/O端口和I/O控制接口中相應(yīng)設(shè)備的受控引腳連接起來(lái)即可。各器件的供電電路、時(shí)鐘電路、驅(qū)動(dòng)電路等單獨(dú)設(shè)計(jì),在電路板上統(tǒng)一部署,無(wú)需通過(guò)I/O控制接口控制。

在實(shí)驗(yàn)平臺(tái)的電路設(shè)計(jì)中,所有器件和設(shè)備引出的控制引腳和單片機(jī)的I/O端口引腳均已根據(jù)各自的特性進(jìn)行了預(yù)處理,如上拉、下拉等,以確保未參與實(shí)驗(yàn)的引腳在懸空時(shí)狀態(tài)的確定性,避免引起器件、設(shè)備的誤動(dòng)作或損壞。

5.3總線控制類(lèi)接口模塊的設(shè)計(jì)

在很多應(yīng)用場(chǎng)合,MCS-51單片機(jī)片內(nèi)資源不能滿足要求,此時(shí)就要進(jìn)行系統(tǒng)擴(kuò)展,引出地址總線、數(shù)據(jù)總線和控制總線用于控制外部器件設(shè)備。此時(shí)單片機(jī)的P0端口在ALE信號(hào)的控制下實(shí)現(xiàn)時(shí)分復(fù)用,擴(kuò)展為數(shù)據(jù)總線和地址總線的低8位,P2端口擴(kuò)展為地址總線的高8位,P3端口的P3.6和P3.7引腳分別用于擴(kuò)展總線的寫(xiě)選通和讀選通信號(hào)。總線上可以掛接多個(gè)設(shè)備或器件,設(shè)備或器件通過(guò)地址譯碼選通,由CPU進(jìn)行讀寫(xiě)。

本實(shí)驗(yàn)平臺(tái)設(shè)計(jì)了總線擴(kuò)展接口(A)和(B),總線擴(kuò)展接口(A)和CPU的P0~P3端口復(fù)接,總線擴(kuò)展接口(B)則和地址鎖存器及地址譯碼電路連接。當(dāng)需要進(jìn)行總線擴(kuò)展時(shí),通過(guò)40芯扁平電纜將電路板上的總線擴(kuò)展接口(A)和(B)連接起來(lái)即可。此時(shí)單片機(jī)的P0、P2及P3.6、P3.7作為總線控制引腳使用,不可再當(dāng)作普通I/O端口使用。

擴(kuò)展總線使用A15對(duì)32K字節(jié)的RAM進(jìn)行片選,同時(shí)通過(guò)74HC138地址譯碼電路提供8個(gè)地址譯碼輸出,譯碼電路如圖2所示。

圖2中的74HC138采用讀寫(xiě)信號(hào)相與作為使能信號(hào)之一,這樣就保證了只有當(dāng)單片機(jī)進(jìn)行外部總線訪問(wèn)時(shí)才選通74HC138進(jìn)行地址譯碼。實(shí)驗(yàn)平臺(tái)使用這些地址譯碼輸出選通相關(guān)的設(shè)備或器件進(jìn)行讀寫(xiě)。具體內(nèi)容如表1所示。

6配套實(shí)驗(yàn)的設(shè)計(jì)及教學(xué)改革

6.1驗(yàn)證性實(shí)驗(yàn)

驗(yàn)證性實(shí)驗(yàn)是為了驗(yàn)證并鞏固課程中已學(xué)習(xí)過(guò)的知識(shí)點(diǎn)而設(shè)計(jì)的實(shí)驗(yàn)。單片機(jī)本身的知識(shí)點(diǎn)主要在于其指令系統(tǒng)及內(nèi)部資源如并行端口、定時(shí)器/計(jì)數(shù)器、串行口等的控制和使用。

各學(xué)校開(kāi)設(shè)的單片機(jī)原理類(lèi)課程的學(xué)時(shí)數(shù)基本都是32學(xué)時(shí),其中實(shí)驗(yàn)學(xué)時(shí)一般在4~8學(xué)時(shí)之間,能夠進(jìn)行的實(shí)驗(yàn)的數(shù)量并不多。為此我們對(duì)教學(xué)內(nèi)容及實(shí)驗(yàn)方式進(jìn)行了改革,增加部分基礎(chǔ)實(shí)驗(yàn)的實(shí)驗(yàn)課時(shí),并為此設(shè)計(jì)了4~6個(gè)驗(yàn)證性實(shí)驗(yàn)的實(shí)例,例如通過(guò)I/O端口及循環(huán)延時(shí)控制LED實(shí)現(xiàn)跑馬燈、通過(guò)定時(shí)中斷控制LED實(shí)現(xiàn)跑馬燈、獨(dú)立按鍵的掃描、單片機(jī)串行口數(shù)據(jù)的收發(fā)等。這些實(shí)驗(yàn)的控制流程簡(jiǎn)單,代碼量小,非常容易理解,主要側(cè)重于單片機(jī)指令系統(tǒng)及單片機(jī)內(nèi)部資源的使用。實(shí)例同時(shí)提供匯編語(yǔ)言與C語(yǔ)言兩種版本,由老師事先調(diào)試運(yùn)行完畢,在進(jìn)行課內(nèi)實(shí)驗(yàn)時(shí),讓學(xué)生直接在該實(shí)驗(yàn)系統(tǒng)上運(yùn)行。由于實(shí)驗(yàn)代碼已事先調(diào)試完畢,所以學(xué)生在短時(shí)間內(nèi)可以完成所有的實(shí)驗(yàn),通過(guò)對(duì)閱讀實(shí)際代碼、編譯、連接工程、模擬調(diào)試、下載代碼并執(zhí)行這樣一個(gè)完整的開(kāi)發(fā)過(guò)程的實(shí)踐,切實(shí)掌握單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)流程及開(kāi)發(fā)工具的使用,并能體會(huì)到機(jī)器指令、匯編語(yǔ)言和高級(jí)語(yǔ)言之間的關(guān)系,為進(jìn)一步完成后續(xù)的綜合性及設(shè)計(jì)性實(shí)驗(yàn)打下基礎(chǔ)。為了防止學(xué)生在完成驗(yàn)證性實(shí)驗(yàn)時(shí)走過(guò)場(chǎng),我們還針對(duì)每個(gè)實(shí)驗(yàn)設(shè)計(jì)了一些思考題,在驗(yàn)收實(shí)驗(yàn)時(shí)要求學(xué)生現(xiàn)場(chǎng)修改并執(zhí)行,可充分檢驗(yàn)出學(xué)生對(duì)實(shí)驗(yàn)內(nèi)容的了解程度,起到督促學(xué)生認(rèn)真進(jìn)行實(shí)驗(yàn)的作用。

6.2綜合性實(shí)驗(yàn)

綜合性實(shí)驗(yàn)是指學(xué)生在具有一定的知識(shí)和技能的基礎(chǔ)上,運(yùn)用某一門(mén)課程中的多個(gè)知識(shí)點(diǎn)或多門(mén)課程的相關(guān)知識(shí)對(duì)實(shí)驗(yàn)技能和方法進(jìn)行綜合訓(xùn)練的一種復(fù)合型實(shí)驗(yàn)。

對(duì)于單片機(jī)課程而言,綜合性實(shí)驗(yàn)一般在課程結(jié)束前進(jìn)行,此時(shí)學(xué)生已經(jīng)基本掌握了單片機(jī)的內(nèi)部資源及外擴(kuò)設(shè)備的原理,可以運(yùn)用多個(gè)知識(shí)點(diǎn)完成綜合性實(shí)驗(yàn)。我們準(zhǔn)備了兩個(gè)綜合性實(shí)驗(yàn):短消息收發(fā)終端的設(shè)計(jì)和分布式溫度采集系統(tǒng)。短消息收發(fā)終端設(shè)計(jì)實(shí)驗(yàn)要求學(xué)生掌握通過(guò)單片機(jī)外擴(kuò)總線擴(kuò)展串行通信接口,實(shí)現(xiàn)擴(kuò)展串行接口和單片機(jī)本身串行口之間的數(shù)據(jù)緩沖、中斷式數(shù)據(jù)收發(fā)、數(shù)據(jù)包分析等功能;分布式溫度采集系統(tǒng)實(shí)驗(yàn)要求學(xué)生掌握單片機(jī)多機(jī)通信的原理、多機(jī)通信環(huán)境下數(shù)據(jù)包收發(fā)的設(shè)計(jì)和實(shí)現(xiàn)、通過(guò)I/O端口模擬總線時(shí)序?qū)U(kuò)展設(shè)備進(jìn)行操作等知識(shí)。上述兩個(gè)實(shí)驗(yàn)學(xué)生可按三人一個(gè)小組,任選一個(gè)完成。由于它們都引入了功能較復(fù)雜的外部設(shè)備,學(xué)生必須在課外預(yù)先進(jìn)行一定的準(zhǔn)備,鍛煉了學(xué)生資料查閱能力、系統(tǒng)分析能力、分工合作能力及編程實(shí)踐能力。

6.3設(shè)計(jì)性實(shí)驗(yàn)

設(shè)計(jì)性實(shí)驗(yàn)是指給定實(shí)驗(yàn)?zāi)康摹⒁蠛蛯?shí)驗(yàn)條件,由學(xué)生自行設(shè)計(jì)實(shí)驗(yàn)方案并加以實(shí)現(xiàn)的一種探索型實(shí)驗(yàn)。設(shè)計(jì)性實(shí)驗(yàn)不但要求學(xué)生綜合課程中的多個(gè)知識(shí)點(diǎn)和各種實(shí)驗(yàn)原理來(lái)設(shè)計(jì)實(shí)驗(yàn)方案,而且要求學(xué)生能充分運(yùn)用已學(xué)的知識(shí)去發(fā)現(xiàn)問(wèn)題、解決問(wèn)題。開(kāi)設(shè)設(shè)計(jì)性實(shí)驗(yàn)的目的是讓學(xué)生在實(shí)踐中將相關(guān)的基礎(chǔ)知識(shí)、基本理論得以實(shí)踐、融會(huì)貫通,培養(yǎng)其獨(dú)立發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力,以最大限度發(fā)揮學(xué)生學(xué)習(xí)的主動(dòng)性,相對(duì)于綜合性實(shí)驗(yàn)而言,要求更高、難度更大。

對(duì)于設(shè)計(jì)性實(shí)驗(yàn),我們充分利用自制實(shí)驗(yàn)設(shè)備豐富的系統(tǒng)資源,準(zhǔn)備了十余個(gè)題目,大部分和通信相關(guān),同時(shí)還涉及單片機(jī)內(nèi)部及擴(kuò)展資源的使用,例如模擬電話用戶接口設(shè)計(jì)、串口/以太網(wǎng)轉(zhuǎn)換模塊設(shè)計(jì)、短信監(jiān)控系統(tǒng)設(shè)計(jì)等。這些實(shí)驗(yàn)只指定了實(shí)驗(yàn)的基本要求和可用的資源,具體的實(shí)驗(yàn)方案和實(shí)際的設(shè)計(jì)過(guò)程都由學(xué)生自行完成。通過(guò)這樣的實(shí)驗(yàn)過(guò)程,學(xué)生們可以把分散、獨(dú)立的知識(shí)融會(huì)貫通,整合為一體,最大程度上了解并掌握了單片機(jī)系統(tǒng)開(kāi)發(fā)的全過(guò)程,使學(xué)生的創(chuàng)新能力、設(shè)計(jì)能力及實(shí)踐能力得到了充分的鍛煉。

由于課時(shí)的限制,設(shè)計(jì)性實(shí)驗(yàn)并不要求作為課內(nèi)實(shí)驗(yàn)完成。我們針對(duì)設(shè)計(jì)性實(shí)驗(yàn)進(jìn)行了教學(xué)改革的嘗試,鼓勵(lì)學(xué)生選擇一到兩個(gè)設(shè)計(jì)性實(shí)驗(yàn),在課程結(jié)束后的半學(xué)期內(nèi)利用課外時(shí)間到開(kāi)放實(shí)驗(yàn)室去完成。學(xué)生完成實(shí)驗(yàn),提交實(shí)驗(yàn)報(bào)告,經(jīng)實(shí)驗(yàn)教師檢查合格后可根據(jù)實(shí)驗(yàn)學(xué)時(shí)獲得一定的自主個(gè)性化學(xué)分,以此來(lái)激發(fā)同學(xué)們選做實(shí)驗(yàn)的積極性。

7結(jié)語(yǔ)

本文介紹的單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)具有以下特點(diǎn):實(shí)例化的基礎(chǔ)實(shí)驗(yàn)可使學(xué)生盡快掌握單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)思路及開(kāi)發(fā)工具的使用;豐富的系統(tǒng)資源及資源的模塊化設(shè)計(jì)可組合出較多的實(shí)驗(yàn)內(nèi)容,并在該實(shí)驗(yàn)平臺(tái)上實(shí)現(xiàn)了同時(shí)進(jìn)行驗(yàn)證性、綜合性和設(shè)計(jì)性實(shí)驗(yàn)的功能,提高了實(shí)驗(yàn)平臺(tái)的性價(jià)比;在綜合性、設(shè)計(jì)性實(shí)驗(yàn)內(nèi)容的安排上偏向于通信領(lǐng)域各種技術(shù)的應(yīng)用,符合本校的辦學(xué)特色。

目前該實(shí)驗(yàn)系統(tǒng)已批量生產(chǎn),首批80套設(shè)備投入使用后,經(jīng)過(guò)一個(gè)學(xué)期兩個(gè)大班實(shí)驗(yàn)教學(xué)的試點(diǎn),教學(xué)效果良好,極大地提高了學(xué)生的學(xué)習(xí)興趣及綜合創(chuàng)新能力。

參考文獻(xiàn):

[1] 倪志蓮. 單片機(jī)課程的實(shí)驗(yàn)教學(xué)改革[J]. 實(shí)驗(yàn)室研究與探索,2006,25(7):843-844.

[2] 陳亮. 單片機(jī)課程的教學(xué)改革[J]. 實(shí)驗(yàn)室研究與探索,2008,27(9):121-123.

[3] 廖平. 單片機(jī)實(shí)驗(yàn)教學(xué)的改革[J]. 實(shí)驗(yàn)室研究與探索,2004,23(7):36-38.

[4] 馬忠梅. 單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M]. 北京:北京航空航天大學(xué)出版社,2003.

[5] 焦振宇. 淺談新形勢(shì)下我國(guó)高校單片機(jī)教學(xué)的課程改革[J]. 高教論壇,2005,2(1):102-105.

篇(6)

  南京大學(xué)BBS小百合上出現(xiàn)了一段趣聞:騰訊高級(jí)執(zhí)行副總裁兼首席信息官許晨曄于1996年碩士畢業(yè)于南京大學(xué)計(jì)算機(jī)系;奇虎360副總裁為南京大學(xué)軟件學(xué)院碩士。大家笑稱(chēng),原來(lái)360與騰訊之爭(zhēng)還是南京大學(xué)軟件學(xué)院與計(jì)算機(jī)學(xué)院之爭(zhēng)啊。

  在2000年的“網(wǎng)絡(luò)泡沫”破裂之后,IT行業(yè)漸漸恢復(fù)了作為一個(gè)行業(yè)應(yīng)有的冷靜和平和,也逐漸退出了人們關(guān)注的視線。而今年一場(chǎng)莫名而來(lái)的“3Q大戰(zhàn)”似乎又重新將這個(gè)行業(yè)推到了中國(guó)大眾的眼前。而這僅僅是一個(gè)讓更多人去關(guān)注這個(gè)行業(yè)的契機(jī)――其實(shí)他已經(jīng)默默地影響著我們每一天的生活。從小巧可愛(ài)的MP3到關(guān)系民生的銀行系統(tǒng),再到載人航天的宇宙飛船,到處都有IT行業(yè)的身影。

  IT行業(yè)在大學(xué)中的相關(guān)專(zhuān)業(yè)并不是像想象中的只有計(jì)算機(jī)科學(xué)等少數(shù)幾個(gè)專(zhuān)業(yè),額外的專(zhuān)業(yè)還有軟件工程、信息工程、信息安全等很多專(zhuān)業(yè),尤以計(jì)算機(jī)科學(xué)和軟件工程最具典型性。軟件工程和計(jì)算機(jī)科學(xué)在學(xué)科的劃分上,并不屬于同一個(gè)科目。軟件工程隸屬于工科類(lèi),而計(jì)算機(jī)科學(xué)更多地屬于理科類(lèi)。他們雖然在大多數(shù)人眼中有著極大的相似之處,卻在千絲萬(wàn)縷的聯(lián)系中包含著巨大的差異。

優(yōu)雅學(xué)院派:計(jì)算機(jī)科學(xué)與技術(shù)

  計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)培養(yǎng)具有良好的科學(xué)素養(yǎng),系統(tǒng)地、較好地掌握計(jì)算機(jī)科學(xué)與技術(shù)包括計(jì)算機(jī)硬件、軟件與應(yīng)用的基本理論、基本知識(shí)和基本技能與方法,能在科研部門(mén)、教育單位、企業(yè)、事業(yè)、技術(shù)和行政管理部門(mén)等單位從事計(jì)算機(jī)教學(xué)、科學(xué)研究和應(yīng)用的計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科的高級(jí)科學(xué)技術(shù)人才。他是研究計(jì)算機(jī)及其周?chē)鞣N現(xiàn)象和規(guī)律的科學(xué),亦即研究計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、程序系統(tǒng)(即軟件)、人工智能以及計(jì)算本身的性質(zhì)和問(wèn)題的學(xué)科。其學(xué)科的重點(diǎn)并非是軟件的構(gòu)建,而是計(jì)算原理本身。而計(jì)算機(jī)也好,軟件本身也好,只是計(jì)算的實(shí)現(xiàn)。

  與其說(shuō)計(jì)算機(jī)專(zhuān)業(yè)是優(yōu)雅的學(xué)院派,還不如說(shuō)計(jì)算機(jī)科學(xué)與技術(shù)在IT行業(yè)中起著高屋建瓴、提綱挈領(lǐng)的作用。學(xué)院派需要的是潛心對(duì)計(jì)算機(jī)專(zhuān)業(yè)的研究和分析,具有一定的創(chuàng)造性和啟發(fā)性。在行業(yè)內(nèi)部,計(jì)算機(jī)系畢業(yè)的學(xué)生大多數(shù)成為技術(shù)高層的架構(gòu)師。

  主要課程:電路原理、模擬電子技術(shù)、數(shù)字邏輯、數(shù)字分析、計(jì)算機(jī)原理、微型計(jì)算機(jī)技術(shù)、計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò)、高級(jí)語(yǔ)言、匯編語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算方法、離散數(shù)學(xué)、概率統(tǒng)計(jì)、線性代數(shù)以及算法設(shè)計(jì)與分析等。主要實(shí)踐性教學(xué)環(huán)節(jié)包括電子工藝實(shí)習(xí)、硬件部件設(shè)計(jì)及調(diào)試、計(jì)算機(jī)基礎(chǔ)訓(xùn)練、課程設(shè)計(jì)、計(jì)算機(jī)工程實(shí)踐、生產(chǎn)實(shí)習(xí)、畢業(yè)設(shè)計(jì)(論文)。

  就業(yè)方向:學(xué)生畢業(yè)后可以到國(guó)內(nèi)外眾多軟件企業(yè)、國(guó)家機(jī)關(guān)以及各個(gè)大、中型企、事業(yè)單位的信息技術(shù)部門(mén)、教育部門(mén)等單位從事軟件工程領(lǐng)域的技術(shù)開(kāi)發(fā)、教學(xué)、科研及管理等工作。也可到信息產(chǎn)業(yè)、財(cái)政、金融、郵電、交通、國(guó)防、大專(zhuān)院校和科研機(jī)構(gòu)從事通信技術(shù)和電子技術(shù)的科研、教學(xué)和工程技術(shù)工作。

  推薦學(xué)府:北京大學(xué)、清華大學(xué)、北京航空航天大學(xué)、哈爾濱工業(yè)大學(xué)、上海交通大學(xué)、南京大學(xué)、國(guó)防科學(xué)技術(shù)大學(xué)等。

行業(yè)實(shí)干家:軟件工程

  軟件工程,顧名思義是以工程為主,是一門(mén)研究用工程化方法構(gòu)建和維護(hù)有效的、實(shí)用的和高質(zhì)量的軟件的學(xué)科。其學(xué)科在學(xué)習(xí)構(gòu)建軟件的基礎(chǔ)上,更加重視工程化的方法,希望能夠以傳統(tǒng)的工程,如建筑工程、化學(xué)工程的方式去構(gòu)建軟件產(chǎn)品。其學(xué)生在學(xué)習(xí)基本的語(yǔ)言基礎(chǔ)上,還要學(xué)量的軟件工程的實(shí)踐方法學(xué),以期在實(shí)踐中指導(dǎo)他們的工作,在設(shè)計(jì)實(shí)現(xiàn)軟件過(guò)程中發(fā)揮作用。它涉及到程序設(shè)計(jì)語(yǔ)言、數(shù)據(jù)庫(kù)、軟件開(kāi)發(fā)工具、系統(tǒng)平臺(tái)、標(biāo)準(zhǔn)、設(shè)計(jì)模式等方面。在現(xiàn)代社會(huì)中,軟件應(yīng)用于多個(gè)方面,典型的軟件比如有電子郵件、嵌入式系統(tǒng)、人機(jī)界面、辦公套件、操作系統(tǒng)、編譯器、數(shù)據(jù)庫(kù)、游戲等。同時(shí),各個(gè)行業(yè)幾乎都有計(jì)算機(jī)軟件的應(yīng)用,比如工業(yè)、農(nóng)業(yè)、銀行、航空、政府部門(mén)等。這些應(yīng)用促進(jìn)了經(jīng)濟(jì)和社會(huì)的發(fā)展,使得人們的工作更加高效,同時(shí)提高了生活質(zhì)量。

  軟件工程的畢業(yè)生在IT行業(yè)中常常扮演著實(shí)干家的角色,考驗(yàn)的是將各種想法到實(shí)際的轉(zhuǎn)化的能力。比如從美國(guó)的IT職業(yè)分布中明顯可以看出,中下層的工程師都是以軟件工程的本科生和研究生為主,所以想要學(xué)習(xí)軟件工程專(zhuān)業(yè)的學(xué)子們應(yīng)該有一個(gè)對(duì)未來(lái)職業(yè)前瞻性的定位,這樣有利于自己的職業(yè)生涯規(guī)劃。

  主要課程:外語(yǔ)、高等數(shù)學(xué)、線性代數(shù)、高等代數(shù)、電子技術(shù)基礎(chǔ)、離散數(shù)學(xué)、計(jì)算機(jī)引論(C語(yǔ)言)、數(shù)據(jù)結(jié)構(gòu)、C++程序設(shè)計(jì)、c#程序設(shè)計(jì)、JAVA程序設(shè)計(jì)、Delphi程序設(shè)計(jì)、匯編語(yǔ)言程序設(shè)計(jì)、算法設(shè)計(jì)與分析、計(jì)算機(jī)組成原理與體系結(jié)構(gòu)、數(shù)據(jù)庫(kù)系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、軟件工程、軟件測(cè)試技術(shù)、軟件需求與項(xiàng)目管理、軟件設(shè)計(jì)實(shí)例分析、CMM/ISO9000、Asp等。

  就業(yè)方向:本專(zhuān)業(yè)學(xué)生畢業(yè)后可以從事各級(jí)各類(lèi)企事業(yè)單位的辦公自動(dòng)化處理、計(jì)算機(jī)安裝與維護(hù)、網(wǎng)頁(yè)制作、計(jì)算機(jī)網(wǎng)絡(luò)和專(zhuān)業(yè)服務(wù)器的維護(hù)管理和開(kāi)發(fā)工作、動(dòng)態(tài)商務(wù)網(wǎng)站開(kāi)發(fā)與管理、軟件測(cè)試與開(kāi)發(fā)及計(jì)算機(jī)相關(guān)設(shè)備的商品貿(mào)易等方面的有關(guān)工作。

  推薦學(xué)府:北京大學(xué)、北京交通大學(xué)、重慶大學(xué)、大連理工大學(xué)、東南大學(xué)、山東大學(xué)、西安交通大學(xué)、中南大學(xué)、西安郵電大學(xué)等。

時(shí)代尖兵:信息工程

  專(zhuān)業(yè)信息工程專(zhuān)業(yè)是建立在超大規(guī)模集成電路技術(shù)和現(xiàn)代計(jì)算機(jī)技術(shù)基礎(chǔ)上,研究信息處理理論、技術(shù)和工程實(shí)現(xiàn)的專(zhuān)門(mén)學(xué)科。該專(zhuān)業(yè)以研究信息系統(tǒng)和控制系統(tǒng)的應(yīng)用技術(shù)為核心,在面向21世紀(jì)信息社會(huì)化的過(guò)程中具有十分重要的地位。信息工程專(zhuān)業(yè)對(duì)數(shù)學(xué)、物理、電路理論、信號(hào)理論、電子技術(shù)、計(jì)算機(jī)科學(xué)和技術(shù)等方面的知識(shí)有很高的要求,并緊跟當(dāng)今發(fā)展最迅速的信息與通信工程以及控制科學(xué)與工程學(xué)科領(lǐng)域的最新技術(shù),不斷更新教學(xué)內(nèi)容,形成風(fēng)格獨(dú)特的課程體系。因此說(shuō)信息工程是時(shí)代的尖兵一點(diǎn)都不過(guò)分。

  總體來(lái)說(shuō),計(jì)算機(jī)專(zhuān)業(yè)和軟件專(zhuān)業(yè)在過(guò)去IT行業(yè)的發(fā)展中已經(jīng)奠定了自己的基礎(chǔ)地位,而信息工程則決定了這個(gè)行業(yè)是否走在了時(shí)代最前端,決定了這一行業(yè)能成為先銳科技及先鋒科學(xué)。

  主要課程:電路與系統(tǒng)、信息論、編碼理論、微型計(jì)算機(jī)原理、軟件工程基礎(chǔ)、現(xiàn)代控制原理、通信系統(tǒng)原理、信息網(wǎng)絡(luò)基礎(chǔ)、數(shù)據(jù)采集、數(shù)字信號(hào)與信息處理等。主要實(shí)踐性教學(xué)環(huán)節(jié):包括計(jì)算機(jī)上機(jī)訓(xùn)練、課程設(shè)計(jì)、信息系統(tǒng)認(rèn)識(shí)實(shí)習(xí)、生產(chǎn)實(shí)習(xí)、畢業(yè)設(shè)計(jì)等,一般安排30周以上。主要專(zhuān)業(yè)實(shí)驗(yàn):至少完成本專(zhuān)業(yè)方向的一組實(shí)驗(yàn),例如:通信系統(tǒng)原理實(shí)驗(yàn)、信息網(wǎng)實(shí)驗(yàn)。

篇(7)

中圖分類(lèi)號(hào):TN911-34文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1004-373X(2010)16-0166-03

SD Card Reader Platform Based on Single Chip and Serial Port

LIU Run

(Physics Department, Qinghai Normal University, Xining 810008, China)

Abstract: the SD memory card is applied widely with modern electronics technology. Due to an interface can only be connected to the same kind of equipment in the traditional underlying hardware architecture, which is a waste of resources. A scheme of using AVR microcontroller and serial transfer through the USB interface to read SD card data, the bi-directional reading through a variety of microcontrollers and computer peripherals is achieved, the external devices are compatible by improving the read method of conventional file system, which improves the utilization of existing resources and portability, the storage information can be managed through the microcontroller and the computer. The experiment proves the success rate of a single reading can reach 99.8%, therefore, the stability and security of the data read is guaranteed.Keywords: serial port; SD card; MCU; USB interface

0 引 言

SD卡[1](secure digital memory card,安全數(shù)碼卡)是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機(jī)、個(gè)人數(shù)碼助理(PDA)和多媒體播放器等。SD卡由日本松下、東芝及美國(guó)SanDisk公司于1999年8月共同開(kāi)發(fā)研制。大小猶如一張郵票的SD記憶卡,重量只有2 g,但卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以及很好的安全性。

本文正是通過(guò)AVR單片機(jī)經(jīng)過(guò)軟硬結(jié)合的設(shè)計(jì)方案,來(lái)讀取SD卡上FAT32文件系統(tǒng)中的數(shù)據(jù),FAT32是微軟公司開(kāi)發(fā)的新一代的文件系統(tǒng),支持更大的存儲(chǔ)容量和長(zhǎng)達(dá)255個(gè)字符的文件名,也可以通過(guò)串口轉(zhuǎn)USB接口芯片通過(guò)計(jì)算機(jī)來(lái)訪問(wèn)存儲(chǔ)器中的數(shù)據(jù),從而實(shí)現(xiàn)多渠道的立體的訪問(wèn)方式,進(jìn)一步提升了資源的利用率。

1 文件系統(tǒng)

1.1 FAT文件系統(tǒng)簡(jiǎn)介

文件配置表(FAT)[2]是一種由微軟公司發(fā)明的并帶有部分專(zhuān)利的文件系統(tǒng),供MS-DOS使用,也是非NT內(nèi)核的微軟窗口使用的文件系統(tǒng)。FAT文件系統(tǒng)考慮當(dāng)時(shí)計(jì)算機(jī)效能有限,所以未被復(fù)雜化,因而被幾乎所有個(gè)人計(jì)算機(jī)的操作系統(tǒng)支持。這些特性使它成為理想的軟盤(pán)和記憶卡的文件系統(tǒng)。但FAT有一個(gè)嚴(yán)重的缺點(diǎn):當(dāng)文件被刪除并且在同一位置被寫(xiě)入新數(shù)據(jù),他們的片段通常是分散的,減慢了讀寫(xiě)速度。磁盤(pán)碎片重整是一種解決方法,但必須經(jīng)常重組來(lái)保持FAT文件系統(tǒng)的效率。

1.2 FAT文件系統(tǒng)升級(jí)版

FAT32實(shí)際上是文件分區(qū)表采取的一種形式,它是相對(duì)于FAT16而言的。它可以大大地節(jié)約磁盤(pán)空間。文件在磁盤(pán)上是以簇的方式存放的,簇里存放了┮桓霆文件就不能再存放另外的文件。

FAT32最大的優(yōu)點(diǎn)是可以支持的磁盤(pán)大小達(dá)到2 TB(2 048 GB),但是不能支持小于512 MB的分區(qū)。由于采用了更小的簇,FAT32文件系統(tǒng)可以更有效率地保存信息。FAT32可以更高效地使用空間。FAT32使用較小的簇(即,對(duì)于大小在8 GB以內(nèi)的驅(qū)動(dòng)器,使用4 KB的簇),這與大的FAT或FAT16驅(qū)動(dòng)器相比,可將磁盤(pán)空間的使用率提高10%~15%。

FAT32 更穩(wěn)定可靠。FAT32 可以重新定位根文件夾,而且它使用文件分配表的備份副本,而不是使用默認(rèn)副本。此外,FAT32驅(qū)動(dòng)器上的引導(dǎo)記錄也得到擴(kuò)展,包括了關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的備份副本。因此,與現(xiàn)有的 FAT16 驅(qū)動(dòng)器相比,FAT32 驅(qū)動(dòng)器不容易受單點(diǎn)故障的影響。

FAT32更靈活。FAT32驅(qū)動(dòng)器上的根文件夾是普通的簇鏈,因此它可以位于驅(qū)動(dòng)器上的任何位置。以前對(duì)根文件夾數(shù)量的限制不復(fù)存在。此外,可以禁用文件分配表鏡像,這樣就可以讓文件分配表的副本而不是讓第一個(gè)文件分配表處于活動(dòng)狀態(tài)。這些功能允許您動(dòng)態(tài)重調(diào) FAT32 分區(qū)的大小。

2 硬件設(shè)計(jì)

2.1 芯片概述

ATmega32[3]是基于增強(qiáng)的AVR RISC結(jié)構(gòu)的低功耗8 位CMOS微控制器。由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,ATmega32 的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。 ATmega32 AVR 內(nèi)核具有豐富的指令集和32 個(gè)通用工作寄存器。所有的寄存器都直接與算邏單元(ALU) 相連接,使得一條指令可以在一個(gè)時(shí)鐘周期內(nèi)同時(shí)訪問(wèn)2個(gè)獨(dú)立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的CISC 微控制器最高至10倍的數(shù)據(jù)吞吐率。

PL2303用于實(shí)現(xiàn)USB 和標(biāo)準(zhǔn)RS 232串行端口[4]之間的轉(zhuǎn)換,2個(gè)獨(dú)立的大型緩沖用于兩種總線的連接,大型數(shù)據(jù)緩沖器用于USB 的批量數(shù)據(jù)傳輸,自動(dòng)握手模式可用于串行通訊,因而可以達(dá)到遠(yuǎn)大于標(biāo)準(zhǔn)UART 控制器的波特率。PL2303 支持USB 電源管理和遠(yuǎn)程喚醒協(xié)議。本設(shè)計(jì)中PL2303芯片主要應(yīng)用在將主控單元的下載線與供電模塊合二為一,大大簡(jiǎn)化了系統(tǒng)的設(shè)計(jì)復(fù)雜度。

NOKIA 5110液晶顯示器,傳統(tǒng)的點(diǎn)陣式液晶顯示器,不內(nèi)置英文及漢字字庫(kù),因此NOKIA 5110液晶顯示的過(guò)程,需要單片機(jī)把從存儲(chǔ)器中讀取到的ASCII碼值轉(zhuǎn)換成對(duì)應(yīng)的英文及漢字點(diǎn)陣信息,然后通過(guò)串口把點(diǎn)陣信息傳輸?shù)揭壕э@示器上進(jìn)行顯示。

2.2 硬件設(shè)計(jì)

硬件單元包括: AVR[5]主控ATmega32單元模塊,SD卡接口模塊,液晶顯示接口模塊,串口轉(zhuǎn)USB接口。

2.2.1 主控電路設(shè)計(jì)

主控電路(如圖1所示)主要負(fù)責(zé)將從輸入接口中讀到的數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)的字模碼。

2.2.2 存儲(chǔ)系統(tǒng)模塊及下載接口設(shè)計(jì)

SD卡接口如圖2所示。

圖1 主控電路

圖2 SD卡接口電路

2.2.3 液晶顯示模塊設(shè)計(jì)

液晶顯示接口如圖3所示。

圖3 液晶顯示接口

2.2.4 USB轉(zhuǎn)換接口模塊設(shè)計(jì)

計(jì)算機(jī)端串行轉(zhuǎn)USB接口[5]的設(shè)計(jì)如圖4所示。

圖4 計(jì)算機(jī)端串行轉(zhuǎn)USB接口設(shè)計(jì)

3 軟件設(shè)計(jì)

系統(tǒng)軟件設(shè)計(jì)主要包括AVR單片機(jī)主控程序,中斷服務(wù)控制子程序,LCD[6]控制子程序,編碼轉(zhuǎn)化子程序等幾個(gè)模塊。單片機(jī)端程序運(yùn)行流程如圖5所示,計(jì)算機(jī)端運(yùn)行程序流程如圖6所示。

4 總結(jié)及展望

由于本設(shè)計(jì)中采用的都是一些通用器件,是對(duì)通用器件的一次嘗試性擴(kuò)展應(yīng)用,通過(guò)LCD設(shè)計(jì)的人機(jī)接口實(shí)現(xiàn)設(shè)備的友好操作,能夠通過(guò)單片機(jī)和計(jì)算機(jī)進(jìn)行雙向立體式的讀寫(xiě),能夠?qū)崿F(xiàn)在線的實(shí)時(shí)的FAT32[7]文件系統(tǒng)資源管理,因此本系統(tǒng)具有一定社會(huì)價(jià)值和應(yīng)用價(jià)值。

圖5 單片機(jī)端程序運(yùn)行流程圖

圖6 計(jì)算機(jī)端運(yùn)行程序流程圖

參考文獻(xiàn)

[1]SD Memory Card Specifications.

[2]陳春,徐建華,陳柏潤(rùn).計(jì)算機(jī)GBK漢字輸入法速查字典[M].北京:科學(xué)出版社,2008.

[3]劉海成.AVR單片機(jī)原理及測(cè)控工程應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.

[4][美] 安格斯生,精英科技.串行端口大全[M].Jan Axelson,譯.北京:中國(guó)電力出版社,2001.

[5]張軍,宋濤.AVR單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)例精粹[M].北京:電子工業(yè)出版社,2009.

[6]孫俊喜.LCD驅(qū)動(dòng)電路、驅(qū)動(dòng)程序設(shè)計(jì)及典型應(yīng)用[M].北京:人民郵電出版社,2009.

[7]關(guān)碩,關(guān)濟(jì)實(shí).FAT16文件系統(tǒng)在單片機(jī)存儲(chǔ)系統(tǒng)上的實(shí)現(xiàn)[J].科技信息,2008(3):24-26.

[8]薛園園,趙建領(lǐng).USB應(yīng)用開(kāi)發(fā)實(shí)例詳解華清遠(yuǎn)見(jiàn)嵌入式培訓(xùn)中心[M].北京:人民郵電出版社,2009.