51單片機(jī)1602LCD顯示數(shù)字頻率計_第1頁
51單片機(jī)1602LCD顯示數(shù)字頻率計_第2頁
51單片機(jī)1602LCD顯示數(shù)字頻率計_第3頁
51單片機(jī)1602LCD顯示數(shù)字頻率計_第4頁
51單片機(jī)1602LCD顯示數(shù)字頻率計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

;硬件連接:1602lcd顯示hz短接p1.4--p3.則顯示010hz;LCD1602顯示在不增加外部計數(shù)硬件的情況下,本試驗軟件可測最高頻率達(dá)到460KHz;工作原理:;1S鐘內(nèi)對輸入脈沖所計數(shù)的次數(shù)則為頻率值。;16位二進(jìn)制加法計數(shù)器的最大計數(shù)值為65535。;設(shè)置定時器0工作在定時方式1,定時1S。;設(shè)置定時器1工作在計數(shù)方式1,對輸入脈沖進(jìn)行計數(shù),溢出產(chǎn)生中斷。;將定時器1中斷定義為優(yōu)先。在中斷處理程序里對中斷次數(shù)進(jìn)行計數(shù)°1S到后,;將中斷次數(shù)和計數(shù)器里的計數(shù)值取出進(jìn)行綜合數(shù)據(jù)處理,處理后的數(shù)據(jù)送LCD1602顯示?;信號來源:;1、軟件里對P1.4定時取反,形成輸出脈沖,接到P3.5可自測。;顯示結(jié)果:P1.4-P3.5顯示:10(Hz);如果有條件的話,可使用專用設(shè)備(信號發(fā)生器和頻率計)進(jìn)行校正。;頻率計的程序;包含:外部中斷設(shè)置,中斷服務(wù)程序,定時程序,定時服務(wù)程序;以及數(shù)據(jù)處理,顯示,包括三位十進(jìn)制數(shù)轉(zhuǎn)化為四位BCD碼,;INT_GEQU35H;中斷計數(shù)緩沖單元高地址INT_HEQU34H;中斷計數(shù)緩沖單元中地址INT_LEQU33H;中斷計數(shù)緩沖單元低地址BEEPBITP3.7LCD_RSBITP2.0LCD_RWBITP2.1LCD_ENBITP2.2LCD_XEQU3FH;LCD地址變量TIMER_HEQU30H;定時器高位字節(jié)單元TIMER_LEQU31H;定時器低位字節(jié)單元TIMCOUNT'EQU32H;時間中斷數(shù)T_SEQU36H;數(shù)據(jù)顯示低位T_MEQU37H;數(shù)據(jù)顯示中位T_HEQU38H;數(shù)據(jù)顯示高位T_GEQU39H;數(shù)據(jù)顯示最高位;ORGHJMPMAIN;主程序開始ORG0BHJMPTIMER_INT;定時器T0中斷服務(wù)程序ORG1BH;定時器T1中斷服務(wù)程序JMPTIMER1ORG30HMAIN: MOVSP,#60H;設(shè)置SP指針LCALLPRO_SET;初始化CALLSET_LCDLCALLTIM_T0;;LCD1602是慢速顯示器件,故1MS顯示一次。;MAIN1:MOVR5,40MAIN2:ACALLDELAY1;3msDJNZR5,MAIN2ACALLSBIN_SBCDCALLCONVJMPMAIN1;;T1計數(shù)器中斷服務(wù)子程序;計T1計數(shù)器溢出次數(shù);TIMER1:INC2AHRETI;;初始化程序;PRO_SET: MOVA,#HMOVB,#HMOV2AH,AMOVP0,#0FFHMOVP1,#0FFHMOVP2,#0FFHMOVINT_H,#HMOVINT_L,#HMOVINT_G,#HMOVT_S,#HMOVT_H,#HMOVT_M,#HMOVTIMCOUNT,#HMOVTIMER_H,#04CH;定時50MSMOVTIMER_L,#10H;CLRBEEPSETBP3.5;P3.5端置輸入狀態(tài)RET;T1(TIMER1的外部輸入腳);;LCD初始化設(shè)置;-SET_LCD:CLRLCD_ENCALLINIT_LCD;初始化LCDCALLDELAY1MOVDPTR,#INFO1;指針指到顯示信息1MOVA,#1;顯示在第一行CALLLCD_SHOWMOVDPTR,#INFO2';指針指到顯示信息2MOVA,#2;顯示在第二行CALLLCD_SHOWRET;INFO1:DB" CYMOMETER ",0;LCD第一行顯示信息INFO2:DB"FREQ:HZ",0;LCD第二行顯示信息;;LCD接初始化;8位I/O控制;INIT_LCD:MOVA,#38H;雙列顯示,字形5*7點陣CALLWCOMCALLDELAY1MOVA,#38H;雙列顯示,字形5*7點陣CALLWCOMCALLDELAY1MOVA,#38H;雙列顯示,字形5*7點陣CALLWCOMCALLDELAY1MOVA,#0CH;開顯示,關(guān)光標(biāo),CALLWCOMCALLDELAY1MOVA,#01H;清除LCD顯示屏CALLWCOMCALLDELAY1RET;LCD_SHOW: ;在LCD的第一行或第二行顯示信息字符CJNEA,#1,LINE2;判斷是否為第一行LINE1:MOVA,#80H;設(shè)置LCD的第一行地址CALLWCOM;寫入命令CALLCLR_LINE;清除該行字符數(shù)據(jù)MOVA,#80H;設(shè)置LCD的第一行地址CALLWCOM;寫入命令JMPFILLLINE2:MOVA,#0C0H;設(shè)置LCD的第二行地址CALLWCOM;寫入命令CALLCLR_LINE;清除該行字符數(shù)據(jù)MOVA,#0C0H;設(shè)置LCD的第二行地址CALLWCOMFILL:CLRA;填入字符MOVCA,@A+DPTR;由消息區(qū)取出字符CJNEA,#0,LC1;判斷是否為結(jié)束碼RETLC1:CALLWDATA;寫入數(shù)據(jù)INCDPTR;指針加1JMPFILL;繼續(xù)填入字符RET,CLR_LINE:;清除該行LCD的字符MOVR0,#24CL1:MOVA,#’’CALLWDATADJNZR0,CL1RET,;寫指令、數(shù)據(jù)使能子程序;ENABLE: ;寫指令使能CLRLCD_RS;RS=L,LCD_RW=L,D0-D7指*令碼,E=高脈沖CLRLCD_RWSETBLCD_ENCALLDELAY0CLRLCD_ENRETENABLE1:

SETBCLRSETB

;寫數(shù)據(jù)使能LCD_RS;RS=H,RW=L,D0-D7=S據(jù),E=高脈沖LCD_RWLCD_ENCALLDELAY0CLRLCD_ENRETDELAY0:MOVR7,#250DJNZR7,$RET;;寫入命令子程序;WCOM:P0,AMOVENABLECALLRET;;寫入數(shù)據(jù)子程序;WDATA:P0,AMOVENABLE1CALL;RET;在LCD第二行顯示字符;A=ASCDATA,B=LINEXPOS;-LCDP2:PUSHACCMOVA,BA,#0C0HADDCALLWCOMACCWDATAPOPCALLRET;

;延時5微秒;以8位控制方式將命令寫至LCD;寫入命令;以8位控制方式將數(shù)據(jù)寫至LCD;寫入數(shù)據(jù);在;LCD的第二行顯示字符;設(shè)置顯示地址;設(shè)置LCD的第二行地址;寫入命令;由堆棧取出A;寫入數(shù)據(jù);ASCII轉(zhuǎn)換并在第二行顯示數(shù)字子程序;CONV: ;MOV A,T_GMOV LCD_X,#6 ;設(shè)置位置;CALLSHOW_DIG2,MOV A,T_H;INCLCD_X ;加載小時數(shù)據(jù)CALL SHOW_DIG2 ;顯示數(shù)據(jù)MOV A,T_M ;加載分鐘數(shù)據(jù)INCLCD_X ;設(shè)置位置;SHOW_DIG2:;DELAY1:

CALLMOVINCCALLRETMOVDIVADDPUSHMOVCALLPOPMOVADDINCMOVCALLRET

SHOW_DIG2A,T_SLCD_XSHOW_DIG2B,#16ABA,#30HBB,LCD_XLCDP2BA,BA,#30HLCD_XB,LCD_XLCDP2

;顯示數(shù)據(jù);加載秒數(shù)數(shù)據(jù);設(shè)置位置;顯示數(shù)據(jù)--;延時3MSD2: MOVR6,#15MOVR7,#1DJNZR7,$DJNZR6,D2RET;/----舊出;設(shè)置定時器0工作在定時方式1,定時器1工作在計數(shù)方式1;MOVTMOD,#0D1HTIM_T0:MOVTH0,TIMER_HMOVTL0,TIMER_LMOVTH1,#HMOVTL1,#HMOVIE,#8AHSETBPT1SETBTR1SETBTR0RET;淀時器0中斷服務(wù)程序;TIMER_INT:

;設(shè)置定時初值高位;設(shè)置定時初值低位;清計數(shù)器;開中斷總允許,允許T0溢出中斷;定時器開始工作CLRTR0;關(guān)閉定時器MOVTL0,TIMER_L;重新賦初值MOVTH0,TIMER_H;INCTIMCOUNT;定時1S,時間單位MOVA,TIMCOUNT;查看數(shù)量值CPLP1.4;產(chǎn)生自測信號CJNE;A,#20,T_END;如果沒有到1S返回CLRTR1;關(guān)閉計數(shù)器T1MOVTIMCOUNT,#H;到1S則清零MOVINT_L,TL1;取出計數(shù)值低位MOVINT_H,TH1;取出計數(shù)值高位MOVINT_G,2AH;取出溢出計數(shù)值位MOVTH1,#HMOVTL1,#HMOV2AH,#HSETBTR1T_END:SETBTR0;重新開始定時操作RETI;;三字節(jié)二進(jìn)制整數(shù)轉(zhuǎn)換成四字節(jié)BCD碼子程序;二進(jìn)制數(shù)從低位到高位分別存放在INT_LINT_H、INT_G單元中;BCD碼從低位到高位分別存放在T_S、T_M、T_H、T_G單元中;SBIN_SBCD:PUSHPSWSETBPSW.3;設(shè)置當(dāng)前寄存器CLRPSW.4CLRA;清累加器MOVT_G,AMOVT_H,A;清除出單元,準(zhǔn)備轉(zhuǎn)換MOVT_M,AMOVT_S,AMOV R5,INT_GMOV R7,INT_L;設(shè)置二進(jìn)制數(shù)起始地址MOV R6,INT_HMOV R2,#24CLRCHH1:MOV A,R7RLCAMOV R7,AMOVA,R6RLCAMOVR6,AMOVA,R5RLCAMOVR5,AMOVA,T_S

;得到低位數(shù)據(jù)ADDCA,T_S

溫馨提示

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

評論

0/150

提交評論