第一篇:單片機(jī)數(shù)字鐘實(shí)訓(xùn)報(bào)告
單片機(jī)數(shù)字鐘實(shí)訓(xùn)報(bào)告
學(xué)院:電子工程學(xué)院
專業(yè):機(jī)電一體化
班級(jí): 姓名: 手機(jī)號(hào):
一、任務(wù)及要求
用51單片機(jī)設(shè)計(jì)時(shí)、分、秒計(jì)時(shí)器,具體要求如下。
1、具有時(shí)、分、秒計(jì)時(shí)功能和8位數(shù)碼管顯示功能,顯示格式為:“時(shí)-分-秒”;
2、用Proteus設(shè)計(jì)仿真電路進(jìn)行結(jié)果仿真; 3、4人組成設(shè)計(jì)小組完成,小組成員有明確分工,1人負(fù)責(zé)總體方案設(shè)計(jì)及報(bào)告撰寫,2人負(fù)責(zé)功能模塊函數(shù)設(shè)計(jì),1人負(fù)責(zé)仿真電路設(shè)計(jì)及調(diào)試。
4、完成程序設(shè)計(jì)、仿真電路設(shè)計(jì)、結(jié)果仿真。
5、本實(shí)驗(yàn)要求設(shè)計(jì)一個(gè)數(shù)字計(jì)時(shí)器,可以完成0分00秒~23小時(shí)59分59秒的計(jì)時(shí)功能,并在控制電路的作用下有開機(jī)清零。
6、指標(biāo)要求: ①.顯示時(shí)、分、秒。② 采用24小時(shí)制,小時(shí)計(jì)數(shù)器按“23翻00”規(guī)律計(jì)數(shù)。.③ 為了保證計(jì)時(shí)準(zhǔn)確、穩(wěn)定,由單片機(jī)的定時(shí)器來計(jì)時(shí)。
7、設(shè)計(jì)要求:
①
畫出電路原理圖(或仿真電路圖);
②
元器件及參數(shù)選擇; ③
電路仿真與調(diào)試; ④
連接實(shí)物圖,并調(diào)試; ⑤
寫出報(bào)告,并做總結(jié);
二、設(shè)計(jì)方案
1、總體設(shè)計(jì)方案(李文負(fù)責(zé)完成)
(說明總體設(shè)計(jì)方案構(gòu)思、程序模塊構(gòu)成、仿真電路構(gòu)成等內(nèi)容,不少于300字))。
構(gòu)思:實(shí)現(xiàn)時(shí)鐘的設(shè)計(jì),如果采用軟件延時(shí)的方法來實(shí)現(xiàn)時(shí)鐘,太耗cpu了,因此采用51單片機(jī)的內(nèi)部硬件資源來實(shí)現(xiàn)時(shí)鐘,因此采用定時(shí)器來定時(shí),由于單片機(jī)的最大定時(shí)的時(shí)間為65.536ms;但是我們要定時(shí)1s,為了方便,我們則選用定時(shí)器0工作方式1且定時(shí)50ms,然后在中斷20次則有了1s,有了1s就好辦了,分,時(shí)就好辦了,只要在1秒的基礎(chǔ)上加就可以實(shí)現(xiàn)時(shí)鐘了,有了時(shí),分,秒就要顯示了,由于時(shí),分,秒都是兩位,因此要把個(gè)位與十位分離,然后在分別在數(shù)碼管上顯示,這樣就實(shí)現(xiàn)時(shí)鐘的設(shè)計(jì)。
程序模塊:
1、主函數(shù):(調(diào)用初始化函數(shù),調(diào)用顯示函數(shù))
2、顯示函數(shù):(延時(shí)函數(shù),數(shù)碼管顯示代碼)
3、中斷服務(wù)函數(shù):(時(shí),分,秒的實(shí)現(xiàn))
仿真電路構(gòu)成:數(shù)字鐘的結(jié)構(gòu)組成:
電1)晶體振蕩器電路
2)復(fù)位電路
3)數(shù)碼管使用非門驅(qū)動(dòng)及數(shù)碼管
具體:52單片機(jī)的最小系統(tǒng)(52單片機(jī),晶振電路(12MHz晶振,和30pF的無極性容),復(fù)位電路(10k電阻,10uf極性電容,開關(guān))),外加八位一體的數(shù)碼管,數(shù)碼管驅(qū)動(dòng)電路;
2、顯示模塊程序流程圖
3、中斷服務(wù)函數(shù)模塊程序流程圖
4、主函數(shù)模塊的設(shè)計(jì)
5、仿真電路圖
三、程序代碼:
/* 功能:用共陰的八位一體的數(shù)碼管顯示時(shí)間“小時(shí)-分鐘-秒”
位碼接P2口;段碼接P0口;使用定時(shí)器0定時(shí)1s,*/ #include
#define uchar unsigned char //宏定義 #define uint unsigned int // uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共陰七段編碼
uchar sec,min,hour,count;// 定義變量 void delay(uchar x)//延時(shí)1ms的函數(shù)
{
uchar z ,y;
for(y=x;y>0;y--)
for(z=124;z>0;z--);} void init(void)//初始化函數(shù) {
TMOD=0X01;//定時(shí)器0工作在方式1
TH0=0X3C;//裝初值
TL0=0XB0;
EA=1;//開總中斷
ET0=1;//開定時(shí)器0中斷
TR0=1;//啟動(dòng)定時(shí)器0
sec=0;//秒設(shè)初值
min=0;//分設(shè)初值
hour=0;//時(shí)設(shè)初值
count=0;//計(jì)數(shù)設(shè)初值
P0=0xff;//
P2=0xff;//
} void display()//顯示函數(shù)
{
uchar sec1,sec2,min1,min2,hour1,hour2;//定義變量
sec1= sec/10;
//秒的十位
sec2= sec%10;
//秒的個(gè)位
min1= min/10;//分的十位
min2= min%10;//分的個(gè)位
hour1= hour/10;//時(shí)的十位
hour2= hour%10;//時(shí)的個(gè)位
P2= 0x80;
//秒個(gè)位的位碼
P0= table[sec2];//秒個(gè)位的段碼
delay(5);
P2= 0x40;
//秒十位的位碼
P0= table[sec1];//秒十位的段碼
delay(5);
P2= 0x20;
//“-”的位碼
P0= 0x40;
//“-”的段碼
delay(5);
P2= 0x10;
//分十位的位碼
P0= table[min1];//分十位的段碼
delay(5);
P2= 0x08;
//分個(gè)位的位碼
P0= table[min2];//分個(gè)位的段碼
delay(5);
P2= 0x04;
//“-”的位碼
P0= 0x40;
//“-”的段碼
delay(5);
P2= 0x02;
//時(shí)個(gè)位的位碼
P0= table[hour2];//時(shí)個(gè)位的段碼
delay(5);
P2= 0x01;
//時(shí)的十位的段碼
P0= table[hour1];//時(shí)的十位的段碼
delay(5);
} void main(){
init();
//初始化函數(shù)
while(1)
{
display();//時(shí)間顯示函數(shù)
} } void time()interrupt 1 //中斷服務(wù)函數(shù) {
TH0=0X3C;
//重裝初值
TL0=0XB0;
if(count==20)//定時(shí)一秒
{
count=0;
//計(jì)數(shù)清零
if(sec==59)
//秒計(jì)時(shí)到60秒
{
sec=0;
//秒清零
if(min==59)//分計(jì)時(shí)到60秒
{
min=0;//分清零
if(hour==23)//小時(shí)計(jì)數(shù)到24
{
hour=0;//小時(shí)清零
}
else hour++;//小時(shí)加一
}
else min++;
//分加一
}
else sec++;//秒加一
}
count++;
//計(jì)數(shù)加一 }
五、設(shè)計(jì)總結(jié)
單片機(jī)作為我們主要的專業(yè)課程之一,我覺得單片機(jī)課程設(shè)計(jì)很有必要,而且很有意義。在做的過程中能夠發(fā)現(xiàn)很多的問題,只有自己親身去做了就會(huì)遇到你在書上所沒有的,并且你要一個(gè)又一個(gè)的解決,這個(gè)有點(diǎn)難,要找到自己的錯(cuò)誤在哪里,這還真的難,有時(shí)候自己的錯(cuò)誤自己很難的看出來,我就一個(gè)main寫錯(cuò)了,我找了半天還沒找問題在哪里,表面看是看不出的,因?yàn)槲抑皇莂與i對(duì)調(diào)了一下,害的我搞了半天才查出來,這個(gè)無形的,編譯是不會(huì)出錯(cuò),只是一個(gè)警告,但是下載單片機(jī)里就是不出現(xiàn)結(jié)果,改了之后就ok了,在寫程序的時(shí)候大小寫特別要注意的,還有程序的結(jié)構(gòu)清楚明了,最后還是完成任務(wù)。
在學(xué)習(xí)的過程中帶著問題去學(xué)我發(fā)現(xiàn)效率很高,這是我做這次課程設(shè)計(jì)的一大收獲。另外,要做好一個(gè)課程設(shè)計(jì),就必須做到:在設(shè)計(jì)程序之前,對(duì)所用單片機(jī)的內(nèi)部結(jié)構(gòu)有一個(gè)系統(tǒng)的了解,知道該單片機(jī)內(nèi)有哪些資源;要有一個(gè)清晰的思路和一個(gè)完整的的軟件流程圖;在設(shè)計(jì)程序時(shí),不能妄想一次就將整個(gè)程序設(shè)計(jì)好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計(jì)的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,一個(gè)程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,在我們遇到問題時(shí),我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題自己能解決了。發(fā)現(xiàn)、提出、分析、解決問題都會(huì)受益于我在以后的學(xué)習(xí)、工作和生活中。常有一些不如意,但畢竟這是第一次做,難免會(huì)遇到各種各樣的問題。在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處。
通過這次設(shè)計(jì),我懂得了學(xué)習(xí)的重要性,了解到理論知識(shí)與實(shí)踐相結(jié)合的重要意義,學(xué)會(huì)了堅(jiān)持、耐心和努力。
第二篇:單片機(jī)實(shí)訓(xùn)報(bào)告范文
四川電子機(jī)械職業(yè)技術(shù)學(xué)院
單片機(jī)原理及應(yīng)用
實(shí) 訓(xùn)報(bào)告1
班級(jí):應(yīng)電14.2班 姓名:劉華利 學(xué)號(hào):140302058 指導(dǎo)教師:向兵
四川電子機(jī)械職業(yè)技術(shù)學(xué)院
摘要:
《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)項(xiàng)目化教程》這本書根據(jù)教育部新的教學(xué)改革要求和企業(yè)崗位技能需求,以高技能應(yīng)用型人才專業(yè)能力培養(yǎng)為目標(biāo),結(jié)合作者多年的教學(xué)經(jīng)驗(yàn)與課程改革成果進(jìn)行編寫。全書通過6個(gè)典型項(xiàng)目任務(wù),著重介紹單片機(jī)基本原理及應(yīng)用系統(tǒng)的設(shè)計(jì)方法與技巧,包括流水燈控制系統(tǒng)設(shè)計(jì)、簡易數(shù)字時(shí)鐘設(shè)計(jì)、數(shù)字電壓表設(shè)計(jì)、低頻信號(hào)發(fā)生器設(shè)計(jì)、數(shù)據(jù)存儲(chǔ)及回放系統(tǒng)設(shè)計(jì)和窗簾智能控制系統(tǒng)設(shè)計(jì)等。本書采用“理實(shí)一體、項(xiàng)目化教學(xué)”模式進(jìn)行內(nèi)容編排,將單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)的相關(guān)知識(shí)點(diǎn)融入項(xiàng)目中進(jìn)行講解,易教易學(xué),效果良好。
目錄
摘要········································ 2 目錄········································ 2 實(shí)訓(xùn)名稱···································· 3 實(shí)訓(xùn)地點(diǎn)···································· 3 實(shí)訓(xùn)時(shí)間···································· 3 實(shí)訓(xùn)目的···································· 3 實(shí)訓(xùn)項(xiàng)目···································· 3 項(xiàng)目1·······································3 項(xiàng)目2·······································4 項(xiàng)目3·······································5 項(xiàng)目4·······································6 實(shí)訓(xùn)總結(jié)····································· 7
四川電子機(jī)械職業(yè)技術(shù)學(xué)院
實(shí)訓(xùn)名稱:單片機(jī)原理及應(yīng)用 實(shí)訓(xùn)地點(diǎn):行政樓523 實(shí)訓(xùn)時(shí)間:2016.6.27—6.30 實(shí)訓(xùn)目的:1、2、3、4、5、6、7、掌握結(jié)構(gòu)化程序設(shè)計(jì)的基本方法,基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法。
掌握C的基本概念和基礎(chǔ)知識(shí)。
通過訓(xùn)練能夠讀懂較為復(fù)雜的C語言源程序并具備基本C語言程序設(shè)計(jì)的能力。
熟練掌握各種常用類的定義繼承文件的應(yīng)用,為更好的理解面向?qū)ο蟠蛳赂玫幕A(chǔ)。
掌握面向?qū)ο蟮幕驹?,提高學(xué)生綜合程序設(shè)計(jì)的能力。
培養(yǎng)自己獨(dú)立解決問題,找資料的能力。同學(xué)之間相互幫助、相互交流、相互合作的團(tuán)隊(duì)精神。
通過實(shí)訓(xùn)檢查自己學(xué)習(xí)上的不足,達(dá)到熟練掌握C語言的基本知識(shí)和技能。
實(shí)訓(xùn)項(xiàng)目: 項(xiàng)目1 點(diǎn)亮一個(gè)LED,每隔一定時(shí)間循環(huán)熄滅、點(diǎn)亮…
設(shè)計(jì)思路:端口送高電平,led熄滅,延時(shí)1s,端口送低電平,led點(diǎn)亮,延時(shí)1s,就這樣一直循環(huán)。
程序
#include
L2 = 1;
while(Ms--)
DelayMs(1000);
{
L2 = 0;
for(i = 0;i < 114;i+
DelayMs(1000);+);} } }
四川電子機(jī)械職業(yè)技術(shù)學(xué)院
原理圖
項(xiàng)目2 點(diǎn)亮一個(gè)LED,讓它每隔一定時(shí)間循環(huán)左移(課使用delay函數(shù)進(jìn)行延時(shí))
設(shè)計(jì)思路:在項(xiàng)目1的的基礎(chǔ)上,用dalay函數(shù)進(jìn)行延時(shí),用<<來表示左移,添加一個(gè)左移的函數(shù)。通俗一點(diǎn)的講的話,就如天天天同一些人排隊(duì)領(lǐng)東西,領(lǐng)完了返回隊(duì)位繼續(xù)排(當(dāng)然一只是這幾個(gè)人排)。
程序
#include } while(1){ for(i=0;i<7;i++){ delay(100); LED=(LED<<1)|0x01;P3=LED;} } 四川電子機(jī)械職業(yè)技術(shù)學(xué)院 原理圖 項(xiàng)目3 將任務(wù)二中delay延時(shí)改用定時(shí)器延時(shí),且延時(shí)一秒 設(shè)計(jì)思路:在項(xiàng)目2的的基礎(chǔ)上,用定時(shí)器來進(jìn)行延時(shí),首先設(shè)置定時(shí)器工作方式 也就是TMOD,在設(shè)置TH0/1,TL0/1的初值,也就是定時(shí)時(shí)間的設(shè)置,然后設(shè)置中斷允許,并開中斷。用中斷來控制。 程序 #include { TH0=(65536-50000)/256;TL0=(65536-50000)%256;j++;if(j==5){ j=0; P1=~(0x01< if(++i==8)i=0; } } 四川電子機(jī)械職業(yè)技術(shù)學(xué)院 原理圖 項(xiàng)目4 四位數(shù)碼管并排顯示,從左到右依次為分、秒十位、秒各位、0.1秒,相當(dāng)于移動(dòng)可計(jì)時(shí)9分59.9秒,使用一個(gè)按鍵,當(dāng)按鍵第一次按下,啟動(dòng)秒表,第二次按下,停止,第三次按下,清零。(數(shù)碼管可選共陰極、共陽極,至于對(duì)應(yīng)數(shù)字的段選可參考教材) 設(shè)計(jì)思路:用delay函數(shù)來進(jìn)行延時(shí),用內(nèi)部中斷來控制T1,用外部中斷來實(shí)現(xiàn)計(jì)數(shù)、暫停、清零這三個(gè)功能。 程序 #include uintx,y; for(x=100;x>0;x--) for(y=z;y>0;y--);} void dihplay(){ P1=0xfd; 四川電子機(jī)械職業(yè)技術(shù)學(xué)院 P0=Tab[xiao%10]; delay(1); } void display(){ P1=0xfb;P0=Tab[miao/10];delay(1); P1=0xfe;P0=Tab[miao%10];dp=0;delay(1);} void dimplay(){ P1=0xf7;P0=Tab[fen%10];dp=0;delay(1);} void main(){ EA = 1;EX0 = 1;IT0 = 1; ET0=1;TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=0;xiao=0;miao=0;fen=0; while(1) { display();delay(1);dimplay();delay(1);dihplay();delay(1); } } void timer0()interrupt 1 { xiao++; if(xiao==10) { xiao=0;miao++; if(miao==59) { miao=0; fen++; if(fen==10) { fen=0; } } } } void ex0_int0()interrupt 0 { swnum++;if(swnum == 1){ TR0= 1;} if(swnum == 2){ TR0 = 0;} if(swnum == 3){ xiao = 0; miao = 0; fen = 0; swnum=0;} } 四川電子機(jī)械職業(yè)技術(shù)學(xué)院 原理圖 實(shí)訓(xùn)總結(jié): 通過今次單片機(jī)實(shí)訓(xùn),使我對(duì)單片機(jī)的認(rèn)識(shí)有了更深刻的理解。系統(tǒng)以51單片機(jī)為核心部件,利用C語言編程,通過對(duì)led燈控制到用數(shù)碼管實(shí)現(xiàn)秒表功能、中斷控制功能,能實(shí)現(xiàn)本設(shè)計(jì)題目的基本要求和發(fā)揮部分。由于時(shí)間有限和本身知識(shí)水平的限制,本系統(tǒng)還存在一些不夠完善的地方,要作為實(shí)際應(yīng)用還有一些具體細(xì)節(jié)問題需要解決。 踉踉蹌蹌地忙碌了一周,我的程序終于編譯成功。當(dāng)看著自己的程序,自己成天相伴的系統(tǒng)能夠健康的運(yùn)行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最終都會(huì)化為甜美的甘泉。 但在這次實(shí)訓(xùn)中同時(shí)使我對(duì)C語言有了更深的認(rèn)識(shí)。當(dāng)我第一次接觸C語言就感覺很難,特別是今次實(shí)訓(xùn)要用到C語言,盡管困難重重,可我們還是克服了。這次的實(shí)訓(xùn)使培養(yǎng)了我們嚴(yán)肅認(rèn)真的做事作風(fēng),增強(qiáng)了我們之間的團(tuán)隊(duì)合作能力,使我們認(rèn)識(shí)到了團(tuán)隊(duì)合作精神的重要性。 這次實(shí)訓(xùn)的經(jīng)歷也會(huì)使我終身受益,我感受到這次實(shí)訓(xùn)是要真真正正用心去做的一件事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力,沒有自己的研究,就不會(huì)有所突破。希望這次的經(jīng)歷能讓我在以后學(xué)習(xí)中激勵(lì)我繼續(xù)進(jìn)步。 單片機(jī)原理及應(yīng)用 實(shí)訓(xùn)報(bào)告 班級(jí): 學(xué)號(hào): 姓名: 指導(dǎo)教師: 實(shí)訓(xùn)總成績: 一、節(jié)日彩燈設(shè)計(jì) 題目:8位邏輯電平模塊上的LED小燈從左向右呈現(xiàn)“鞭甩”的實(shí)驗(yàn)現(xiàn)象,狀態(tài)間隔為0.25秒;按鍵1開始,按鍵2結(jié)束。 原理圖 程序代碼: #include 單片機(jī)原理及應(yīng)用實(shí)訓(xùn)報(bào)告 管及驅(qū)動(dòng)電路的連接,從而構(gòu)成一個(gè)完整的硬件電路。然后通過對(duì)單片機(jī)的ROM進(jìn)行編程,實(shí)現(xiàn)對(duì)彩燈閃爍的控制。 二、定時(shí)器實(shí)現(xiàn)流水燈 題目:利用定時(shí)器/計(jì)數(shù)器T0產(chǎn)生2秒鐘的定時(shí),每當(dāng)2秒定時(shí)到來時(shí),更換指示燈點(diǎn)亮,依次循環(huán)點(diǎn)亮。 原理圖 程序代碼 #include 50000)% 256;TH0 =(65536 單片機(jī)原理及應(yīng)用實(shí)訓(xùn)報(bào)告 程序代碼 #include 單片機(jī)原理及應(yīng)用實(shí)訓(xùn)報(bào)告 實(shí)訓(xùn)總結(jié) 通過本次單片機(jī)實(shí)訓(xùn)使得我更深層次的學(xué)習(xí)單片機(jī)原理與應(yīng)用技術(shù)這門專業(yè)課程,同時(shí)對(duì)KEIL軟件進(jìn)行復(fù)習(xí)。這次實(shí)訓(xùn)是我看到了我最薄弱的一點(diǎn)那就是編程,對(duì)于編程有很大的困難。對(duì)以往學(xué)習(xí)過的編程知識(shí)沒有好好掌握,特別是編程這方便的知識(shí)很薄弱。學(xué)習(xí)過的知識(shí)在實(shí)際應(yīng)用中仿佛是冰山一角,完全不夠用,需要通過查閱很多資料才能解決到碰到的相關(guān)問題。而且實(shí)訓(xùn)中出現(xiàn)的問題都是實(shí)際應(yīng)用出比較典型的問題。這次實(shí)訓(xùn)還讓我深刻的體會(huì)了結(jié)構(gòu)化程序設(shè)計(jì)的優(yōu)勢(shì),讓我懂得當(dāng)我們要進(jìn)行一個(gè)復(fù)雜的程序設(shè)計(jì)時(shí)應(yīng)該先將其分解為多個(gè)不同的功能模塊再分別編程實(shí)現(xiàn),這樣做不僅降低了編程的難度,也容易讓編程者思路更加清晰,避免出現(xiàn)不必要的錯(cuò)誤。在做仿真時(shí),仿真圖正確也不一定就是說明一定正確。 目錄 一 方案設(shè)計(jì)說明:............................................................................................2 二 硬件設(shè)計(jì)說明:............................................................................................4 (一)電路圖:..........................................................................................4(二)單片機(jī)AT89S51的I/O口分配使用情況........................................4 (三)元器件的參數(shù)及規(guī)格:....................................................................5 三 軟件設(shè)計(jì)說明:............................................................................................6 (一)軟件設(shè)計(jì)思路及流程圖:................................................................6 (二)程序的總體框架結(jié)構(gòu)說明:............................................................8 (三)重要程序段的功能,作用及思路簡介:........................................8 四 制作調(diào)試說明:..........................................................................................13 (一)程序調(diào)試過程:..............................................................................13 (二)硬件調(diào)試:......................................................................................13 五 電路實(shí)拍:.....................................................................................................14 六 總結(jié)心得體會(huì):..........................................................................................15 七 參考文獻(xiàn):.....................................................................................................16 一 方案設(shè)計(jì)說明: 設(shè)計(jì)方案之前,得先分解設(shè)計(jì)任務(wù)。本次的設(shè)計(jì)任務(wù)是籃球記分牌,據(jù)常識(shí),籃球記分牌應(yīng)有分別給兩隊(duì)加分,減分,能交換顯示分?jǐn)?shù)。在進(jìn)行設(shè)計(jì)之前,應(yīng)自己提出幾個(gè)問題,待問題回答之后?;竟Α⒌脑O(shè)計(jì)方案就出來了。在設(shè)計(jì)之前我提出了一下幾個(gè)問題: a:硬件部分如何控制給A對(duì)B對(duì)加分,場地交換的時(shí)候又是如何實(shí)現(xiàn)分?jǐn)?shù)顯示交換的?應(yīng)該如何連接硬件,在硬件上設(shè)置控制端,控制端與單片機(jī)各引腳之間的連。 b:單片機(jī)只有一個(gè)CPU,如何實(shí)現(xiàn)即要掃描按鍵,又要顯示比分。數(shù)碼管工作的本質(zhì)是將要顯示的數(shù)據(jù)的字型碼送給他,如何采集到變化的分?jǐn)?shù)送給數(shù)碼管。用查表嗎? c:加分與倒計(jì)時(shí)在程序中最本質(zhì)的東西是什么,如何用程序來說明這樣的事件,各事件之間又是如何聯(lián)系的。 雖然這些問題看似很普通,似乎在設(shè)計(jì)過程中都要面對(duì)這樣的問題,何不事先就解決這些問題呢,在逐一回答這些問題的同時(shí),該任務(wù)的設(shè)計(jì)方案已見雛形。以下就是該方案的詳細(xì)內(nèi)容以及我問題的答案。 系統(tǒng)原理圖如下圖一所示: LED數(shù)碼顯示管外部按鍵AT89S51驅(qū)動(dòng)電路 3 二 硬件設(shè)計(jì)說明: (一)電路圖: (二)單片機(jī)AT89S51的I/O口分配使用情況 圖中P3.0,P3.1,P3.2,P3.3分別是加一分、加兩分、加三分、減一分。P3.4與P3.5口是外部中斷,其中斷服務(wù)程序的功能是實(shí)現(xiàn)比分交換的切換顯示和加分減分切換。電路中選擇共陽極的數(shù)碼管,可以省去輸入端的驅(qū)動(dòng)電路,使電路更簡潔。P0口作為字形碼的輸出口,與數(shù)碼管的八只管教相連。 (三)元器件的參數(shù)及規(guī)格: 主要元器件有單片機(jī)芯片AT89S51,共陽極數(shù)碼管,9012PNP三極管。其中單片機(jī)承載程序,實(shí)現(xiàn)電路功能,三極管起開關(guān)及驅(qū)動(dòng)數(shù)碼管顯示作用。數(shù)碼管顯示比分。 三 軟件設(shè)計(jì)說明: 程序的總體思路是主程序一直在掃描按鍵,比分顯示,比分交換,加減分隊(duì)伍切換都在中斷服務(wù)程序中完成。其具體內(nèi)容如下所示。 (一)軟件設(shè)計(jì)思路及流程圖: 中斷程序流程圖(如:圖一) 程序初始化,給存儲(chǔ)器賦初值按鍵掃描程序,掃描到由按鍵控制的中斷就執(zhí)行其對(duì)應(yīng)程序外部中斷1,加減外部中斷0,A、B分隊(duì)伍切換中斷程序兩隊(duì)比分切換圖一 按鍵掃描程序流程圖(如:圖二)按鍵掃描入口,檢測軟件標(biāo)志位F0,為1調(diào)用分?jǐn)?shù)顯示程序程序,為0調(diào)用加減分切換程序,同時(shí)掃描按鍵是掃描P3.0,并去抖,是否有鍵按下加一分否是掃描P3.1,并去抖,是否有鍵按下加兩分否是掃描P3.2,并去抖,是否有鍵按下加三分否是掃描P3.3,并去抖,是否有按鍵按下減一分否按鍵掃描程序結(jié)束圖二 分?jǐn)?shù)顯示程序流程圖(如:圖三) 將A對(duì)B對(duì)的分?jǐn)?shù)首先進(jìn)行BCD碼轉(zhuǎn)換,再保存到相對(duì)應(yīng)的寄存器中把各分?jǐn)?shù)分別賦給寄存器A,查表送往要顯示的數(shù)碼管由P2口的位狀態(tài)控制子程序調(diào)用結(jié)束,返回主程序,RET 圖三 其中時(shí)間顯示的子程序流程圖與分?jǐn)?shù)的大同小異,此處就不再一一列出。 (二)程序的總體框架結(jié)構(gòu)說明: 程序包含按鍵掃描程序,不斷地掃描按鍵,一旦有控制中斷的按鍵按下,就執(zhí)行中斷程序,交換比分。中斷服務(wù)程序,INT_0交換A對(duì)與B對(duì)的總分,INT_1改變軟件標(biāo)志位就可以切換加減分隊(duì)伍,同時(shí)掃描按鍵。 (三)重要程序段的功能,作用及思路簡介: 按鍵掃描程序是本程序中最重要的程序段,其連接了所有的子程序,子程序的調(diào)用都是在其中完成。下面就對(duì)該程序段的功能,作用及編寫思路做詳細(xì)說明。各部分關(guān)鍵程序 按鍵控制程序 org 0060h ajcx: jnb p3.0,s0 jnb p3.1,s1 jnb p3.2,s2 jnb p3.3,s3 jnb p3.4,s4 jnb p3.5,sz5 ljmp ajcx sz5: ljmp s5 s0: lcall del jb p3.0,s01 ljmp ajcx s01: jnb p1.0,s02 mov a,30h inc a mov 30h,a ljmp tzcx s02: mov a,31h inc a mov 31h,a ljmp tzcx s1: lcall del jb p3.1,s11 ljmp ajcx s11: jnb p1.0,s12 mov a,30h add a,#02h mov 30h,a ljmp tzcx s12: mov a,31h add a,#02h mov 31h,a ljmp tzcx s2: lcall del jb p3.2,s21 ljmp ajcx s21: jnb p1.0,s22 mov a,30h add a,#03h mov 30h,a ljmp tzcx s22: mov a,31h add a,#03h mov 31h,a ljmp tzcx s3: lcall del jb p3.3,s31 ljmp ajcx s31: jnb p1.0,s32 mov a,30h dec a mov 30h,a ljmp tzcx s32: mov a,31h dec a mov 31h,a ljmp tzcx s4: lcall del jb p3.4,s41 ljmp ajcx s41: push 30h push 31h pop 30h pop 31h lcall jscx ljmp ajcx s5: lcall del jb p3.5,s51 ljmp ajcx s51: cpl p1.0 cpl p1.1 ljmp ajcx 加分程序: org 0120h tzcx: lcall jscx ljmp ajcx org 0130h del: mov tl1,#00h mov th1,#0bh setb tr1 jnb tf1,$ mov tl1,#00h mov th1,#0bh clr tf1 ret 加減分隊(duì)伍切換程序: org 0150h dscx: mov th0,#0fch mov tl0,#18h mov a,r2 rl a mov r2,a cjne r2,#11h,d1 mov r1,#32h lcall jscx reti d1: cjne r2,#22h,d2 mov r1,#33h lcall jscx reti d2: cjne r2,#44h,d3 mov r1,#34h lcall jscx reti d3: mov r1,#35h lcall jscx reti 比分切換程序: org 0190h jscx: mov a,30h mov b,#0ah div ab mov 33h,b mov 32h,a mov a,31h mov b,#0ah div ab mov 35h,b mov 34h,a mov p2,r2 mov dptr,#tab mov a,@r1 movc a,@a+dptr mov p0,a ret org 0220h tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h end 12 四 制作調(diào)試說明: (一)程序調(diào)試過程: 程序調(diào)試我花了兩天的時(shí)間,此程序雖然不復(fù)雜,由于我平時(shí)學(xué)習(xí)的不夠深入,也沒用心學(xué)。對(duì)于我這樣的基礎(chǔ)來說調(diào)試過程真的很痛苦。剛開始調(diào)試時(shí)程序有兩處讓我感覺很亂,按鍵掃描程序中的中斷程序如何調(diào)用。當(dāng)寄存A對(duì)或B對(duì)的分?jǐn)?shù)累加到99的時(shí)候,就清零,但還沒有累加到99的時(shí)候,程序應(yīng)該跳往何處執(zhí)行,我最初的是跳了繼續(xù)累加。在仿真中的現(xiàn)象就是分?jǐn)?shù)一直顯示99,加不了。我真的是太大意了,調(diào)試的時(shí)候不踏實(shí)。 (二)硬件調(diào)試: 此次的硬件焊接很成功,電路布局很清晰,雖然在調(diào)試時(shí)也發(fā)現(xiàn)錯(cuò)誤,但用萬用表很容易就檢測出來了,其中有幾根線的皮包線熔了,肉眼看不到。重新整理電路后,功能明顯成功。至此,本次的單片機(jī)課程設(shè)計(jì)圓滿結(jié)束。 五 電路實(shí)拍: 電路板正面: 電路板背面: 六 總結(jié)心得體會(huì): 通過這一次的單片機(jī)實(shí)訓(xùn),讓我對(duì)單片機(jī)這一門知識(shí)有了更深的認(rèn)識(shí),更鍛煉了我獨(dú)立解決問題獨(dú)立思考的能力,在電路設(shè)計(jì)和程序設(shè)計(jì)的過程中我們遇到了很多問題和困難,但通過大家的討論和老師的指點(diǎn)之后,一切的問題都一一被解決,但單片機(jī)的學(xué)習(xí)并不是那么的簡單,在最后也是最關(guān)鍵的程序調(diào)試的過程中,我們又遇到了很多更難的更棘手的問題,電路焊接完好也會(huì)出現(xiàn)諸多類似于不實(shí)現(xiàn)功能或是出現(xiàn)混亂顯示的情況,真的很讓人頭疼,但,大家都還是咬牙堅(jiān)持了下來,最后很多電路雖然依舊還是沒能實(shí)現(xiàn)功能,但我們努力頑強(qiáng)克服重重困難的精神,是大家有目共睹的,就算是失敗了,也依舊是很值得的一次經(jīng)歷.,與此同時(shí),也有很多同學(xué)試驗(yàn)成功,看著大家臉上洋溢的笑容,大家無論失敗成功都從這次的實(shí)訓(xùn)中學(xué)到了很多很多的東西 七 參考文獻(xiàn): 胡健 主編 《單片機(jī)原理及接口技術(shù)》 張大明 主編 《單片機(jī)控制實(shí)訓(xùn)指導(dǎo)及綜合應(yīng)用實(shí)例》李勛、林廣艷《單片機(jī)微型計(jì)算機(jī)大學(xué)讀本》 機(jī)械工程出版社 機(jī)械工業(yè)出版社 北京航空航天大學(xué)出版社16 滄州職業(yè)技術(shù)學(xué)院單片機(jī)實(shí)訓(xùn)報(bào)告 原理圖 滄州職業(yè)技術(shù)學(xué)院單片機(jī)實(shí)訓(xùn)報(bào)告 雙位數(shù)碼管顯示控制程序及說明 START: MOV R0,#0;清零 MOV DPTR,#TABLE;指定查表起始地址 LOOP: ACALL DISPLAY;調(diào)用子程序DISPLAY INC R0;R0加1 CJNE R0,#100,LOOP JMP START DISPLAY: MOV A,R0 MOV B,#10 DIV AB MOV 20H,A MOV 21H,B MOV R3,#50;LOOP1: MOV A,21H ACALL CHANG CLR P2.4;ACALL DLY SETB P2.4 MOV A,20H ACALL CHANG CLR P2.5;ACALL DLY SETB p2.5 DJNZ R3,LOOP1 RET CHANG: MOVC A,@A+DPTR MOV P0,A;RET;R0未到100則轉(zhuǎn)換;跳轉(zhuǎn) ;把R0里的數(shù)據(jù)送入A;把10送入B;a b相除;十位送入20H;個(gè)位送入21H 把50送入R3;取個(gè)位數(shù) ;調(diào)用子程序CHANG 開個(gè)位顯示;調(diào)用子程序DLY;關(guān)閉個(gè)位顯示;取十位數(shù) ;調(diào)用子程序CHANG 開十位顯示;調(diào)用子程序DLY;關(guān)閉十位顯示;循環(huán)50次;子程序返回;查表 查表結(jié)果送入P0;子程序返回 滄州職業(yè)技術(shù)學(xué)院單片機(jī)實(shí)訓(xùn)報(bào)告 DLY: MOV R6,#20;典型延時(shí)子程序延時(shí) D1: MOV R7,#248;10ms DJNZ R7,$ DJNZ R6,D1 RET TABLE: DB 0C0H,0F9H,0A4H DB 0B0H,99H,92H,82H DB 0F8H,80H,90H END ;表數(shù)據(jù)共陽極數(shù)碼管顯示代碼 滄州職業(yè)技術(shù)學(xué)院單片機(jī)實(shí)訓(xùn)報(bào)告 心得體會(huì) 為期一周的單片機(jī)實(shí)訓(xùn)結(jié)束了,真是讓我受益匪淺??!學(xué)到了很多東西,不管怎么樣,先感謝學(xué)校給我的這么多機(jī)會(huì),真正的學(xué)到了東西。 隨著電子技術(shù)的發(fā)展,特別是隨著大規(guī)模集成電路的產(chǎn)生,給人們的生活帶來了根本性的變化,我們就學(xué)習(xí)了單片機(jī)這門課程,感覺是有點(diǎn)難。也不知道整個(gè)學(xué)習(xí)過程是怎么過來得,可是時(shí)間不等人。不過在學(xué)習(xí)中,我才發(fā)現(xiàn)學(xué)習(xí)單片機(jī)不僅僅需要軟件的知識(shí),還需要硬件的知識(shí)。我買了一個(gè)單片機(jī)在實(shí)踐中就是一個(gè)活生生的例子,沒有相應(yīng)的硬件知識(shí),我連單片機(jī)怎么和電腦相連都不知道,我為我當(dāng)初的想法感到羞愧。單片機(jī)是一門很好的學(xué)問,需要我去鉆研它。 不過在學(xué)習(xí)中,我才發(fā)現(xiàn)學(xué)習(xí)單片機(jī)不僅僅需要軟件的知識(shí),還需要硬件的知識(shí)。我買了一個(gè)單片機(jī)在實(shí)踐中就是一個(gè)活生生的例子,沒有相應(yīng)的硬件知識(shí),我連單片機(jī)怎么和電腦相連都不知道,我為我當(dāng)初的想法感到羞愧。單片機(jī)是一門很好的學(xué)問,需要我去鉆研它。 說起課程設(shè)計(jì),我認(rèn)為最重要的就是做好設(shè)計(jì)的預(yù)習(xí),認(rèn)真的研究老師給的題目,選一個(gè)自己有興趣的題目。其次,老師對(duì)實(shí)驗(yàn)的講解要一絲不茍的去聽去想,因?yàn)橹挥卸济靼琢?,做起設(shè)計(jì)就會(huì)事半功倍,如果沒弄明白,就迷迷糊糊的去選題目做設(shè)計(jì),到頭來一點(diǎn)收獲也沒有。最后,要重視程序的模塊化,修改的方便,也要注重程序的調(diào)試,掌握其方法。 滄州職業(yè)技術(shù)學(xué)院單片機(jī)實(shí)訓(xùn)報(bào)告 在全組人竭盡全力,老師的精心指導(dǎo)下,程序基本編寫成功,這是我們共同努力的結(jié)果,在享受我們成果之時(shí),不得不感慨單片機(jī)的重要性與高難度性,所以為期一周的單片機(jī)課程設(shè)計(jì)沒有浪費(fèi)我我們學(xué)到了很多知識(shí),也讓我們對(duì)單片機(jī)有了更深一步的了解,雖然最后結(jié)果是出來了,可這與老師的精心指導(dǎo)是分不開的她引導(dǎo)我們的思路,本來一竅不通的我們經(jīng)過老師的點(diǎn)撥基本上通了,所以老師是功不可沒的。 總而言之,單片機(jī)課程設(shè)計(jì)對(duì)于我們有很大的幫助,我們從中受益匪淺。 參考文獻(xiàn) [1]李廣弟等 單片機(jī)基礎(chǔ)[M] 北京航空航天出版社,2001.[2]王東峰等 單片機(jī)C語言應(yīng)用100例[M] 電子工業(yè)出版社,2009.[3]陳海宴 51單片機(jī)原理及應(yīng)用[M] 北京航空航天大學(xué)出版社,2010.[4]劉守義等 單片機(jī)技術(shù)基礎(chǔ)[M] 西安電子科技大學(xué)出版社,2007.[5]鐘富昭等 8051單片機(jī)典型模塊設(shè)計(jì)與應(yīng)用[M] 人民郵電出版社,2007.[6]李平等 單片機(jī)入門與開發(fā)[M] 機(jī)械工業(yè)出版社,2008.[7]李全利 遲榮強(qiáng)編著 單片機(jī)原理及接口技術(shù) 高等教育出版社,2004 [8] 樓然苗等 51系列單片機(jī)設(shè)計(jì)實(shí)例 北京航空航天出版社,2003 [9]唐俊翟等 單片機(jī)原理及應(yīng)用 冶金工業(yè)出版社,2003 5 滄州職業(yè)技術(shù)學(xué)院單片機(jī)實(shí)訓(xùn)報(bào)告 [10]劉瑞新等 單片機(jī)原理及應(yīng)用教程 機(jī)械工業(yè)出版社,2003第三篇:單片機(jī)實(shí)訓(xùn)報(bào)告
第四篇:單片機(jī)實(shí)訓(xùn)報(bào)告
第五篇:單片機(jī)實(shí)訓(xùn)報(bào)告