單片機原理數(shù)碼管動態(tài)顯示試驗-單片機原理-試驗報告_第1頁
單片機原理數(shù)碼管動態(tài)顯示試驗-單片機原理-試驗報告_第2頁
單片機原理數(shù)碼管動態(tài)顯示試驗-單片機原理-試驗報告_第3頁
單片機原理數(shù)碼管動態(tài)顯示試驗-單片機原理-試驗報告_第4頁
單片機原理數(shù)碼管動態(tài)顯示試驗-單片機原理-試驗報告_第5頁
免費預覽已結束,剩余9頁可下載查看

下載本文檔

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

文檔簡介

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

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

3、4 .實現(xiàn)時鐘的自動計時;擴展要求:結合LED顯示,實現(xiàn)帶數(shù)碼顯示的交通燈;實驗步驟、實驗結果及分析:1實驗步驟:1、使用ProteusISIS7Professional應用程序,建立一個.DSN文件2、在“庫”下拉菜單中,選中“拾取元件”(快捷鍵P),分別選擇以下元件:AT89C51CAPCAP-ELECCRYSTALRESPACK-83、構建仿真電路:連接圖顯示1-8顯示33355223顯示時間13.23.25時鐘自動計時連接圖紅綠燈效果圖1紅綠燈效果圖24、創(chuàng)建一個Keil應用程序:新建一個工程項目文件;為工程選擇目標器件(AT89C52);為工程項目創(chuàng)建源程序文件并輸入程序代碼;保存創(chuàng)

4、建的源程序項目文件;把源程序文件添加到項目中。5、把用戶程序經過編譯后生成的HEX文件添加到仿真電路中的處理器中(編輯元件一文件路徑)2實驗程序程序源代碼:1.動態(tài)顯示法,實現(xiàn)數(shù)碼管分別顯示數(shù)字1-8;#include#defineucharunsignedchar#defineuintunsignedintucharcodeLedcode=0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/定義一個數(shù)組里面放入1-8voiddelay(uintx)while(x-);)voidmain()uchari;while(1)for(i=0;i8;i+)P3=

5、1i;/P3口表示從第一個位開始顯示數(shù)值P2=Ledcodei;/P2口用來顯示所需要顯示的數(shù)值delay(500);)2 .實現(xiàn)指定數(shù)值的顯示(可使用緩存數(shù)值)(33355223);#includeunsignedcharcodeLedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40);unsignedcharDispBuf8=3,3,3,5,5,2,2,3;/指定要顯示的數(shù)的位置voiddelay(unsignedintx)while(x-);)voidmain()(unsignedinti;for(i=0;i8;i+)

6、P3=1i;P2=LedCodeDispBufi;/顯示指定數(shù)的位置delay(500);)3 .實現(xiàn)類似時鐘的效果,如“13-23-25”13時23分25秒;#includeunsignedcharcodeLedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsignedcharHour=13,Min=23,Sec=25;unsignedcharDispBuf8;voiddelay(unsignedintx)while(x-);voidPutTime()DispBuf7=Sec%10;/取對應秒數(shù)的個位放在最右邊顯示

7、DispBuf6=Sec/10;/取對應秒數(shù)的十位放在右起第二位顯示DispBuf5=10;/此處表示秒跟分之間用橫桿隔開DispBuf4=Min%10;DispBuf3=Min/10;DispBuf2=10;DispBuf1=Hour%10;DispBuf0=Hour/10;)voidmain()(longn=0;while(1)(unsignedchari;PutTime();for(i=0;i8;i+)(P3=1i;P2=LedCodeDispBufi;delay(500);)4 .實現(xiàn)時鐘的自動計時;#includeunsignedcharcodeLedCode口=0x3f,0x06,

8、0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;unsignedcharHour=13,Min=23,Sec=25;unsignedcharDispBuf8;voiddelay(unsignedintx)while(x-);)voidPutTime()(DispBuf7=Sec%10;DispBuf6=Sec/10;DispBuf5=10;DispBuf4=Min%10;DispBuf3=Min/10;DispBuf2=10;DispBuf1=Hour%10;DispBuf0=Hour/10;)voidmain()(longn=0;while(1)(u

9、nsignedchari,ms;/定義一個ms用于控制秒數(shù)加一的延時PutTime();for(i=0;i8;i+)(P3=1=20)(Sec+;ms=0;)if(Sec=60)/表示進位,當秒滿六十則向分鐘進一,同時秒數(shù)清零(Min+;Sec=0;)if(Min=60)(Hour+;Min=0;)if(Hour=24)/當小時數(shù)滿24小時時,則小時數(shù)清零,完成計時(Hour=0;)5 .擴展要求:結合LED顯示,實現(xiàn)帶數(shù)碼顯示的交通燈;#includereg52.h# defineuintunsignedint# defineucharunsignedchar# defineDisp_Nul

10、l10ucharcodeLedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;ucharDispBuf8;sbitr1=P2A0;sbity1=P2A1;sbitg1=P2A2;sbitr2=P2A3;sbity2=P2A4;sbitg2=P2A5;ucharsec1;sec2;comsec;voiddelay(uintx)(while(x-);)voidPntTime()(DispBuf3=sec2%10;DispBuf2=sec2/10;DispBuf1=sec1%10;DispBuf0=sec1/10;)voiddi

11、splay()(uchari;for(i=0;i8;i+)(P3=0;P1=LedCodeDispBufi;P3=1=60)ms=0;comsec=(comsec+1)%60;/定義一個計數(shù)變量,使其一直保持在60內)if(comsec=20&comsec=30&comsec=50)sec1=60-comsec;sec2=60-comsec;r1=0;y1=1;g1=0;r2=1;y2=0;g2=0;)過程總結:本實驗是將單片機的P2口做為輸出口,將四個數(shù)碼管的七段引腳分別接到P2.0至P2.7.由于電路中采用共陽極的數(shù)碼管,所以當P2端口相應的引腳為0時,對應的數(shù)碼管段點亮。程序中預設了數(shù)字

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

溫馨提示

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

評論

0/150

提交評論