單片機原理數碼管動態顯示實驗-單片機原理-實驗報告材料_第1頁
單片機原理數碼管動態顯示實驗-單片機原理-實驗報告材料_第2頁
單片機原理數碼管動態顯示實驗-單片機原理-實驗報告材料_第3頁
單片機原理數碼管動態顯示實驗-單片機原理-實驗報告材料_第4頁
單片機原理數碼管動態顯示實驗-單片機原理-實驗報告材料_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、寧德師范學院計算機系實驗報告(2014 2015學年 第2學期)課程名稱單片機原理實驗名稱數碼管動態顯示實驗專業計算機科學與技術(非師范)年 級 2012 級學號B2012102147 姓名 王 秋指導教師楊烈君實驗日期2015417實驗目的:1. 鞏固Proteus軟件和Keil軟件的使用方法2. 學習端口輸入輸出的高級應用3. 掌握7段數碼管的連接方式和動態顯示法4. 掌握查表程序和延時等子程序的設計實驗要求:1. 在Proteus軟件中畫好51單片機最小核心電路,包括復位電路和晶振電路2. 在電路中增加八位 7段數碼管(共陽/共陰自選),將P2 口作數據輸出口與 7段數碼管數據 引腳相連

2、,P3引腳輸出位選控制信號3. 在Keil軟件中編寫程序,采用動態顯示法,實現數碼管分別顯示數字1-84. 實現指定數值的顯示(可使用 緩存數值)5. 實現類似時鐘的效果,如“13-23-25 ” 13時23分25秒6. 實現時鐘的自動計時7. 擴展要求:結合LED顯示,實現帶數碼顯示的交通燈實驗設備(環境):1 .計算機2. Proteus ISIS 7 Professional 應用程序3. Keil應用程序實驗內容:數碼管動態顯示技術要求實現:1動態顯示法,實現數碼管分別顯示數字1-8 ;2 .實現指定數值的顯示(可使用 緩存數值)(33355223);3 .實現類似時鐘的效果,如“13

3、-23-25 ” 13時23分25秒;4 .實現時鐘的自動計時;擴展要求:結合LED顯示,實現帶數碼顯示的交通燈;實驗步驟、實驗結果及分析: i實驗步驟:1、 使用Proteus ISIS 7 Professional應用程序,建立一個 .DSN文件2、 在“庫”下拉菜單中,選中“拾取元件”(快捷鍵P),分別選擇以下元件:AT89C51 CAR CAP-ELECCRYSTAL RESPACK-83、構建仿真電路:*!暉% 輝-44呼鼻anu-4IE3H563BEEE UTSS連接圖顯示1-8F皿 審 舉 eEIrJIK器Ess3335533顯示 33355223 E S二北盤豈斗顯示時間13.

4、23.25U1rV-MKMroiwc-sFl WIFl W IM-3*.It ”納, iFl-iUAd 酣伽J iFJ IdMdm ,” i.丄 ”T,J:3-i7Srum H 9全土蘭n且fMiW F i ngj n wnl ri rfiwFt-taTDPk-SfTI 1 ilfFPl ?.4FUGW9999WFLW.3JFC WVUMF El KWHFDI PElVimwva HWWTpxnwnF21-.-H !:FlTn-pFl iTT-ifr*3Jlrr:W屈 rlrii rjAHrC L j h. qiA K4時鐘自動計時芟bi 皆二 d A .LE4 6 6IKO|g連接圖.jy*

5、3#r*PCSMIHitVWI-iqime.r9Tu3-AUF3S-IFinv x rawi ri wnF3l-wTIHhH*!FJLitFTMhRF紅綠燈效果圖1OMMFu-m FELVUIZNXiFEUiVEIMLMi FW紅綠燈效果圖24、 創建一個 Keil應用程序:新建一個工程項目文件;為工程選擇目標器件(AT89C52);為工程 項目創建源程序文件并輸入程序代碼;保存創建的源程序項目文件;把源程序文件添加到項目中。5、 把用戶程序經過編譯后生成的HEX文件添加到仿真電路中的處理器中(編輯元件t文件路徑)2實驗程序 程序源代碼:1 動態顯示法,實現數碼管分別顯示數字1-8 ;#in

6、clude#defi ne uchar un sig ned char定義一個數組里面放#defi ne uint un sig ned int uchar code Ledcode= 0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; / 入1-8void delay( uint x)while(x-);void mai n()uchar i;while(1)for(i=0;i8;i+)P3=1i;P3口表示從第一個位開始顯示數值P2=Ledcodei; P2口用來顯示所需要顯示的數值delay(500);2. 實現指定數值的顯示(可使用緩存數值)(3

7、3355223);#in cludeun sig ned char code LedCode= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsigned char DispBuf8=3,3,3,5,5,2,2,3; /指定要顯示的數的位置void delay (un sig ned int x)while(x-);void mai n()un sig ned int i;for(i=0;i8;i+)P3=1i;P2=LedCodeDispBufi; /顯示指定數的位置delay(500);3. 實現類似時鐘的效果,如“13-

8、23-25 ” 13時23分25秒;#in cludeun sig ned char code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;un sig ned char Hour=13,Mi n=23,Sec=25;un sig ned char DispBuf8; void delay (un sig ned int x) while(x-);void PutTime()DispBuf7=Sec%10; /取對應秒數的個位放在最右邊顯示DispBuf6=Sec/10; /取對應秒數的十位放在右起第一位顯示Di

9、spBuf5=10; /DispBuf4=Mi n%10;此處表示秒跟分之間用橫桿隔開DispBuf3=Mi n/10;DispBuf2=10;DispBuf1=Hour%10;DispBuf0=Hour/10;void mai n()long n=0;while(1)un sig ned char i;PutTime();for(i=0;i8;i+)P3=1i;P2=LedCodeDispBufi; delay(500);4.實現時鐘的自動計時;#in cludeun sig ned char code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0

10、x07,0x7f,0x6f,0x40;un sig ned char Hour=13,M in=23,Sec=25;un sig ned char DispBuf8;void delay (un sig ned int x)while(x-);void PutTime()DispBuf7=Sec%10;DispBuf6=Sec/10;DispBuf5=10;DispBuf4=Mi n%10;DispBuf3=Mi n/10;DispBuf2=10;DispBuf1=Hour%10;DispBuf0=Hour/10;void mai n()long n=0;while(1)unsigned ch

11、ar i,ms; /定義一個 ms用于控制秒數加一的延時PutTime();for(i=0;i8;i+)P3=1=20)Sec+;ms=0;if(Sec=60) /表示進位,當秒滿六十則向分鐘進一,同時秒數清零Mi n+;Sec=0;if(Mi n=60)Hour+;Mi n=0;if(Hour=24) / 當小時數滿24小時時,則小時數清零,完成計時Hour=0;5.擴展要求:結合LED顯示,實現帶數碼顯示的交通燈;#i nclude reg52.h#defi ne uint un sig ned int#defi ne uchar un sig ned char#defi ne Disp_

12、Null 10uchar code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;uchar DispBuf8;sbit r1=P2A0;sbit y1=P2A1;sbit g1=P2A2;sbit r2=P2A3;sbit y2=P2A4;sbit g2=P2A5;uchar sec1;sec2;comsec;void delay( uint x)while(x-);void Pn tTime()DispBuf3=sec2 % 10;DispBuf2=sec2 / 10;DispBuf1=sec1 % 10;Di

13、spBuf0=sec1 / 10;void display。uchar i;for (i = 0;i 8;i +)P3=0;P1= LedCode DispBufi;P3=1=60)ms=O;comsec=(comsec+1) % 60; / 定義一個計數變量,使其一直保持在 60內 if( comsec =20 & comsec=30 & comsec=50)sec1=60-comsec; sec2=60-comsec;r1=0;y1=1;g 1=0;r2=1;y2=0;g2=0;過程總結:本實驗是將單片機的 P2 口做為輸出口,將四個數碼管的七段引腳分別接到P2.0至P2.7.由于電路中采

14、用共陽極的數碼管,所以當P2端口相應的引腳為 0時,對應的數碼管段點亮。程序中預設了數字0-9的段碼。由于是讓八個數碼管顯示不同的數值,所以要用掃描的方式來實現。因此可 定義掃描函數,接到單片機的P3 口。在實驗中,預設的數字段碼表存放在數組LedCode中,由于段碼表是固定的,因此存儲類型可設為code.在Proteus軟件中按照要求畫出電路,再利用 Keil軟件按需要實現的功能編寫 c程序, 生成Hex文件,把Hex文件導到Proteus軟件中進行仿真。心得體會:實驗數碼管顯示程序的編程方法1)先準備好要顯示的數據,放入相應的顯示存儲單元中。2)根據要使用的數碼管的具體位置來確定掃描初值和掃描方向。3)根據使用數碼管的個數來確定掃描的位數。4 )查表將要顯示的數據轉換為能使數碼管正確顯示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論