

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機設(shè)計實驗內(nèi)容摘要:單片機實驗是通過Proteus仿真并且與Keil相結(jié)合使用控制單片機使其在仿真中完成一系列所設(shè)計的程序。我們這個小組所做的實驗是仿真一個數(shù)字時鐘,通過DS1302這個芯片從計算機上讀取時間信息,再由51單片機對數(shù)據(jù)進行處理、分配,將其輸出在LCD1602上,實現(xiàn)簡單的數(shù)字時鐘的功能。設(shè)計內(nèi)容及要求:(1)根據(jù)設(shè)計課題的技術(shù)指標和給定條件,在教師指導下,能夠獨立而正確地進行方案論證和設(shè)計計算,要求概念清楚、方案合理、方法正確、步驟完整;(2)要求學生掌握單片機的設(shè)計內(nèi)容、方法和步驟;(3)要求會查閱有關(guān)參考資料和手冊等;(4)要求學會選擇有關(guān)元件和參數(shù);(5)要求學會繪制
2、有關(guān)電路圖和設(shè)計流程圖;(6)要求學會編寫設(shè)計說明書。系統(tǒng)框圖:硬件選擇:1、AT89C51AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFlashProgrammableandErasableReadOnlyMemory)的低電壓、高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制
3、器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。AT89C51外形及引腳排列主要特性:與MCS-51兼容4K字節(jié)可編程FLASH存儲器壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:10年全靜態(tài)工作:0Hz-24MHz三級程序存儲器鎖定 128X8位內(nèi)部RAM 32可編程I/O線兩個16位定時器/計數(shù)器5個中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時鐘電路特性概述:AT89C51提供以下標準功能:4k字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32個I/O口線,兩個16位定時/計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行
4、通信口,片內(nèi)振蕩器及時鐘電路。同時,AT89C51可降至OHz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。管腳說明:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部
5、必須接上拉電阻。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出
6、地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:口管腳備選功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時器0外部
7、輸入)P3.5T1(記時器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0
8、。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)
9、部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。2、DS1302DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字
10、節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31X8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進行涓細電流充電的能力。2.1引腳功能及結(jié)構(gòu)DS1302的引腳排列,其中Vccl為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vccl或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vccl時,DS1302由Vccl供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線
11、,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。1/0為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細說明。SCLK為時鐘輸入端。下圖為DS1302的引腳功能圖:VCC2X12了3643X2匚GND匚Vcci
12、SCLKIQR§T2.2DS1302封裝圖DS1302的控制字節(jié)DS1302的控制字如圖2所示。控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。1AA3A12.3數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀
13、出數(shù)據(jù)時從低位0位到高位7。2.4DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表1。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FE
14、H(寫)、FFH(讀)。3、1602液晶1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大部
15、分的字符型液晶。管腳功能®匸宜=rq叫吞l-5辻1=1-|'-r丁11rjBd*!LCD1602引腳圖1602采用標準的16腳接口,其中:第1腳:VSS為電源地第2腳:VCC接5V電源正極第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生“鬼影”使用時可以通過一個10K的電位器調(diào)整對比度)。第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:E(或EN)端為使能(enable)端。第714腳:D0D7為8位雙向數(shù)據(jù)端
16、。第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負極。電路總圖:4z.zzand+'ff?LCD1U.D16L-=TE<R-nrZZPFJ1oX119hXTALipnn'ADnP口.KAD1Pna'ADZXTAL2PDADlPD.AD*PDfVAD13LI1ZIZZpF=TE:CR-F口砂四RETPD.7AD711S«-<7f1a匸:尹P2n'HEL-PZZN陽口P3EMPZa'AllALEF2.4/A1Z百IIjs1DjFTJE護1PSJffAUP3.7W15LJ2LTia1P1HP3IVRXDP11P3.irrxipi
17、2PMwnrmP1JIP33TNTTP1.+F3.<rraP1SF3ST1P1JSpIjSWITSCLK?25o?*HZ?田HIAsWC212Ki37S門亍n.TiinrBl11.-'B1H.TEEi:S1.dT3,dZ4-.n5.n4-h?.as3.HTBdo所用儀器名稱清單:DS1302芯片,單片機AT89C51,液晶顯示屏LCD1602,晶振,電解電容等。C語言程序:#includereg52.h#includeintrins.h#includestring.h#defineuintunsignedint#defineucharunsignedchar/定義DS1302與M
18、CU接口sbitIO=PO;/IO接口sbitSCLK=P1;/時鐘線引腳sbitRST=P2;/復位線引腳/定義1602與單片機的接口sbitRS=P2"0;/指令數(shù)據(jù)選擇sbitRW=P2"l;/接地,執(zhí)行寫操作sbitEN=P2"2;/信號使能uchar*WEEK="SUN","MON","TUS","WEN","THU","FRI","SAT"ucharLCD_DSY_BUFFER1="DATE00-00-0
19、0"ucharLCD_DSY_BUFFER2="TIME00:00:00"ucharDateTime7;/*延時i毫秒函數(shù)*/voidDelayMS(uintms)uchari;while(ms-)for(i=0;i<120;i+);/*向DS1302寫入1字節(jié)數(shù)據(jù)*/voidWrite_A_Byte_TO_DS1302(ucharx)uchari;for(i=0;i<8;i+)IO=x&0x01;SCLK=1;SCLK=0;x=1;/x右移1位,高位補0/*從DS1302中讀出1字節(jié)數(shù)據(jù)*/ucharGet_A_Byte_FROM_DS130
20、2()uchari,b=0x00;for(i=0;i<8;i+)b=b|_crol_(uchar)IO,i);SCLK=1;SCLK=0;returnb/16*10+b%16;/*讀取DS1302某地址的數(shù)據(jù),先寫命令字,后讀數(shù)據(jù)*/ucharRead_Data(ucharaddr)uchardat;RST=0;/復位SCLK=O;/時鐘脈沖置0RST=1;/啟動數(shù)據(jù)傳送Write_A_Byte_T0_DS1302(addr);/寫入地址命令字dat=Get_A_Byte_FR0M_DS1302();/讀出一個字節(jié)的數(shù)據(jù)SCLK=1;RST=0;returndat;voidGetTime
21、()uchari,addr=0x81;for(i=0;i<7;i+)DateTimei=Read_Data(addr);addr+=2;/*讀出LCD狀態(tài)*/ucharRead_LCD_State()ucharstate;RS=0;RW=1;EN=1;DelayMS(1);state=P0;EN=0;DelayMS(1);returnstate;/*lcd忙檢測*/voidLCD_Busy_Wait()while(Read_LCD_State()&0x80)=0x80);/讀取忙標志位BF,BF=1則一直等待DelayMS(5);/*向LCD寫數(shù)據(jù)*/voidWrite_LCD_
22、Data(uchardat)LCD_Busy_Wait();/忙檢測確保上一指令完成,也可用適當?shù)难訒r替換此行RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;voidWrite_LCD_Command(ucharcmd)LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0;/*初始化LCD函數(shù)*/voidInit_LCD()Write_LCD_Command(0x38);/8位數(shù)據(jù)接口,2行顯示,5*7點陣字符DelayMS(1);/延時保證上一指令完成Write_LCD_Command(0x
23、01);/清DDRAM和AC值DelayMS(1);Write_LCD_Command(0x06);/數(shù)據(jù)讀寫操作畫面不動,AC自動加1DelayMS(1);Write_LCD_Command(OxOc);/開顯示,關(guān)光標和閃爍DelayMS(1);voidSet_LCD_POS(ucharp)Write_LCD_Command(p|0x80);voidDisplay_LCD_String(ucharp,uchar*s)uchari;Set_LCD_POS(p);for(i=0;i<16;i+)Write_LCD_Data(si);DelayMS(1);/*格式化日期時間函數(shù)*/void
24、Format_DateTime(uchard,uchar*a)a0=d/10+'0'a1=d%10+'0'/*主函數(shù)*/voidmain()Init_LCD();/初始化液晶while(1)GetTime();/獲得當前時間Format_DateTime(DateTime6,LCD_DSY_BUFFERl+5);/通道號顯示Format_DateTime(DateTime4,LCD_DSY_BUFFER1+8);Format_DateTime(DateTime3,LCD_DSY_BUFFER1+11);strcpy(LCD_DSY_BUFFER1+13,WEEK
25、DateTime5);Format_DateTime(DateTime2,LCD_DSY_BUFFER2+5);Format_DateTime(DateTime1,LCD_DSY_BUFFER2+8);Format_DateTime(DateTime0,LCD_DSY_BUFFER2+11);Display_LCD_String(OxOO,LCD_DSY_BUFFERl);/液晶顯示Display_LCD_String(0x40,LCD_DSY_BUFFER2);組裝調(diào)試電路的過程及特點:任何一個科研成果的出現(xiàn),都離不開實驗及研究記錄,切不可低估記錄的重要作用。在單片機開發(fā)過程中,單片機系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,許多硬件錯誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來調(diào)試以進一步排除故障??梢娪布恼{(diào)試是基礎(chǔ),如果硬件調(diào)試不通過,軟件設(shè)計則是無從做起。利用仿真器調(diào)試與軟件調(diào)試的方法基本相同,同樣可以利用“單步”、“跟蹤”、“斷點”等手段,對程序進行分段調(diào)試或統(tǒng)一調(diào)試。不同的是仿真器把軟件和硬件結(jié)合了起來,使程序在比較真實的系統(tǒng)中運行。需要指出的是,通過仿真器調(diào)試的程序并不是最后使用的程序,它只是更接近了真實運行的程序,要想在真實系統(tǒng)中讓程序可靠運行,往往還
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)門前硬化施工方案
- 工地項目草坪施工方案
- 架空線施工方案
- 杭州灣大橋 施工方案
- 板房墻面翻新施工方案
- 爬架專項施工方案
- 筒易 施工方案
- 民國風建筑施工方案
- 2025年度車貸抵押貸款合同保密條款
- 二零二五年度股份協(xié)議書:股權(quán)分紅與收益分配
- 2020-2024年安徽省初中學業(yè)水平考試中考歷史試卷(5年真題+答案解析)
- 企業(yè)解散清算公告模板
- 2024年江蘇農(nóng)牧科技職業(yè)學院單招職業(yè)適應性測試題庫帶答案
- GB/T 43977-2024電子氣體八氟環(huán)丁烷
- (人衛(wèi)版第九版第十六章種植義齒)課件全新
- 2024年廊坊市財信投資集團有限公司招聘筆試沖刺題(帶答案解析)
- 以案促改整改方案整改目標
- 2024年江西應用工程職業(yè)學院單招職業(yè)技能測試題庫及答案解析
- (正式版)SHT 3224-2024 石油化工雨水監(jiān)控及事故排水儲存設(shè)施設(shè)計規(guī)范
- 2024年中考英語一般時態(tài)-一般現(xiàn)在時一般過去時一般將來時課件
- 2024-2029年中國艾草行業(yè)發(fā)展分析及投資風險預測分析報告
評論
0/150
提交評論