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