第一篇:單片機(jī)數(shù)碼管顯示課程設(shè)計(jì)
單片機(jī)數(shù)碼管顯示課程設(shè)計(jì)
目錄引言...............設(shè)計(jì)任務(wù)和要求.............1
2.1 設(shè)計(jì)目的............1
2.2 設(shè)計(jì)意義............1總原理圖及主要模塊的流程圖......1
3.1 總原理圖及元器件清單..............1
3.2 主要流程圖..........1性能測試與分析.............35 結(jié)論與心得..........4致謝...........4
參考文獻(xiàn).............4
單片機(jī)數(shù)碼管顯示課程設(shè)計(jì)引言
從上世紀(jì)70年代第一批單片機(jī)問世,短短二三十年時(shí)間,單片機(jī)技術(shù)已經(jīng)成為計(jì)算機(jī)技術(shù)的一個(gè)重要分支,廣泛運(yùn)用到工業(yè)控制、儀器、儀表、消費(fèi)產(chǎn)品,汽車、辦公自動(dòng)化和通信等領(lǐng)域。因此,單片機(jī)技術(shù)已經(jīng)成為電子、測控、自動(dòng)化、通信等許多工科專業(yè)學(xué)生的必備技能。
我用AT89C51芯片來設(shè)計(jì)一個(gè)簡單的數(shù)碼管顯示。此設(shè)計(jì)給出了源代碼,通過仿真測試,其性能指標(biāo)達(dá)到了設(shè)計(jì)要求。
關(guān)鍵詞:單片機(jī),AT89C51,數(shù)碼管設(shè)計(jì)任務(wù)和要求
2.1 設(shè)計(jì)目的1.學(xué)習(xí)基本理論在實(shí)踐中綜合運(yùn)用的初步經(jīng)驗(yàn),掌握模擬電路設(shè)計(jì)的基本方法、設(shè)計(jì)步驟,培養(yǎng)綜合設(shè)計(jì)與調(diào)試能力。
2.了解AT89C51這個(gè)芯片的使用和性能指標(biāo)測試方法。
3.培養(yǎng)實(shí)踐技能,提高分析和解決實(shí)際問題的能力。
2.2 設(shè)計(jì)意義
為了更好地熟悉和掌握單片機(jī)的基本功能和編程,掌握數(shù)碼管動(dòng)態(tài)掃描顯示原理及實(shí)現(xiàn)方法。自我動(dòng)態(tài)掃描顯示電路驅(qū)動(dòng)程序的編寫方法。通過課程設(shè)計(jì),達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,提高學(xué)生對(duì)微機(jī)硬件結(jié)構(gòu)的軟件設(shè)計(jì)方法的理解,使學(xué)生能夠根據(jù)實(shí)際應(yīng)用,初步實(shí)現(xiàn)硬件及軟件的設(shè)計(jì),對(duì)硬件開發(fā)有更深層的認(rèn)識(shí),為今后打軟硬件開發(fā),打下堅(jiān)實(shí)的基礎(chǔ)??傇韴D及及主要模塊的流程圖
3.1 總原理圖及元器件清單
(1)我用Proteus 7 professional來畫出我設(shè)計(jì)的總原理圖,如圖3-1。
如圖3-1
此電路圖就用到AT89C51這個(gè)芯片,和一個(gè)數(shù)碼管。
3.2 主要流程圖(四號(hào)宋體加粗)
1.主程序的流程圖
圖3.2-1主流程圖
2.子程序的流程圖
圖3.2-2子流程圖性能測試與分析
主程序和子程序都存放在AT89C51單片機(jī)中。主程序的功能是:顯示數(shù)字。子程序的功能有:延時(shí)。程序代碼:
ORG 0000H;初始化
LJMP START;轉(zhuǎn)入主程序
ORG 0010H;初始化
START:
CLR P2.7;P2.7←00H
MOVR0,#00H;R0←00H
MOV R2,#10;R2←10
MAIN:
MOV DPTR,#TAB;DPTR←TAB
MOV A,R0;A←(RO)
MOVC A,@A+DPTR;A←((A)+(DPTR))
MOV P0,A;P0←(A)
LCALL DELAY;調(diào)用延時(shí)程序
INC R0;RO←(R0)+1
DJNZR2,MAIN;判斷
JMP START;循環(huán)
DELAY:;延時(shí)程序
MOV R3,#11
D1: MOV R4,#100
D2: MOV R5,#100
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
TAB:
DB 00101000B;0
DB 11101011B;1
DB 00110010B;2
DB 10100010B;3
DB 11100001B;4
DB 10100100B;5
DB 00100100B;6
DB 11101010B;7
DB 00100000B;8
DB 10100000B;9
END
我用Proteus 7 professional 軟件來測試我設(shè)計(jì)的電路圖。當(dāng)運(yùn)行時(shí),數(shù)碼管顯示0。如圖4-1。
圖4-1
當(dāng)221ms后,數(shù)碼管顯示1。如圖
4-2.圖4-2
我的程序是一個(gè)循環(huán)的,一直到顯示9,之后又重新開始顯示0。在此不一一列出來。
為了能在實(shí)際在到應(yīng)用,我用開發(fā)板來驗(yàn)證我所設(shè)計(jì)的電路圖。其結(jié)果如下:
圖4-3顯示1
圖4-4顯示8
從仿真的結(jié)果可以看出,我的設(shè)計(jì)是滿足我設(shè)計(jì)的要求的。結(jié)論與心得
通過單片機(jī)課程設(shè)計(jì),我不僅加深了對(duì)單片機(jī)理論的理解,將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新,是要我們學(xué)會(huì)將理論很好地聯(lián)系實(shí)際,并不斷地去開動(dòng)自己的大腦,從為人類造福的意愿出發(fā),做自己力所能及的,別人卻沒想到的事。使之不斷地戰(zhàn)勝別人,超越前人。同時(shí),更重要的是,我在這一設(shè)計(jì)過程中,學(xué)會(huì)了堅(jiān)持不懈,不輕易言棄。設(shè)計(jì)過程,也好比是我們?nèi)祟惓砷L的歷程,常有一些不如意,也許這就是在對(duì)我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了,勝利的鐘聲也就一定會(huì)為我們而敲響。
這個(gè)設(shè)計(jì)過程中,我遇到過許多次失敗的考驗(yàn),就比如,我在軟件上仿真軟件上能實(shí)現(xiàn)其功能,但是把它寫進(jìn)開發(fā)板就無法運(yùn)行,我不停地找原因。最后我找到了答案,這樣我明白,做設(shè)計(jì)不但是軟件可以運(yùn)行,用在硬件上一樣是那么重要的。我做的這個(gè)設(shè)計(jì)主要是用AT89C51這個(gè)芯片來實(shí)現(xiàn),這個(gè)芯片具有很多優(yōu)點(diǎn),程序簡單易讀,結(jié)構(gòu)清楚,最重要的是成本低。很適合我們學(xué)生用來學(xué)生。在做這個(gè)設(shè)計(jì)的過程中,我也了解到了自己的不足,在日后的學(xué)習(xí)中,我還需加倍努力學(xué)習(xí)。
參考文獻(xiàn))
[1]梁炳東.單片機(jī)原理與應(yīng)用。北京:人民郵電出版社,2009
[2]
[3]http://wenku.baidu.com/album/view/702db2c7aa00b52acfc7cae7
致謝(小三號(hào) 宋體 加粗)
在此次課程設(shè)計(jì)中,我遇到不懂的問題,老師和同學(xué)都幫我,讓我把問題順利地得到解決,最后完成此次課程設(shè)計(jì)報(bào)告。從中我學(xué)到了很多東西,在此,謝謝我的老師和同學(xué),感謝你們在我遇到難題的時(shí)候幫我解答。
第二篇:單片機(jī)數(shù)碼管顯示實(shí)驗(yàn)
實(shí)驗(yàn)一
數(shù)碼管實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
1.了解數(shù)碼管的顯示原理;2.掌握J(rèn)XARM9-2440 中數(shù)碼管顯示編程方法
二、實(shí)驗(yàn)儀器
JXARM9-2440教學(xué)實(shí)驗(yàn)箱、ADT1000仿真器和ADT IDE集成開發(fā)環(huán)境、串口連接線、PC機(jī)。
三、實(shí)驗(yàn)原理
7段LED由7個(gè)發(fā)光二極管按“日”字形排列,所有發(fā)光二極管的陽極連在一起稱共陽極接法,陰極連在一起稱為共陰極接法。
LED顯示器的接口一般有靜態(tài)顯示與動(dòng)態(tài)顯示接口兩種方式。
本實(shí)驗(yàn)中采用的是動(dòng)態(tài)顯示接口,其中數(shù)碼管掃描控制地址為0x20007000,位0-位5每位分別對(duì)應(yīng)一個(gè)數(shù)碼管,將其中某位清0 來選擇相應(yīng)的數(shù)碼管,地址0x20006000 為數(shù)碼管的數(shù)據(jù)寄存器。數(shù)碼管采用共陽方式,向該地址寫一個(gè)數(shù)據(jù)就可以控制LED 的顯示,數(shù)據(jù)中的1對(duì)應(yīng)的不亮,0對(duì)應(yīng)的亮,數(shù)碼管各位從高到低排列為dp-g-f-e-d-c-b-a,例如當(dāng)數(shù)據(jù)寄存器是11111111時(shí)則不亮,當(dāng)是01111111時(shí)則顯示8,其原理圖如圖所示。
四、實(shí)驗(yàn)內(nèi)容
1、編程實(shí)現(xiàn):六個(gè)數(shù)碼管同時(shí)正向顯示0-F,然后反向顯示F-0。
2、編程實(shí)現(xiàn):在六個(gè)數(shù)碼管上依次顯示與自己姓名有關(guān)的內(nèi)容,可分辨出輪流顯示。
3、編程實(shí)現(xiàn):在六個(gè)數(shù)碼管上依次顯示與自己姓名有關(guān)的內(nèi)容,分辨不出輪流顯示。
4*、編程實(shí)現(xiàn):在每個(gè)數(shù)碼管上遞增顯示0—9。5*、自行開發(fā)。
五、實(shí)驗(yàn)程序
1, /****************************************************************************/ /*文件名稱: LEDSEG7.C
*/ /*實(shí)驗(yàn)現(xiàn)象: 數(shù)碼管依次顯示出0、1,2、??
9、a、b、C、d、E、F
*/ /****************************************************************************/ #define U8 unsigned char unsigned char seg7table[16] = {
/* 0
7*/
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,/* 8
A
B
C
D
E
F*/
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e, };void Delay(int time);/****************************************************************************/ /* 函數(shù)說明: JXARM9-2410 7段構(gòu)共陽數(shù)碼管測試
*/ /* 功能描述: 依次在7段數(shù)碼管上顯示0123456789ABCDEF
*/ /* 返回代碼: 無
*/ /* 參數(shù)說明: 無
*/ /****************************************************************************/ void Test_Seg7(void){
int i;
*((U8*)0x20007000)=0x00;/*6個(gè)數(shù)碼管都亮*/ for(;;){
/*數(shù)碼管從0到F依次將字符顯示出來*/
for(i=0;i<0x10;i++)
{
*((U8*)0x20006000)=seg7table[i];
Delay(10000);
}
/*數(shù)碼管從F到0依次將字符顯示出來*/
for(i=0x0f;i>0x00;i--)
{
*((U8*)0x20006000)=seg7table[i];
Delay(10000);
} }
// TODO } /****************************************************************************/
/* Function name : 循環(huán)延時(shí)子程序
*/ /* Description : 循環(huán) 'time' 次
*/ /* Return type :void
*/ /* Argument
: 循環(huán)延時(shí)計(jì)數(shù)器
*/ /****************************************************************************/ void Delay(int time){
int i;int delayLoopCount=10000;
for(;time>0;time--);
for(i=0;i 2, /****************************************************************************/ /*文件名稱: LEDSEG7.C */ /*實(shí)驗(yàn)現(xiàn)象: 數(shù)碼管依次顯示ZHAngg,并能看出輪流顯示 */ /****************************************************************************/ #define U8 unsigned char unsigned char seg7table[16] = { /* Z H A n g g 7*/ 0xa4,0x89,0x88,0xc8,0x90,0x90,0x82,0xf8,/* 8 A B C D E F*/ 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,/* H I N*/ 0x89,0xcf,0x48 };void Delay(int time);/****************************************************************************/ /* 函數(shù)說明: JXARM9-2410 7段構(gòu)共陽數(shù)碼管測試 */ /* 功能描述: 在六個(gè)數(shù)碼管上分別顯示字母,與姓名有關(guān) */ /* 返回代碼: 無 */ /* 參數(shù)說明: 無 */ /****************************************************************************/ void Test_Seg7(void){ int i; *((U8*)0x20007000)=0x00; for(;;) { *((U8*)0x20007000)=0x1f; *((U8*)0x20006000)=seg7table[0]; Delay(10000); *((U8*)0x20007000)=0x2f; *((U8*)0x20006000)=seg7table[1]; Delay(10000); *((U8*)0x20007000)=0x37; *((U8*)0x20006000)=seg7table[2]; Delay(10000); *((U8*)0x20007000)=0x3b; *((U8*)0x20006000)=seg7table[3]; Delay(10000); *((U8*)0x20007000)=0x3d; *((U8*)0x20006000)=seg7table[4]; Delay(10000); *((U8*)0x20007000)=0x3e; *((U8*)0x20006000)=seg7table[5]; Delay(10000);} // TODO } /***************************************************************************/ /* Function name : 循環(huán)延時(shí)子程序 */ /* Description : 循環(huán) 'time' 次 */ /* Return type :void */ /* Argument : 循環(huán)延時(shí)計(jì)數(shù)器 */ /****************************************************************************/ void Delay(int time){ int i;int delayLoopCount=10000; for(;time>0;time--); for(i=0;i 3, /****************************************************************************/ /*文件名稱: LEDSEG7.C */ /*實(shí)驗(yàn)現(xiàn)象: 數(shù)碼管依次顯示出ZHAngg,并看不出輪流顯示 */ /****************************************************************************/ #define U8 unsigned char unsigned char seg7table[16] = { /* Z H A n g g 7*/ 0xa4,0x89,0x88,0xc8,0x90,0x90,0x82,0xf8,/* 8 A B C D E F*/ 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,/* H I N*/ 0x89,0xcf,0x48 };void Delay(int time);/****************************************************************************/ /* 函數(shù)說明: JXARM9-2410 7段構(gòu)共陽數(shù)碼管測試 */ /* 功能描述: 在六個(gè)數(shù)碼管上分別顯示字母,與姓名有關(guān) */ /* 返回代碼: 無 */ /* 參數(shù)說明: 無 */ /****************************************************************************/ void Test_Seg7(void){ int i; *((U8*)0x20007000)=0x00; for(;;) { *((U8*)0x20007000)=0x1f; *((U8*)0x20006000)=seg7table[0]; Delay(10000); *((U8*)0x20007000)=0x2f; *((U8*)0x20006000)=seg7table[1]; Delay(10000); *((U8*)0x20007000)=0x37; *((U8*)0x20006000)=seg7table[2]; Delay(10000); *((U8*)0x20007000)=0x3b; *((U8*)0x20006000)=seg7table[3]; Delay(10000); *((U8*)0x20007000)=0x3d; *((U8*)0x20006000)=seg7table[4]; Delay(10000); *((U8*)0x20007000)=0x3e; *((U8*)0x20006000)=seg7table[5]; Delay(1);} // TODO } /***************************************************************************/ /* Function name : 循環(huán)延時(shí)子程序 */ /* Description : 循環(huán) 'time' 次 */ /* Return type :void */ /* Argument : 循環(huán)延時(shí)計(jì)數(shù)器 */ /****************************************************************************/ void Delay(int time){ int i;int delayLoopCount=10000; for(;time>0;time--); for(i=0;i 4, /****************************************************************************/ /*文件名稱: LEDSEG7.C */ /*實(shí)驗(yàn)現(xiàn)象: 數(shù)碼管依次顯示出0、1,2、?? 9、a、b、C、d、E、F */ /****************************************************************************/ #define U8 unsigned char unsigned char seg7table[16] = { /* 0 7*/ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,/* 8 A B C D E F*/ 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e, };void Delay(int time);/****************************************************************************/ /* 函數(shù)說明: JXARM9-2410 7段構(gòu)共陽數(shù)碼管測試 */ /* 功能描述: 依次在7段數(shù)碼管各自遞增顯示0—9 */ /* 返回代碼: 無 */ /* 參數(shù)說明: 無 */ /****************************************************************************/ void Test_Seg7(void){ int i;for(;;){ for(i=0;i<=0x09;i++) { *((U8*)0x20007000)=0x1f; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } for(i=0;i<=0x09;i++) { *((U8*)0x20007000)=0x2f; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } for(i=0;i<=0x09;i++) { *((U8*)0x20007000)=0x37; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } for(i=0;i<=0x09;i++) { *((U8*)0x20007000)=0x3b; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } for(i=0;i<=0x09;i++) { *((U8*)0x20007000)=0x3d; *((U8*)0x20006000)=seg7table[i]; Delay(10000); } } // TODO } /****************************************************************************/ /* Function name : 循環(huán)延時(shí)子程序 */ /* Description : 循環(huán) 'time' 次 */ /* Return type :void */ /* Argument : 循環(huán)延時(shí)計(jì)數(shù)器 */ /****************************************************************************/ void Delay(int time){ int i;int delayLoopCount=10000; for(;time>0;time--); for(i=0;i 六、實(shí)驗(yàn)結(jié)果與分析 實(shí)驗(yàn)一結(jié)果:六個(gè)數(shù)碼管同時(shí)顯示相同的符號(hào),從0-F再由F-0之間的循環(huán)變換。 分析:在數(shù)碼管掃描控制地址處選中六個(gè)數(shù)碼管,使其同時(shí)亮,在給其數(shù)碼管的數(shù)據(jù)寄存器存入不同符號(hào)對(duì)應(yīng)的數(shù)值,加上相應(yīng)的延遲,就 可以是輪流變換的循環(huán)的符號(hào)變換。 實(shí)驗(yàn)二結(jié)果:第一個(gè)數(shù)碼管顯示Z后,第二個(gè)顯示H,接著第三個(gè)顯示A,接著第四個(gè)顯示n,接著第五個(gè)顯示g,接著第六個(gè)顯示g,接著第一個(gè)再顯示Z…..如此循環(huán)。 分析:設(shè)置控制地址使其單獨(dú)并且循環(huán)顯示,每個(gè)數(shù)碼管的數(shù)據(jù)寄存器送入不同的符號(hào)的數(shù)值,并設(shè)置較大的延遲時(shí)間即可產(chǎn)生該現(xiàn)象。 實(shí)驗(yàn)三結(jié)果:六個(gè)數(shù)碼管一起顯示“ZHAngg”。 分析:原理同實(shí)驗(yàn)二,只是將延遲時(shí)間改小到人眼無法分辨的地步即使一起顯示。 實(shí)驗(yàn)四結(jié)果:第一個(gè)數(shù)碼管顯示0—9之后,第二個(gè)接著顯示0—9,接著第三個(gè),第四個(gè)….分析:設(shè)置循環(huán)使六個(gè)數(shù)碼管循環(huán)單獨(dú)顯示,在每個(gè)數(shù)碼管顯示中再加入循環(huán),使其遞增顯示0—9,設(shè)置較大的延遲,是我們可以看清實(shí)驗(yàn)現(xiàn)象。 七、實(shí)驗(yàn)總結(jié)與心得體會(huì) 本次試驗(yàn)需要了解數(shù)碼管的基本工作原理,基于C語言設(shè)計(jì)編程完成實(shí)驗(yàn),實(shí)驗(yàn)的關(guān)鍵在于把握實(shí)現(xiàn)各種現(xiàn)象的本質(zhì)上的差異,在程序上作出修改。通過本次試驗(yàn)對(duì)于實(shí)驗(yàn)的嚴(yán)謹(jǐn)性有了進(jìn)一步的體驗(yàn),稍有不小心實(shí)驗(yàn)結(jié)果就適得其反,以后要更加用心,更加認(rèn)真的做實(shí)驗(yàn)。 一、前言 1.1設(shè)計(jì)制作產(chǎn)品的背景、目的及設(shè)計(jì)要求 本項(xiàng)目為16x16點(diǎn)陣漢字顯示“新年快樂”的設(shè)計(jì),首先將本次實(shí)訓(xùn)的電路圖在仿真軟件上繪制完成,將點(diǎn)陣文件存入ROM,形成漢字編碼,再進(jìn)行相關(guān)轉(zhuǎn)換,以新編碼提取相應(yīng)的點(diǎn)陣漢字顯示。將相應(yīng)編碼代入運(yùn)行程序,進(jìn)行調(diào)試和準(zhǔn)備。 1.2分工情況、工作計(jì)劃及本人所承擔(dān)工作 1.周一 1~4 進(jìn)行分組,選題 和軟件的安裝 2.周二 1~4 進(jìn)行電路的設(shè)計(jì)及程序編寫 3.周三 1~4 進(jìn)行電路的設(shè)計(jì)及程序編寫 4.周四 1~4 進(jìn)行說明書的填寫 5.周五 1~4 答辯 本人在本次課程設(shè)計(jì)中承擔(dān)電路圖的繪制及相關(guān)程序的編寫與調(diào)試。 1.3本課題的設(shè)計(jì)重點(diǎn)及難點(diǎn) 本次課程設(shè)計(jì)重點(diǎn)在于單片機(jī)控制系統(tǒng)程序采用單片機(jī)匯編語言進(jìn)行編輯,通過編程控制各顯示點(diǎn)對(duì)應(yīng)LED陽極和陰極端的電平,就可以有效的控制各顯示點(diǎn)的亮滅。而其中的難點(diǎn)就在于運(yùn)行程序的編寫及相關(guān)漢字的點(diǎn)陣數(shù)據(jù),這種顯示字符的點(diǎn)陣數(shù)據(jù)可以自行編寫,也可以標(biāo)準(zhǔn)字庫中提取。 在進(jìn)行課題設(shè)計(jì)時(shí)需要熟練掌握相關(guān)電路軟件及編程軟件的使用,編寫程序時(shí)需掌握一定的C語言邏輯關(guān)系的運(yùn)用。在電路圖的繪制時(shí)需要清楚的了解各個(gè)電路設(shè)備的功能及用途。 二、實(shí)訓(xùn)內(nèi)容 2.1實(shí)訓(xùn)原理 本設(shè)計(jì)應(yīng)用的掃描方法為水平方向(X方向)掃描。 每一個(gè)字由16行16列的點(diǎn)陣形成顯示,即每個(gè)字均由256個(gè)點(diǎn)陣來表示,我們可以把每一個(gè)點(diǎn)理解為一個(gè)像素。一般我們使用的16×16的點(diǎn)陣宋體字庫,即所謂的16×16,是每一個(gè)漢字在縱橫各16點(diǎn)的區(qū)域內(nèi)顯示的。漢字庫從該位置起的32字節(jié)信息記錄了該字的字模信息。事實(shí)上這個(gè)漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內(nèi)的任何圖形。 上半部分第一列完成之后,繼續(xù)掃描下半部分的第一列,為了接線的方便,我們?nèi)栽O(shè)計(jì)成由上往下的掃描方式,即從A8向A15方向掃描,按照這個(gè)方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個(gè)8位,可以得出漢字。 2.2硬件設(shè)計(jì) 2.3軟件設(shè)計(jì) #include for(j=q;j<32+q;j++) { P1=sm[t]; P0=seg[j]; j++; P2=seg[j]; delay(50);t--; if(t==0) t=16;} q=q+32; if(q==128) q=0;} } 三.結(jié)論 3.1 實(shí)訓(xùn)過程中遇到的問題及解決措施 在本次實(shí)驗(yàn)中,我組在制作的16x16點(diǎn)陣顯示漢字“新年快樂”的課程設(shè)計(jì)中,首先在使用單片機(jī)仿真軟件找尋相關(guān)設(shè)備時(shí)沒有找到16x16的點(diǎn)陣設(shè)備,繼而用四個(gè)8x8的點(diǎn)陣排列組合予以替代。 依據(jù)相關(guān)教材及指導(dǎo)教師的參考和建議,我組對(duì)于本次設(shè)計(jì)的電路圖采用了通用模板設(shè)計(jì)。 此次課程設(shè)計(jì)的運(yùn)行程序是我組在設(shè)計(jì)中的最大難點(diǎn),后經(jīng)多方查資料及參考詢問,我組找到了相應(yīng)漢字在點(diǎn)陣中的排序規(guī)律,順利編寫出代碼。 3.2 今后的學(xué)習(xí)展望 經(jīng)過這次的單片機(jī)課程設(shè)計(jì),從產(chǎn)生設(shè)計(jì)想法到實(shí)際操作,到最終的設(shè)計(jì)完成,中間遇到的困難及困難的解決,讓我更進(jìn)一步了解了單片機(jī),讓我不再僅僅局限于書本上。 本次的設(shè)計(jì)經(jīng)驗(yàn)對(duì)于我們?nèi)蘸蟮膶W(xué)習(xí)工作有非常重要的作用,在遇到困難時(shí)可以不僅僅從書本上找解決方案,還可以自己親自動(dòng)手實(shí)踐來驗(yàn)證相關(guān)問題及找到解決方法。 這次難得的課程設(shè)計(jì)過程中我鍛煉了自己的思考能力和動(dòng)手能力。通過題目選擇和設(shè)計(jì)電路的過程中,加強(qiáng)了我思考問題的完整性和實(shí)際生活聯(lián)系的可行性。在方案設(shè)計(jì)選擇和芯片的選擇上,培養(yǎng)了我們綜合應(yīng)用單片機(jī)的能力,對(duì)單片機(jī)的各個(gè)管腳的功能也有了進(jìn)一步的認(rèn)識(shí)。還鍛煉我們個(gè)人的查閱技術(shù)資料的能力,動(dòng)手能力,發(fā)現(xiàn)問題,解決問題的能力。并且我們熟練掌握了有關(guān)器件的性能及測試方法。 四、心得體會(huì) 本次的設(shè)計(jì)經(jīng)驗(yàn)對(duì)于我們?nèi)蘸蟮膶W(xué)習(xí)工作有非常重要的作用,在遇到困難時(shí)可以不僅僅從書本上找解決方案,還可以自己親自動(dòng)手實(shí)踐來驗(yàn)證相關(guān)問題及找到解決方法。 單片機(jī)這門課是一科非常重視動(dòng)手實(shí)踐的科目,不能總是看書,但是也不能完全不看書。單片機(jī)并不象傳統(tǒng)的數(shù)字電路或模擬電路那樣比較直觀,原因是除了“硬件”之外還存在一個(gè)“軟件”的因素。正是這個(gè)“軟件”的原因使得許多初學(xué)者怎么也弄不懂單片機(jī)的工作過程,怎么也不明白為什么將幾個(gè)數(shù)送來送去就能讓數(shù)碼管顯示一串字符或控制一個(gè)電機(jī)的變速。對(duì)初學(xué)單片機(jī)的人來說,需要從書中大概了解一下單片機(jī)的各個(gè)功能寄存器,如果看的多了反而容易搞亂,現(xiàn)在市場上大多數(shù)講單片機(jī)的書一開始就講解較復(fù)雜的內(nèi)存、地址、存儲(chǔ)器什么的,更讓初學(xué)者感到不知所云、難以入門。如果按教科書式的學(xué)法,上來就是一大堆指令、名詞,學(xué)了半天還搞不清這些指令起什么作用,能夠產(chǎn)生什么實(shí)際效果,那么也許用不了幾天就會(huì)覺得枯燥乏味而半途而廢。簡單的說,使用單片機(jī)實(shí)際上就是用我們自己編寫的軟件去控制單片機(jī)的各個(gè)功能寄存器。再簡單些,就是控制單片機(jī)哪些引腳的電平什么時(shí)候輸出高電平,什么時(shí)候輸出低電平。由這些高低變化的電平來控制外圍電路,實(shí)現(xiàn)我們需要的各個(gè)功能。 經(jīng)過這次的單片機(jī)課程設(shè)計(jì),從產(chǎn)生設(shè)計(jì)想法到實(shí)際操作,到最終的設(shè)計(jì)完成,中間遇到的困難及困難的解決,讓我更進(jìn)一步了解了單片機(jī),讓我不再僅僅局限于書本上。 《單片機(jī)原理與應(yīng)用》 課程設(shè)計(jì)報(bào)告 題 目:LCD數(shù)字式溫度濕度測量計(jì) 專 業(yè):自動(dòng)化 班 級(jí):A1332 學(xué) 號(hào):10 姓 名:曾志勇 指導(dǎo)老師:查兵 2016-06-08 目 錄 1.設(shè)計(jì)題目、要求及分工..................................1 1.1.設(shè)計(jì)要求.........................................1 1.2.分工.............................................1 2.系統(tǒng)設(shè)計(jì)方案論證與選擇................................1 3.系統(tǒng)硬件電路設(shè)計(jì)......................................1 3.1.單片機(jī)的選擇......................................1 3.2.溫度傳感器電路的設(shè)計(jì)..............................2 3.3.LCD1602顯示設(shè)計(jì)..................................3 4.系統(tǒng)軟件設(shè)計(jì)..........................................4 4.1.主程序...........................................4 4.2.讀出溫度子程序....................................6 5.系統(tǒng)仿真調(diào)試結(jié)果記錄及分析...........................11 6.總結(jié).................................................13 參考文獻(xiàn)................................................14 設(shè)計(jì)題目、要求及分工 1.1.設(shè)計(jì)要求 (1)熟悉掌握單片機(jī)的中斷,定時(shí)器及各并行口的應(yīng)用;(2)熟悉掌握單片機(jī)溫度濕度的測量方法;(3)利用溫度傳感器及單片機(jī)完成對(duì)溫度的檢測;(4)掌握將檢測的溫度信號(hào)轉(zhuǎn)換為數(shù)碼管顯示的數(shù)字信號(hào); (5)設(shè)計(jì)一個(gè)簡單數(shù)字溫度計(jì),能夠測量通常環(huán)境下的溫度,能夠?qū)崿F(xiàn)零下溫度的測量,能夠測量小數(shù),精度為0.01度。 1.2.分工 經(jīng)過我和隊(duì)友的商討,為了能最大發(fā)揮各自的長處。我主要負(fù)責(zé)程序的編寫與單片機(jī)的調(diào)試。他主要負(fù)責(zé)一些相關(guān)資料文獻(xiàn)的查找與課程設(shè)計(jì)報(bào)告。 1.系統(tǒng)設(shè)計(jì)方案論證與選擇 在日常生活和生產(chǎn)中,我們經(jīng)常要測量環(huán)境的溫度濕度,傳統(tǒng)的測量方式采用水銀溫度計(jì)和干濕球濕度計(jì)查算法,存在著誤差大,操作使用不便等問題,采用工業(yè)級(jí)測量儀表價(jià)格昂貴。采用AT89C51和溫度傳感器等構(gòu)成的LCD數(shù)字式溫度濕度測量計(jì)精度高且價(jià)格便宜。 由于本設(shè)計(jì)是測溫電路,可以使用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行A/D轉(zhuǎn)換,將數(shù)據(jù)傳入80C51單片機(jī)中,單片機(jī)處理后,通過LED顯示出當(dāng)前實(shí)測溫度。 2.系統(tǒng)硬件電路設(shè)計(jì) 2.1.單片機(jī)的選擇 單片80C51具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)。 本次設(shè)計(jì)需要注意的幾個(gè)端口: P0口(39—32):是一組8位漏極開路行雙向I/O口,也既地址/數(shù)據(jù)總線復(fù)用口??勺鳛檩敵隹谑褂脮r(shí),每位可吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯電路,對(duì)端口寫“1”可作為高阻抗輸入輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時(shí),PO口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求接上拉電阻。P3口(10—17):是一組帶有內(nèi)部上拉電阻的8位雙向I/O口,P1的輸入緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸出端口。作輸出端口時(shí),被外部拉低的P3口將用上拉電阻輸出電流。 2.2.溫度傳感器電路的設(shè)計(jì) DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。 64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖2.3所示。頭2個(gè)字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義:低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率S18B20溫度轉(zhuǎn)換的時(shí)間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。溫度傳感器18B20匯編程序,采用器件默認(rèn)的12位轉(zhuǎn)化,最大轉(zhuǎn)化時(shí)間750微秒,可以將檢測到的溫度直接顯示到80C51的兩個(gè)數(shù)碼管上。 高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。 當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單 片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB式表示。 當(dāng)符號(hào)位S=0時(shí),表示測得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。 DS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令做出響應(yīng)。因此,可用多只DS18B20同時(shí)測量溫度并進(jìn)行報(bào)警搜索。 在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)ROM的前56位來計(jì)算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。 另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。 圖 2-1 溫度傳感器電路 2.3.LCD1602顯示設(shè)計(jì) 圖 2-2 LCD顯示電路圖 LCD1602顯示流程: 圖3-3 流程圖 3.系統(tǒng)軟件設(shè)計(jì) 3.1.主程序 主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測量溫度值。溫度測量每1s進(jìn)行一次。主程序流程圖如圖4.1所示: #include //初始化LCD1602 //寫地址 80表示初始地址 LcdWriteCom(0x88);LcdWriteData('C');while(1){ LcdDisplay(Ds18b20ReadTemp());Delay1ms(1000);//1s鐘刷一次 // } } /* 函數(shù)名 : LcdDisplay()* 函數(shù)功能 : LCD顯示讀取到溫度/ void LcdDisplay(int temp)//lcd顯示 { unsigned char datas[] = {0, 0, 0, 0, 0};//定義數(shù)組 float tp;if(temp< 0) //當(dāng)溫度值為負(fù)數(shù) { LcdWriteCom(0x80); //寫地址 80表示初始地址 LcdWriteData('-');//顯示負(fù) temp=temp-1; temp=~temp; tp=temp; temp=tp*0.0625*100+0.5;} else { LcdWriteCom(0x80); LcdWriteData('+'); tp=temp; temp=tp*0.0625*100+0.5; } datas[0] = temp / 10000;datas[1] = temp % 10000 / 1000;datas[2] = temp % 1000 / 100;datas[3] = temp % 100 / 10;datas[4] = temp % 10;LcdWriteCom(0x82); //寫地址 80表示初始地址 LcdWriteData('0'+datas[0]);//百位 LcdWriteCom(0x83); //寫地址 80表示初始地址 LcdWriteData('0'+datas[1]);//十位 LcdWriteCom(0x84); //寫地址 80表示初始地址 LcdWriteData('0'+datas[2]);//個(gè)位 LcdWriteCom(0x85); //寫地址 80表示初始地址 //顯示 ‘.’ //寫地址 80表示初始地址 LcdWriteData('.');LcdWriteCom(0x86); LcdWriteData('0'+datas[3]);//顯示小數(shù)點(diǎn) LcdWriteCom(0x87); //寫地址 80表示初始地址 } LcdWriteData('0'+datas[4]);//顯示小數(shù)點(diǎn) 圖 3-1主程序流程圖 3.2.讀出溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時(shí)必須進(jìn)行CRC 校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不能進(jìn)行溫度數(shù)據(jù)的改寫。讀出溫度子程序流程圖如下圖所示: #include“temp.h” void Delay1ms(uint y){ uint x; } uchar Ds18b20Init(){ uchar i;DSPORT = 0;i = 70; //將總線拉低480us~960us for(;y>0;y--){ for(x=110;x>0;x--);} while(i--);//延時(shí)642us DSPORT = 1; //然后拉高總線,如果DS18B20做出反應(yīng)會(huì)將在15us~60us后總線拉低 } void Ds18b20WriteByte(uchar dat)i = 0;while(DSPORT)//等待DS18B20拉低總線 { } return 1;//初始化成功 i++;if(i>5)//等待>5MS { } Delay1ms(1);return 0;//初始化失敗 { uint i, j;for(j=0;j<8;j++) { DSPORT = 0;i++;DSPORT = dat & 0x01;//然后寫入一個(gè)數(shù)據(jù),從最低位開始 i=6;while(i--);//延時(shí)68us,持續(xù)時(shí)間最少60us DSPORT = 1; //然后釋放總線,至少1us給總線恢復(fù)時(shí)間才能接 //每寫入一位數(shù)據(jù)之前先把總線拉低1us 著寫入第二個(gè)數(shù)值 } uchar Ds18b20ReadByte(){ uchar byte, bi;uint i, j;for(j=8;j>0;j--){ DSPORT = 0;//先將總線拉低1us i++;DSPORT = 1;//然后釋放總線 i++;i++;//延時(shí)6us等待數(shù)據(jù)穩(wěn)定 bi = DSPORT;//讀取數(shù)據(jù),從最低位開始讀取 /*將byte左移一位,然后與上右移7位后的bi,注意移動(dòng)之后移掉 } dat >>= 1;那位補(bǔ)0。*/ byte =(byte >> 1)|(bi << 7); } i = 4;//讀取完之后等待48us再接著讀取下一個(gè)數(shù) while(i--); } return byte;void Ds18b20ChangTemp(){ Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc); //跳過ROM操作命令 Ds18b20WriteByte(0x44);//溫度轉(zhuǎn)換命令 //等待轉(zhuǎn)換成功,而如果你是一直刷著的話,就不// Delay1ms(100);用這個(gè)延時(shí)了 } void Ds18b20ReadTempCom(){ Ds18b20Init(); } int Ds18b20ReadTemp(){ int temp = 0; 命令 tml = Ds18b20ReadByte();tmh = Ds18b20ReadByte();temp = tmh;temp <<= 8;Delay1ms(1);Ds18b20WriteByte(0xcc);//跳過ROM操作命令 Ds18b20WriteByte(0xbe);//發(fā)送讀取溫度命令 uchar tmh, tml;Ds18b20ChangTemp();Ds18b20ReadTempCom(); //先寫入轉(zhuǎn)換命令 //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度 //讀取溫度值共16位,先讀低字節(jié) //再讀高字節(jié) } temp |= tml;return temp;讀出溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時(shí)須進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。得出溫度子程序流程圖如下圖所示。 圖 3-2 溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令。當(dāng)采用12位分辨率時(shí),轉(zhuǎn)換時(shí)間約為750ms。在本程序設(shè)計(jì)中,采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如下圖所示。 圖 3-2 4.系統(tǒng)仿真調(diào)試結(jié)果記錄及分析 硬件調(diào)試比較簡單,首先檢查電感的焊接是否正確,然后可用萬用表測試或通電檢測。軟件調(diào)試可以先編寫顯示程序并進(jìn)行硬件的正確性檢驗(yàn),然后分別進(jìn)行主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序和現(xiàn)實(shí)數(shù)據(jù)刷新子程序等的編程及調(diào)試 由于DS18B20與單片機(jī)采用串行數(shù)據(jù)傳送,因此,對(duì)DS18B20進(jìn)行讀/寫編程時(shí)必須嚴(yán)格地保證讀/寫時(shí)序;否則將無法讀取測量結(jié)果。 電路Isis仿真測試 燒寫程序至單片機(jī): 液晶顯示室溫為+28.06度 用手觸摸DS18B20,發(fā)現(xiàn)溫度上升為+32.75度,證明溫度傳感正常工作。 5.總結(jié) 這次課程設(shè)計(jì),主要是以STC89C51單片機(jī)為核心的,對(duì)溫度的檢測與顯示進(jìn)行了簡單的設(shè)計(jì)與闡述。因沒有濕度傳感器模塊,所以未進(jìn)行濕度檢測。本次課程設(shè)計(jì)可以說是軟硬結(jié)合,又以硬件為主。當(dāng)今科技發(fā)展迅速,單片機(jī)開發(fā)有著光明的前景。由于單片機(jī)經(jīng)濟(jì)實(shí)用、開發(fā)簡便等特點(diǎn)依然在工業(yè)控制、家電等領(lǐng)域占據(jù)了廣泛的市場。所以我選擇這樣的設(shè)計(jì)課題,并且能通過此次設(shè)計(jì)來提高自己軟件編制和硬件電路設(shè)計(jì)的能力。在我完成這次課程設(shè)計(jì)的過程中,當(dāng)看到自己將專業(yè)知識(shí)用于解決實(shí)際的問題時(shí),那份成就感和喜悅感是難以形容的。在這次實(shí)際的編程以及調(diào)試程序過程中,我發(fā)現(xiàn)自己學(xué)很多課本以外的東西。光靠自己在書本上所學(xué)過的這點(diǎn)知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,真正地認(rèn)識(shí)到了工作就是學(xué)習(xí)的道理。尤其是對(duì)于編程來說,需要硬件的功底,也需要軟件的能力。當(dāng)程序有一點(diǎn)點(diǎn)錯(cuò)誤時(shí),將使整個(gè)程序無效,需要自己靜下心來發(fā)現(xiàn)錯(cuò)誤,改正錯(cuò)誤,一次又一次得進(jìn)行調(diào)試,鍛煉了沉著踏實(shí)的心態(tài)。 通過這次對(duì)數(shù)字溫度計(jì)的設(shè)計(jì)與制作,讓我們了解了設(shè)計(jì)電路的程序,也讓我們了解了關(guān)于數(shù)字溫度計(jì)的原理與設(shè)計(jì)理念,要設(shè)計(jì)一個(gè)電路總要先用仿真,仿真成功之后才實(shí)際接線的。 但是最后的成品卻不一定與仿真時(shí)完全一樣,因?yàn)?,在?shí)際接線中有著各種各樣的條件制約著。并且,在仿真中無法成功的電路接法,在實(shí)際中因?yàn)樾酒旧淼奶匦远軌虺晒?。所以,在設(shè)計(jì)時(shí)應(yīng)考慮兩者的差異,從中找出最適合的設(shè)計(jì)方法。 通過這次學(xué)習(xí),讓我們對(duì)各種電路都有了大概的了解,所以說,坐而言不如立而行,對(duì)于這些電路還是應(yīng)該自己動(dòng)手實(shí)際操作才會(huì)有深刻理解。從這次的課程設(shè)計(jì)中,我真正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)應(yīng)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常寫和讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。這次課程設(shè)計(jì)對(duì)我來說是一次比較全面的、富有創(chuàng)造性和探索性的鍛煉,令我深有感觸,對(duì)于我今后的學(xué)習(xí)、工作和生活都將是受益非淺。 參考文獻(xiàn) (1)江世明.單片機(jī)原理與應(yīng)用.上海交通大學(xué)出版社.2013;(2)朱清慧.電子線路設(shè)計(jì)、制版與仿真.清華大學(xué)出版社.2011.6; (3)黃同成.程序設(shè)計(jì)基礎(chǔ)與教程(C語言).湖南人民出版社.2011.12; (4)王東峰等.單片機(jī)C語言應(yīng)用100例[M].北京電子工業(yè)出版社,2009; (5)陳海宴.51單片機(jī)原理及應(yīng)用[M].北京航空航天大學(xué)出版社.2010; (6)胡漢才.單片機(jī)原理及接口技術(shù)[M].北京清華大學(xué)出版社.1996; (7)高稚允,高岳.光電檢測技術(shù)[M].北京國防工業(yè)出版社.1983; 仲愷農(nóng)業(yè)工程學(xué)院實(shí)驗(yàn)報(bào)告紙 信息學(xué)院(院、系)專業(yè)班組單片機(jī)原理及接口技術(shù)課實(shí)驗(yàn)四單片機(jī)鍵盤輸入以及數(shù)碼管顯示編程 一、實(shí)驗(yàn)?zāi)康?、掌握單片機(jī)鍵盤以及數(shù)碼管顯示的工作原理; 2、掌握單片機(jī)鍵盤以及數(shù)碼管顯示的編程方法。 二、實(shí)驗(yàn)內(nèi)容 1、學(xué)習(xí)單片機(jī)鍵盤檢測、消抖以及譯碼等; 2、學(xué)習(xí)單片機(jī)數(shù)碼管靜態(tài)以及動(dòng)態(tài)的顯示方式; 3、利用單片機(jī)鍵盤以及數(shù)碼管編寫程序驅(qū)動(dòng)開發(fā)板上的蜂鳴器以及數(shù)碼管按一定規(guī)律工作。 三、實(shí)驗(yàn)設(shè)備 1、STC單片機(jī)開發(fā)板; 2、PC機(jī)以及串口線。 四、實(shí)驗(yàn)步驟 參考實(shí)驗(yàn)指導(dǎo)書。 五、實(shí)驗(yàn)總結(jié)第三篇:單片機(jī)16點(diǎn)陣漢字顯示課程設(shè)計(jì)
第四篇:單片機(jī)課程設(shè)計(jì)報(bào)告LCD顯示溫度
第五篇:實(shí)驗(yàn)四 單片機(jī)鍵盤輸入以及數(shù)碼管顯示編程