單片機(jī)簡(jiǎn)易電子表方案與仿真_第1頁(yè)
單片機(jī)簡(jiǎn)易電子表方案與仿真_第2頁(yè)
單片機(jī)簡(jiǎn)易電子表方案與仿真_第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、圖1-1系統(tǒng)仿真流程圖Tianjin University of Technology and Education 智能儀器及應(yīng)用實(shí)驗(yàn)報(bào)告 項(xiàng)目名稱:基于51單片機(jī)的簡(jiǎn)易電子表設(shè)計(jì)與仿真專業(yè)名稱:測(cè)控技術(shù)與儀器班級(jí):測(cè)控0901班學(xué)生姓名: 指導(dǎo)教師:一、任務(wù)要求使用Keil uVision編程軟件以及ISIS 7 Professional仿真軟件制作一個(gè)簡(jiǎn)易電 子表,要求具備電子表基本功能 時(shí)間顯示、時(shí)間調(diào)整等)。二、總體設(shè)計(jì)方案利用AT89C51作為控制以及1602LCD作為顯示,通過(guò)6個(gè)按鍵實(shí)現(xiàn)出入時(shí)間 設(shè)置狀態(tài)、出入鬧鈴設(shè)置狀態(tài)、小時(shí)位調(diào)整、分鐘位調(diào)整、開(kāi)關(guān)鬧鈴等功能。 系統(tǒng)的流程圖如

2、下:三、系統(tǒng)硬件1、AT89C51引腳功能說(shuō)明:AT89C51芯片如圖1-2所示U1 -191&29 .3.Q_3121456>XTAL1XTAL2RSTPO.O/ADOP0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6PO 7/AD739363534212?232425262?2?PSEN ALE EAP2 0W8P2.1M9P2.2/A10 P2 3/A11P2.4/A12P2.SJA13P2.6/A14P2 7/A15P1 aP1 1P1 2P1 3P1 4P1.5P1.6P17P3 0/RXDP3.1/TXDP3.2ANTCT

3、P3.:3/INrrP3 4/TOP3.5££P3E陋P3.7jRD10124-I1617AT8SC51.圖 1-2AT89C51VCC :供電電壓。GND :接地。P0 口: PO 口為一個(gè)8位漏極開(kāi)路雙向I/O 口,每腳可吸收8TTL門(mén)電流。當(dāng)P1 口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器, 它可以被定義為數(shù)據(jù)/地址的第八位。在 FIASH編程時(shí),P0 口作為原碼輸入口, 當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1 口: P1 口是一個(gè)內(nèi)部提供上拉電阻的 8位雙向I/O 口,P1 口緩沖器能接收 輸出4TTL門(mén)電流。

4、P1 口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1 口 被外部下拉為低電平時(shí),將輸出電流,這是因?yàn)閮?nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1 口作為第八位地址接收。P2 口: P2 口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O 口,P2 口緩沖器可接收,輸 出4個(gè)TTL門(mén)電流,當(dāng)P2 口被寫(xiě)“ 1時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為 輸入。并因此作為輸入時(shí),P2 口的管腳被外部拉低,將輸出電流。這是因?yàn)閮?nèi) 部上拉的緣故。P2 口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地址的高八位。在給出地址 “ 1時(shí),它利用內(nèi)部上拉優(yōu)勢(shì), 當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P

5、2 口輸出其特殊功能寄存器的內(nèi)容P2 口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3 口: P3 口管腳是8個(gè)內(nèi)部上拉電阻的雙向I/O 口,可接收輸出4個(gè)TTL門(mén) 電流。當(dāng)P3 口寫(xiě)入“ 1后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入, 因?yàn)橥獠肯吕瓰榈碗娖?,P3口將輸出電流vILL )這是因?yàn)樯侠木壒省3 口也可作為AT89C51的一些特殊功能口,如下所示:口管腳備選功能P3.0 RXD串行輸入口)P3.1 TXD串行輸出口)P3.2 INT0 外部中斷0)P3.3 INT1 外部中斷1)P3.4 T0B時(shí)器0外部輸入)P3.5 T1B時(shí)器1外部輸入)P3.6 WR 外

6、部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 RD 外部數(shù)據(jù)存儲(chǔ)器讀選通)P3 口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE :當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字 節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí), 將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才

7、起作用。另外,該引腳被略微 拉高。如果微處理器在外部執(zhí)行狀態(tài) ALE禁止,置位無(wú)效。PSEN :外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的PSEN信號(hào)將不出現(xiàn)。EA :當(dāng)EA保持低電平時(shí),貝恠此期間外部程序存儲(chǔ)器 vOOOOH-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式 1時(shí),EA將內(nèi)部鎖定為RESET;當(dāng)EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在 FLASH編程期間,此引腳也用于施加12V編程電源VPP)XTAL1 :反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入XTAL2 :來(lái)自反向振蕩器的輸出。振蕩器

8、特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大 器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源 驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器, 因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬 度。2、1602LCD液晶顯示引腳功能說(shuō)明:1602LCD顯示用來(lái)顯示當(dāng)前時(shí)鐘與鬧鐘時(shí)間。當(dāng)運(yùn)行仿真軟件時(shí),可以清 楚的看到時(shí)間。1602LCD芯片如圖1-3所示 LCD1O LU0圖 1-3 1602LCD編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地8D1數(shù)據(jù)2VDD電源正極9D2數(shù)據(jù)3VL液晶顯示偏壓10D

9、3數(shù)據(jù)4RS數(shù)據(jù)/命令選擇11D4數(shù)據(jù)5R/W讀/寫(xiě)選擇12D5數(shù)據(jù)6E使能信號(hào)13D6數(shù)據(jù)7D0數(shù)據(jù)14D7數(shù)據(jù)四、系統(tǒng)軟件設(shè)計(jì) 設(shè)計(jì)仿真圖:IM014L00:00:30t'III丄:斗八旳型iJhR224RP1SEfiPMJIfE圖1-4電子表仿真圖CD X1r.nv-s.T*i“.TmliPCJ HflHlFH-PA JtdPTP J 1JA9P5E1UP2nr Ti'jn 4an"itEAre JWH5H liFi.-iP4 3r J .LiI'Al1 rt l/TXtPl 3PJ 3/HT1r i占H 3LFT I 0* at JQ3Fr 1 JOE

10、H 7P3 7/RD"ri1 j設(shè)計(jì)程序:定義鎖存使能端口段鎖存II位鎖存> 小時(shí)+1按鈕> 分鐘+1按鈕> 定時(shí)開(kāi)關(guān)> 定時(shí)設(shè)定定義喇叭端口#include<reg52.h> #define DataPort P0 sbit LATCH仁P2八6 sbit LATCH2=P2A7 sbit KeyPort1=P3A4 sbit KeyPort2=P3A5 sbit KeyPort3=P3A2 sbit KeyPort4=P3A3 sbit SPK=P1A2。unsigned char code DuanMa10=0xc0,0xf9,0xa4,0x

11、b0,0x99,0x92,0x82,0xf8, 0x80,0x90。顯示段碼值09Unsigned char code WeiMa=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsigned char TempData8 存儲(chǔ)顯示值的全局變量 void DelayUs2x(unsigned char t> I/us級(jí)延時(shí)函數(shù)聲明 void DelayMs(unsigned char t> I/ms 級(jí)延時(shí) void Display(unsigned char FirstBit,unsigned char Num。

12、數(shù)碼管顯示函數(shù) unsigned char sh。 II 小時(shí) unsigned char fen。分鐘設(shè)定小時(shí)設(shè)定分鐘取消定時(shí)定時(shí)器初始化unsigned char miao。 II秒 unsigned char dingsh。 unsigned char dingfen unsigned char quxiao void Init_Timer0(void> void delay1s(> /I消抖延時(shí) void DelayUs2x(unsigned char t> II函數(shù)聲明 void DelayMs(unsigned char t>。void main (void

13、> unsigned char displaynum=0,i。Init_Timer0(> 。 /初始化 for(j=0 。 j<8。 j+> / 清屏 TempDataj=0xff 。 while (1>/主循環(huán)if(!KeyPort3> /判斷是時(shí)間界面還是設(shè)定鬧鐘時(shí)間 delay1s(>。if(!KeyPort3>displaynum+。if(displaynum=2>displaynum=0。 if(!KeyPort4> / 判斷是否開(kāi)啟鬧鐘delay1s(>。if(!KeyPort4>quxiao+。 if(qux

14、iao>=2> quxiao=0。P1=0xff。 if(quxiao=1>P1=0xfe。 /P1.1 燈亮起為開(kāi)啟鬧鐘否則為關(guān)閉鬧鐘 elseP1=0xff。 if(displaynum=0> /時(shí)間顯示界面if(!KeyPort1> / 按鍵掃描設(shè)定小時(shí)delay1s(>。if(!KeyPort1> while(!KeyPort1>。shi+。if(!KeyPort2> / 按鍵掃描設(shè)定分鐘delay1s(>。if(!KeyPort2>while(!KeyPort2>。fen+。TempData7=DuanMashi

15、/10 。 / 時(shí) TempData6=DuanMashi%10 。 TempData5=0xbf 。 /加入 "-" TempData4=DuanMafen/10 。 / 分 TempData3=DuanMafen%10 。 TempData2=0xbf 。TempData1=DuanMamiao/10 。 / 秒TempData0=DuanMamiao%10 。Display(0,8>。/ 調(diào)用數(shù)碼管掃描else if(displaynum=1>/鬧/ 鐘顯示界面if(!KeyPort1> / 按鍵掃描設(shè)置鬧鐘小時(shí)delay1s(>。if(!Ke

16、yPort1> while(!KeyPort1>。 dingshi+。if(dingshi>=24>dingshi=0。 if(!KeyPort2> / 按鍵掃描設(shè)定鬧鐘分鐘delay1s(>。if(!KeyPort2> while(!KeyPort2>。 dingfen+。if(dingfen>=60>dingfen=0。 TempData7=0xff 。 TempData6=DuanMadingshi/10 。 TempData5=DuanMadingshi%10 。TempData4=0xbf 。TempData3=0xbf 。

17、 TempData2=DuanMadingfen/10 。 TempData1=DuanMadingfen%10 。TempData0=0xff 。Display(0,8>。/ 調(diào)用數(shù)碼管掃描if(shi=dingshi>&&(fen=dingfen>&&quxiao> / 鬧鐘滴答函數(shù) if(!KeyPort4> quxiao=0。for(i=0。i<200。i+> DelayUs2x(200>。SPK=!SPK 。Display(0,8>。/ 調(diào)用數(shù)碼管掃描SPK=0。 /防止一直給喇叭通電造成損壞 fo

18、r(i=0。 i<200。 i+>DelayMs(1>。Display(0,8>。/ 調(diào)用數(shù)碼管掃描void Display(unsigned char FirstBit,unsigned char Num>static unsigned char i=0DataPort=0xff。/清空數(shù)據(jù),防止有交替重影LATCH1=1 。/段鎖存LATCH1=0 。DataPort=WeiMai+FirstBit 。 /取位碼LATCH2=1 。/位鎖存LATCH2=0 。DataPort=TempDatai 。 /取顯示數(shù)據(jù),段碼 LATCH1=1 。/段鎖存LATCH1=0i+ 。 if(i=Num> i=0。void Init_Timer0(void>TMOD |= 0x01。 /使用模式 1,16位定時(shí)器,使

溫馨提示

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

評(píng)論

0/150

提交評(píng)論