期刊大全 雜志訂閱 SCI期刊 投稿指導(dǎo) 期刊服務(wù) 文秘服務(wù) 出版社 登錄/注冊 購物車(0)

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

c語言程序設(shè)計實例精品(七篇)

時間:2023-03-01 16:29:08

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

c語言程序設(shè)計實例

篇(1)

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

1.引言

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

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

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

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

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

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

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

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

4.實驗指導(dǎo)書建設(shè)

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

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

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

6.案例設(shè)計實例

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

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

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

根據(jù)問題得出流程圖和程序為:

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

7.結(jié)語

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

參考文獻(xiàn):

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

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

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

[4]但志平,汪東,王安慧,任小燕.地方高校C語言教學(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 語言;匯編語言;參數(shù)傳遞

Key words: C language;assembly language;parameter transferring

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

1 緒論

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

2 名字聲明約定

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

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

3 轉(zhuǎn)返機制

為了說明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)編譯后,匯編程序如下(無關(guān)內(nèi)容省去)

/*x1.asm*/

_TEXT segment byte public 'CODE'

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

push si ;保護si

mov ax,3

push ax ;實參3壓棧

mov ax,2

push ax ;實參2壓棧

mov ax,1

push ax ;實參1壓棧

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

add sp,6 ;丟棄棧中三個實參,確保實參不變

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

mov ax,si ;機械性翻譯,效率低,人工匯編編程,兩個mov可不要

add ax,10

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

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

ret ;main子程序返回

_main endp

_TEXT ends

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

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

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

參數(shù)傳遞調(diào)用規(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ù)可能是值,稱為值傳遞,可能是地址,稱為地址傳遞。

4.1 值傳遞:實參的值壓棧

例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過程,棧中只壓IP,無CS

public add0

.code

add0 proc

push bp

mov bp,sp

mov ax,[bp+4] ;取第一個實參X

add ax,[bp+6] ; 取第二個實參Y,出口AX

pop bp

ret ;彈出返回地址,返回

add0 endp

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

4.2 傳地址:實參的地址壓棧

例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過程,棧中只壓IP,無CS

public add0

.code

add0 proc

push bp

mov bp,sp

mov bx,[bp+4] ;取第一個實參X的地址送bx

mov ax,[bx]

mov bx,[bp+6] ; 取第二個實參Y的地址送bx

add ax,[bx] ;出口AX

pop bp

ret ;彈出返回地址,返回

add0 endp

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

4.3 通過外部變量 外部變量是公共變量,所有模塊均可自由的使用,無需傳遞參數(shù)。但應(yīng)當(dāng)盡可能避免使用全局變量,否則不可避免因為某個全局變量的定義或使用而發(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過程,棧中只壓IP,無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 程序運行結(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過程,棧中只壓IP,無CS

extern subc:near

.data

x1 dw 50

y1 dw 10

public suba

.code

suba proc

mov ax,offset y1

push ax ;壓第二個實參Y1,傳地址

mov ax,x1

push ax ;壓第一個實參X1,傳值

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

add sp,4 ;平衡堆棧

ret ;彈出返回地址,返回

suba endp

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

參考文獻(xiàn):

[1]譚浩強.C語言程序設(shè)計[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ù)組;運算

Key words: pointer;address;array;operation

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

1 緒論

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

2 指針變量的概念

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

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

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

如:把“書”送給“張偉”就是直接訪問。

間接訪問──通過另一變量訪問該變量的值。

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

2.3 指針變量

指針:即地址,存放地址的變量稱為指針變量。

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

取地址運算的格式: &變量

例如

main()

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

P=&x;

X=10;

*p+=20;

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

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

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

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

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,一個數(shù)組,兩個名字p和a,訪問元素時用a[i]或p[i]。

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

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

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

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

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

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

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

①從二維數(shù)組角度看,數(shù)組名a代表數(shù)組的起始地址, 是一個以行為單位進(jìn)行控制的行指針,由一維數(shù)組構(gòu)成的一維數(shù)組就是二維數(shù)組,a+i是行指針值,指向二維數(shù)組的第i行。*(a+i)是列指針值,指向第i行第0列。*(*(a+i)):數(shù)組元素a[i][0]的值。用a作指針訪問數(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ù)類型 (*指針變量)[n];

4.3 二維數(shù)組元素的訪問 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) 是元素地址。

①按名存取:a[i][j]或p[i][j]

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

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

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

動態(tài)數(shù)組:運行階段,根據(jù)實際需要動態(tài)確定數(shù)組的大小。

在C語言中,可利用內(nèi)存的申請和釋放庫函數(shù),以及指向數(shù)組的指針變量可當(dāng)數(shù)組名使用的特點,來實現(xiàn)動態(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 ); /*申請動態(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ù)申請的內(nèi)存塊*/

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

5.1 庫函數(shù)malloc()

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

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

5.2 運算符sizeof

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

5.3 庫函數(shù)free()

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

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

6 結(jié)束語

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

參考文獻(xiàn):

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

篇(4)

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

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

0 引言

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

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

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

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

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

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

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

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

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

3 結(jié)論

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

參考文獻(xiàn):

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

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

篇(5)

關(guān)鍵詞:單片機;實例化;模塊化;實驗平臺;教學(xué)改革

中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B

1引言

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

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

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

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

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

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

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

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

3通過實例化教學(xué)加強單片機課程的實踐環(huán)節(jié)

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

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

4單片機模塊化實驗系統(tǒng)的特點

4.1實驗平臺的主要特點

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

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

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

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

(5) 實驗平臺上CPU可選擇多種晶振頻率,方便不同種類實驗的需求。

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

4.2實驗平臺的功能

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

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

5實驗平臺的硬件設(shè)計

實驗平臺的硬件結(jié)構(gòu)框圖如圖1所示。

5.1實驗平臺CPU的選擇

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

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

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

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

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

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

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

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

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

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

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

6配套實驗的設(shè)計及教學(xué)改革

6.1驗證性實驗

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

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

6.2綜合性實驗

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

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

6.3設(shè)計性實驗

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

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

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

7結(jié)語

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

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

參考文獻(xiàn):

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

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

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

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

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

篇(6)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

時代尖兵:信息工程

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

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

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

篇(7)

中圖分類號:TN911-34文獻(xiàn)標(biāo)識碼:A

文章編號: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ù)碼相機、個人數(shù)碼助理(PDA)和多媒體播放器等。SD卡由日本松下、東芝及美國SanDisk公司于1999年8月共同開發(fā)研制。大小猶如一張郵票的SD記憶卡,重量只有2 g,但卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動靈活性以及很好的安全性。

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

1 文件系統(tǒng)

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

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

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

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

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

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

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

2 硬件設(shè)計

2.1 芯片概述

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

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

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

2.2 硬件設(shè)計

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

2.2.1 主控電路設(shè)計

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

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

SD卡接口如圖2所示。

圖1 主控電路

圖2 SD卡接口電路

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

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

圖3 液晶顯示接口

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

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

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

3 軟件設(shè)計

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

4 總結(jié)及展望

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

圖5 單片機端程序運行流程圖

圖6 計算機端運行程序流程圖

參考文獻(xiàn)

[1]SD Memory Card Specifications.

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

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

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

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

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

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

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