<strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

      <b id="0toem"><menuitem id="0toem"></menuitem></b>
    1. <code id="0toem"><abbr id="0toem"></abbr></code>
      <strong id="0toem"><dl id="0toem"></dl></strong>
      <kbd id="0toem"></kbd>
              1. <code id="0toem"></code>
                <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                <th id="0toem"></th>
              2. 131 1300 0010
                其他
                當前位置: 首頁>> 元件技術>>其他>>
              3. 導航欄目
              4. 二極管
              5. 整流橋
              6. MOS管
              7. 其他
              8. 51單片機對602LCD顯示器的驅動設計
                51單片機對602LCD顯示器的驅動設計
              9. 51單片機對602LCD顯示器的驅動設計
              10.   發(fā)布日期: 2019-05-27  瀏覽次數(shù): 1,408

                ;硬件連接:1602LCD顯示000000Hz短接p1.4--p3.5則顯示0000010hz

                ;LCD1602顯示在不增加外部計數(shù)硬件的情況下,本試驗軟件可測最高頻率達到460KHz

                 

                ;工作原理:

                ;1S 鐘內對輸入脈沖所計數(shù)的次數(shù)則為頻率值。

                ;16位二進制加法計數(shù)器的最大計數(shù)值為 65535。

                ;設置定時器 0 工作在定時方式1,定時1S。

                ;設置定時器 1 工作在計數(shù)方式1,對輸入脈沖進行計數(shù),溢出產(chǎn)生中斷。

                ;將定時器 1中斷定義為優(yōu)先。在中斷處理程序里對中斷次數(shù)進行計數(shù)。1S到后,

                ;將中斷次數(shù)和計數(shù)器里的計數(shù)值取出進行綜合數(shù)據(jù)處理,處理后的數(shù)據(jù)送LCD1602顯示?

                51單片機對602LCD顯示器的驅動設計

                ;信號來源:

                ;1、軟件里對 P1.4定時取反,形成輸出脈沖,接到 P3.5 可自測。

                ; 顯示結果:P1.4 → P3.5 顯示: 000010 (Hz)

                ;如果有條件的話,可使用專用設備(信號發(fā)生器和頻率計)進行校正。

                ;頻率計的程序

                ;包含:外部中斷設置,中斷服務程序,定時程序,定時服務程序

                ;以及數(shù)據(jù)處理,顯示,包括 三位十進制數(shù)轉化為四位BCD碼,

                ;------------------------------------------------------------

                BEEPBITP3.7

                LCD_RSBITP2.0

                LCD_RWBITP2.1

                LCD_ENBITP2.2

                LCD_XEQU3FH;LCD地址變量

                TIMER_HEQU30H;定時器高位字節(jié)單元

                TIMER_LEQU31H;定時器低位字節(jié)單元

                TIMCOUNTEQU32H;時間中斷數(shù)

                INT_GEQU35H;中斷計數(shù)緩沖單元高地址

                INT_HEQU34H;中斷計數(shù)緩沖單元中地址

                INT_LEQU33H;中斷計數(shù)緩沖單元低地址

                T_SEQU36H;數(shù)據(jù)顯示低位

                T_MEQU37H;數(shù)據(jù)顯示中位

                T_HEQU38H;數(shù)據(jù)顯示高位

                T_GEQU39H;數(shù)據(jù)顯示最高位

                ;----------------------------------------------------------

                ORG0000H

                JMPMAIN;主程序開始

                ORG000BH

                JMPTIMER_INT;定時器T0中斷服務程序

                ORG001BH;定時器T1中斷服務程序

                JMPTIMER1

                ORG0030H

                ;----------------------------------------------------------

                MAIN:

                MOVSP,#60H;設置SP指針

                LCALLPRO_SET;初始化

                CALLSET_LCD

                LCALLTIM_T0

                ;-----------------------------------------------------------

                ;LCD1602是慢速顯示器件,故100MS顯示一次。

                ;-----------------------------------------------------------

                MAIN1:

                MOVR5,40

                MAIN2:

                ACALLDELAY1;3ms

                DJNZR5,MAIN2

                ACALLSBIN_SBCD

                CALLCONV

                JMPMAIN1

                ;------------------------------------------------------------

                ;T1計數(shù)器中斷服務子程序

                ;計T1計數(shù)器溢出次數(shù)

                ;------------------------------------------------------------

                TIMER1:

                INC2AH

                RETI

                ;------------------------------------------------------------

                ;初始化程序

                ;------------------------------------------------------------

                PRO_SET:MOVA,#00H

                MOVB,#00H

                MOV2AH,A

                MOVP0,#0FFH

                MOVP1,#0FFH

                MOVP2,#0FFH

                MOVINT_H,#00H

                MOVINT_L,#00H

                MOVINT_G,#00H

                MOVT_S,#00H

                MOVT_H,#00H

                MOVT_M,#00H

                MOVT_G,#00H

                MOVTIMCOUNT,#00H

                MOVTIMER_H,#04CH;定時50MS

                MOVTIMER_L,#10H;

                CLRBEEP

                SETBP3.5;P3.5端口置輸入狀態(tài)

                RET;T1(TIMER1的外部輸入腳)

                ;-----------------------------------------------------

                ;LCD初始化設置

                ;-----------------------------------------------------

                SET_LCD:

                CLRLCD_EN

                CALLINIT_LCD;初始化LCD

                CALLDELAY1

                MOVDPTR,#INFO1;指針指到顯示信息1

                MOVA,#1;顯示在第一行

                CALLLCD_SHOW

                MOVDPTR,#INFO2;指針指到顯示信息2

                MOVA,#2;顯示在第二行

                CALLLCD_SHOW

                RET

                ;-----------------------------------------------------

                INFO1:DB“CYMOMETER”,0;LCD第一行顯示信息

                INFO2:DB“FREQ:HZ”,0;LCD第二行顯示信息

                ;-----------------------------------------------------

                ;LCD接口初始化

                ;8位I/O控制

                ;-----------------------------------------------------

                INIT_LCD:

                MOVA,#38H;雙列顯示,字形5*7點陣

                CALLWCOM

                CALLDELAY1

                MOVA,#38H;雙列顯示,字形5*7點陣

                CALLWCOM

                CALLDELAY1

                MOVA,#38H;雙列顯示,字形5*7點陣

                CALLWCOM

                CALLDELAY1

                MOVA,#0CH;開顯示,關光標,

                CALLWCOM

                CALLDELAY1

                MOVA,#01H;清除LCD顯示屏

                CALLWCOM

                CALLDELAY1

                RET

                ;----------------------------------------------------

                LCD_SHOW:;在LCD的第一行或第二行顯示信息字符

                CJNEA,#1,LINE2;判斷是否為第一行

                LINE1:MOVA,#80H;設置LCD的第一行地址

                CALLWCOM;寫入命令

                CALLCLR_LINE;清除該行字符數(shù)據(jù)

                MOVA,#80H;設置LCD的第一行地址

                CALLWCOM;寫入命令

                JMPFILL

                LINE2:MOVA,#0C0H;設置LCD的第二行地址

                CALLWCOM;寫入命令

                CALLCLR_LINE;清除該行字符數(shù)據(jù)

                MOVA,#0C0H;設置LCD的第二行地址

                CALLWCOM

                FILL:CLRA;填入字符

                MOVCA,@A+DPTR;由消息區(qū)取出字符

                CJNEA,#0,LC1;判斷是否為結束碼

                RET

                LC1:CALLWDATA;寫入數(shù)據(jù)

                INCDPTR;指針加1

                JMPFILL;繼續(xù)填入字符

                RET

                ;---------------------------------------------------

                CLR_LINE:;清除該行LCD的字符

                MOVR0,#24

                CL1:MOVA,#’’

                CALLWDATA

                DJNZR0,CL1

                RET

                ;-----------------------------------------------------

                ;寫指令、數(shù)據(jù)使能子程序

                ;-----------------------------------------------------

                ENABLE:;寫指令使能

                CLRLCD_RS;RS=L,LCD_RW=L,D0-D7=指令碼,E=高脈沖

                CLRLCD_RW

                SETBLCD_EN

                CALLDELAY0

                CLRLCD_EN

                RET

                ENABLE1:;寫數(shù)據(jù)使能

                SETBLCD_RS;RS=H,RW=L,D0-D7=數(shù)據(jù),E=高脈沖

                CLRLCD_RW

                SETBLCD_EN

                CALLDELAY0

                CLRLCD_EN

                RET

                DELAY0:MOVR7,#250;延時500微秒

                DJNZR7,$

                RET

                ;----------------------------------------------------

                ;寫入命令子程序

                ;----------------------------------------------------

                WCOM:;以8位控制方式將命令寫至LCD

                MOVP0,A;寫入命令

                CALLENABLE

                RET

                ;----------------------------------------------------

                ;寫入數(shù)據(jù)子程序

                ;----------------------------------------------------

                WDATA:;以8位控制方式將數(shù)據(jù)寫至LCD

                MOVP0,A;寫入數(shù)據(jù)

                CALLENABLE1

                RET

                ;---------------------------------------------------

                ;在LCD第二行顯示字符

                ;A=ASCDATA,B=LINEXPOS

                ;---------------------------------------------------

                LCDP2:;在LCD的第二行顯示字符

                PUSHACC;

                MOVA,B;設置顯示地址

                ADDA,#0C0H;設置LCD的第二行地址

                CALLWCOM;寫入命令

                POPACC;由堆棧取出A

                CALLWDATA;寫入數(shù)據(jù)

                RET

                ;-------------------------------------------------------

                ;ASCII轉換并在第二行顯示數(shù)字子程序

                ;-------------------------------------------------------

                CONV:;MOVA,T_G

                MOVLCD_X,#6;設置位置

                ;CALLSHOW_DIG2

                MOVA,T_H

                ;INCLCD_X;加載小時數(shù)據(jù)

                CALLSHOW_DIG2;顯示數(shù)據(jù)

                MOVA,T_M;加載分鐘數(shù)據(jù)

                INCLCD_X;設置位置

                CALLSHOW_DIG2;顯示數(shù)據(jù)

                MOVA,T_S;加載秒數(shù)數(shù)據(jù)

                INCLCD_X;設置位置

                CALLSHOW_DIG2;顯示數(shù)據(jù)

                RET

                ;----------------------------------------------------

                SHOW_DIG2:

                MOVB,#16

                DIVAB

                ADDA,#30H

                PUSHB

                MOVB,LCD_X

                CALLLCDP2

                POPB

                MOVA,B

                ADDA,#30H

                INCLCD_X

                MOVB,LCD_X

                CALLLCDP2

                RET

                ;-----------------------------------------------------

                DELAY1:;延時3MS

                MOVR6,#15

                D2:MOVR7,#100

                DJNZR7,$

                DJNZR6,D2

                RET

                ;-----------------定時器設置------------------------

                ;設置定時器0工作在定時方式1,定時器1工作在計數(shù)方式1

                ;---------------------------------------------------------

                TIM_T0:MOVTMOD,#0D1H

                MOVTH0,TIMER_H;設置定時初值高位

                MOVTL0,TIMER_L;設置定時初值低位

                MOVTH1,#00H;清T1計數(shù)器

                MOVTL1,#00H

                MOVIE,#8AH;開中斷總允許,允許T0溢出中斷

                SETBPT1

                SETBTR1

                SETBTR0;定時器開始工作

                RET

                ;--------------------------------------------------------

                ;定時器0中斷服務程序

                ;--------------------------------------------------------

                TIMER_INT:

                CLRTR0;關閉定時器

                MOVTL0,TIMER_L;重新賦初值

                MOVTH0,TIMER_H;

                INCTIMCOUNT;定時1S,時間單位

                MOVA,TIMCOUNT;查看數(shù)量值

                CPLP1.4;產(chǎn)生自測信號

                CJNEA,#20,T_END;如果沒有到1S返回

                CLRTR1;關閉計數(shù)器T1

                MOVTIMCOUNT,#00H;到1S則清零

                MOVINT_L,TL1;取出計數(shù)值低位

                MOVINT_H,TH1;取出計數(shù)值高位

                MOVINT_G,2AH;取出溢出計數(shù)值位

                MOVTH1,#00H

                MOVTL1,#00H

                MOV2AH,#00H

                SETBTR1

                T_END:SETBTR0;重新開始定時操作

                RETI

                ;---------------------------------------------------------------

                ;三字節(jié)二進制整數(shù)轉換成四字節(jié)BCD碼子程序

                ;二進制數(shù)從低位到高位分別存放在INT_L、INT_H、INT_G單元中

                ;BCD碼從低位到高位分別存放在T_S、T_M、T_H、T_G單元中

                ;---------------------------------------------------------------

                SBIN_SBCD:

                PUSHPSW

                SETBPSW.3;設置當前寄存器

                CLRPSW.4

                CLRA;清累加器

                MOVT_G,A

                MOVT_H,A;清除出口單元,準備轉換

                MOVT_M,A

                MOVT_S,A

                MOVR5,INT_G

                MOVR7,INT_L;設置二進制數(shù)起始地址

                MOVR6,INT_H

                MOVR2,#24

                CLRC

                HH1:

                MOVA,R7

                RLCA

                MOVR7,A

                MOVA,R6

                RLCA

                MOVR6,A

                MOVA,R5

                RLCA

                MOVR5,A

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

                ADDCA,T_S;累加

                DAA;十進制調整

                MOVT_S,A;保存數(shù)據(jù)

                MOVA,T_M;得到第二位數(shù)據(jù)

                ADDCA,T_M;累加

                DAA;十進制調整

                MOVT_M,A;保存結果

                MOVA,T_H;得到第三位

                ADDCA,T_H;累加

                DAA

                MOVT_H,A;保存

                MOVA,T_G;得到第四位

                ADDCA,T_G;累加

                ;DAA

                MOVT_G,A

                DJNZR2,HH1;

                POPPSW

                RET

                ;----------------------------------------------------------------

                END;告訴編譯器本程序到此結束。


              11. ·上一篇:
                ·下一篇:
              12. 其他關聯(lián)資訊
                深圳市日月辰科技有限公司
                地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
                電話:0755-2955 6626
                傳真:0755-2978 1585
                手機:131 1300 0010
                郵箱:[email protected]

                深圳市日月辰科技有限公司 版權所有:Copyright?2010-2023 www.xydibang.com 電話:13113000010 粵ICP備2021111333號
                <strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

                    <b id="0toem"><menuitem id="0toem"></menuitem></b>
                  1. <code id="0toem"><abbr id="0toem"></abbr></code>
                    <strong id="0toem"><dl id="0toem"></dl></strong>
                    <kbd id="0toem"></kbd>
                            1. <code id="0toem"></code>
                              <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                              <th id="0toem"></th>
                            2. 韩国三级HD中文久久车子 | 天天色天天干天天色 | 大香蕉福利视频 | 国产色婷婷精品综合在线 | 欧美精品成人一区二区在线观看 |