找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5809|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[原創(chuàng)]低成本SN單片機(jī)I/O直驅(qū)LCD實(shí)戰(zhàn)--源程序1

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:27770 發(fā)表于 2011-1-17 16:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

低成本  SN8P2624  I/O 直接驅(qū)動(dòng) LCD 液晶屏幕:
完整的源程序如下:
/*;****************************************************
SN2624 單片機(jī)IO口直接驅(qū)動(dòng)LCD 試驗(yàn)程序
;****************************************************/
/* Compile ...2007-12-21 5:30
E:\07_SN\2604_24\IOLCD\IOLCD.ASM
Link ...
EPROM Check Sum is CF63.
Security Check Sum is 6493.
Chip SN8P2624 has maximum program ROM size : 2044
The program has used size : 381 [0x17D]
The program remain free size : 1663 for use
利用單片機(jī)IO口驅(qū)動(dòng)3位LCD已經(jīng)成功!
*/
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
CHIP            SN8P2624
//{{SONIX_CODE_OPTION
        .Code_Option    Noise_Filter    Enable
        .Code_Option    Reset_Pin       P02
        .Code_Option    Watch_Dog       Disable         ; Disable Watchdog
        .Code_Option    High_Clk        12M_X'tal       ; Crystal/Resonator: 10Mhz~16Mhz
        .Code_Option    Fcpu            #2     ; Fcpu = Fosc/4
        .Code_Option    Security        Enable
//}}SONIX_CODE_OPTION
;=====================================
.NOLIST
        INCLUDE         e:\07_sn\xsdzmacro.H
        INCLUDE         e:\07_sn\snmacrox3.h
;       INCLUDE         E:\07_SN\2604_24\IOLCD\IOLCD_0.ASM
.LIST
;===============================================
.DATA
HIH     DS      1
HIL     DS      1
LOH     DS      1;/滯后,回差
LOL     DS      1;/滯后,回差
TZ0D    DS      1
DP      DS      1
XISCH   DS      1;/AD 系數(shù)
XISCL   DS      1

XISH    DS      1;/AD 系數(shù)
XISL    DS      1

SZ03S   DS      1
SZ05S   DS      1
KEYJS   DS      1
KEY10S  DS      1;按鍵退出時(shí)間

XSQW    DS      1
XSBW    DS      1 ;顯示數(shù)碼管寄存器
XSSW    DS      1
XSGW    DS      1

TQW     DS      1
TBW     DS      1
TSW     DS      1
TGW     DS      1
JJJS    DS      1

JS0D    DS      1;測(cè)量零點(diǎn)計(jì)數(shù)

TESS    DS      1
TESH    DS      1
TESL    DS      1
ADJS    DS      1

ADH     DS      1
ADL     DS      1

GNDH    DS      1
GNDL    DS      1
VINL    DS      1
VINH    DS      1
VINS    DS      1
VREL    DS      1
VREH    DS      1
VRES    DS      1
XSH     DS      1
XSL     DS      1
DVL     DS      1 ;低溫顯示寄存器
DVH     DS      1
;-------------------------
TEMP0   DS      1
TEMP    DS      1
XSJS    DS      1
CLJS    DS      1
TTH     DS      1
TTL     DS      1
JS00    DS      1
SEG0H   DS      1;寫入LCD數(shù)據(jù)
SEG1H   DS      1
SEG2H   DS      1
SEG0    DS      1;寫入LCD數(shù)據(jù)
SEG1    DS      1
SEG2    DS      1
LCDJS   DS      1

ARD24   DS      1;讀寫地址
RE24    DS      1;讀出數(shù)據(jù)
WR24    DS      1;寫入數(shù)據(jù)

SFL     DS      1
SFL0    DS      1
SFL1    DS      1
SFL2    DS      1
;------------------------------
FSS05S  EQU     SFL.0
FK03S   EQU     SFL.1
F_DIS   EQU     SFL.2
FK05S   EQU     SFL.3
F_ENOUT EQU     SFL.4
FADCL   EQU     SFL.5
F_01    EQU     SFL.6
FADZH   EQU     SFL.7

FADAB   EQU     SFL0.0
FK2S    EQU     SFL0.1
FM00    EQU     SFL0.2
FVIN    EQU     SFL0.3
FVINX2  EQU     SFL0.4
Fdataxt EQU     SFL0.5;/數(shù)據(jù)相同
F_READ  EQU     SFL0.6 ;AD讀數(shù)通知
F_CLKS  EQU     SFL0.7;測(cè)量開始標(biāo)志

FHHH    EQU     SFL1.0
FWR24C  EQU     SFL1.1
F24CZ   EQU     SFL1.2
FSETXS  EQU     SFL1.3;/設(shè)置系數(shù)
FPSD    EQU     SFL1.4;設(shè)定鍵標(biāo)志
F_TZ0D  EQU     SFL1.5
FLLL    EQU     SFL1.6
;------------------------------
;引腳定義
;HC4051控制
PHA             EQU     FP16
PHB             EQU     FP17
;10P.充放電電,設(shè)置為開漏輸出
P_CFD           EQU     FP10
;數(shù)碼管驅(qū)動(dòng)
P_QW            EQU     FP54
P_BW            EQU     FP51
P_SW            EQU     FP50
P_GW            EQU     FP52
;電存儲(chǔ)器
P_24SDA         EQU     FP14;數(shù)據(jù)--------可能與印刷板反了
P_24SDAM        EQU     FP14M
P_24SCL         EQU     FP15; 時(shí)鐘
P_24SCLM        EQU     FP15M
;按鍵
PSD     EQU     FP02;/28P
PADD    EQU     FP11;/11P
PDEC    EQU     FP12;/12P
;控制輸出
POUT0   EQU     FP13;/13P
POUT1   EQU     FP53;/9P
;=====================================
.CODE
        ORG     0       ;代碼起始處
        JMP     RESET   ;復(fù)位向量;地址4至7為保留
        ORG     8
        JMP     ISR     ;中斷向量
        ORG     10H
;=========================================
LED_TABLE:
        B0MOV   Y,#TABLELED$M
        B0MOV   Z,#TABLELED$L
B_ADDZ:
        ADD     Z,A
        BTS0    FC ; 檢查進(jìn)位標(biāo)志C
        INCMS   Y
        NOP
        MOVC
        RET
TABLELED:;b,a,f,c,g,e,h,d----d 后有一個(gè)圖標(biāo)位----0=點(diǎn)亮
        DW      000010101B      ;0 /b,a,f,g,c,e,h,d----d 后有一個(gè)圖標(biāo)位
        DW      011011111B      ;1
        DW      001100101B      ;2
        DW      001001101B      ;3
        DW      010001111B      ;4
        DW      100001101B      ;5
        DW      100000101B      ;6
        DW      001011111B      ;7
        DW      000000101B      ;8 ;b,a,f,c,g,e,h,d----d 后有一個(gè)圖標(biāo)位
        DW      000001101B      ;9
        DW      111111111B      ;滅 10
        DW      010000111B      ;H  11
        DW      110110101B      ;L  12
        DW      111101111B      ;-  13
;======================================================
;SN8P2624:[;OTP ROM : 2K*16 bits.;RAM : 64*8 bits.]
;SN8P2604:[;OTP ROM : 4K*16 bits.;RAM : 128*8 bits.]
RESET:;重置
        MOV     A,#07FH ;初始化堆棧指針和
        B0MOV   STKP,A  ;禁止全局中斷
        CLR     PFLAG   ;PFLAG = X,X,X,X,X,C,DC,Z
        MOV     A,#00H  ;初始化系統(tǒng)模式
        B0MOV   OSCM,A
        @RST_WDT        ; 清看門狗計(jì)數(shù)器
CLRRAM:;清除 RAM
        CLR     Y
        B0MOV   Z,#3FH ;2624=64
;       B0MOV   Z,#080H ;2604=128,這里出現(xiàn)錯(cuò)誤會(huì)造成上電有直接進(jìn)入狀態(tài)的情況
CLRRAM0:
        CLR     @YZ
        DECMS   Z
        JMP     CLRRAM0
        CLR     @YZ
;**************************************
; 系統(tǒng)初始化程序,; 初始化I/O, 定時(shí)器,中斷等
SYSINIT:
        MOV     A,#00H
        MOV     P0M,A
        MOV     P5,A
        MOV     A,#0FFH ; 使能P0、P1、P2、P5 口的上拉電阻,

        MOV     P2M,A;全部輸出
        MOV     P2,A
        MOV     P1,A
        MOV     A,#00H
        MOV     P1M,A
        MOV     P5M,A;全部輸出
        BSET    FP50M
        MOV     A,#0FFH
;       B0MOV   P1UR,A ;作為COM端口不能上拉!
        B0MOV   P2UR,A
        B0MOV   P5UR,A
        B0MOV   P0UR,A ;
;初始化TC1
        B0BCLR  FTC1IEN ; 禁止TC1 中斷
        B0BCLR  FTC1ENB ; 停止TC1 計(jì)數(shù)
        MOV     A,#70H ;最快速度
;       MOV     A,#60H ;最快速度,太快不穩(wěn)
;       MOV     A,#50H ;最快速度,太快不穩(wěn)
        B0MOV   TC1M,A ; TC1 定時(shí)模式Fcpu/2
        MOV     A,#00 ;TC1 初始值
        ;+5V:20R,12M晶體/4=62.4KHZ,產(chǎn)生 -5.04V電壓
        B0MOV   TC1C,A ; 定時(shí)中斷為10ms
        B0MOV   TC1R,A
        B0BCLR  FTC1IRQ ; 清中斷標(biāo)志
        B0BSET  FALOAD1;使能 TC1自動(dòng)重裝功能
;       B0BSET  FTC1ENB ; 開始TC1 計(jì)數(shù)
;       B0BSET  FTC1OUT;使能 TC1 輸出到 P5.3和禁止P5.3 I/O 功能
;初始化T0
        B0BCLR FT0IEN   ;關(guān)TC1中斷
        B0BCLR FT0ENB   ;關(guān)TC1計(jì)數(shù)模式
        B0BCLR FT0IRQ   ;清TC1中斷申請(qǐng)

        MOV     A,#00H ;編譯選項(xiàng)16/4=4.0MHZ
;       MOV     A,#20H ;編譯選項(xiàng)12/4=3.0MHZ
        MOV     T0M,A;盡量使用最長(zhǎng)的中斷間隔
        MOV_    T0C,#00;/131
        B0BSET  FT0IEN  ;使能TC1中斷
        B0BCLR  FT0IRQ  ;清TC1中斷申請(qǐng)
        B0BSET  FT0ENB  ;開TC1計(jì)時(shí)器
        BSET    F_DIS
        BSET    FGIE            ;總中斷使能
;============================================================
B_LOOP:;1,2,;顯示1,2,的SEG0對(duì)應(yīng)筆段,0=點(diǎn)亮,a4 是千位的筆段.....
/*      MOV_    SEG0,#11001011B;**b3,a3,f3,b4,a4,F4
        MOV_    SEG1,#11100011B;**c3,g3,e3,c4,g4,e4
        MOV_    SEG2,#11101111B;***,d3,*,*,d4,*
;需要3個(gè)表格,它們對(duì)應(yīng)某COM端口有效時(shí)的筆段代碼
;如果筆段超過8個(gè),還需要使用2個(gè)寄存器來轉(zhuǎn)移
;COM端口:由+5V經(jīng)過一幾百K電阻,再由GND經(jīng)過一幾百K電阻,構(gòu)成2.5V電平
;這個(gè)電平就是關(guān)閉筆段的電平.就是說,只要把端口設(shè)置為輸入模式,就會(huì)關(guān)閉所有筆段.
;筆段電平僅僅有0V和5V的選擇.
        */
;顯示4,7,5,的SEG0對(duì)應(yīng)筆段,0=點(diǎn)亮
;2007-12-20 18:44 成功顯示 475 3位數(shù)字
/*      MOV_    SEG0,#00001010B;P50-b2,   a2,f2,b3,a3,f3,b4,a4,f4
        BSET    SEG0H.0
        MOV_    SEG1,#01011001B;P50-C2,   g2,e2,c3,g3,e3,c4,g4,e4
        BCLR    SEG1H.0
        MOV_    SEG2,#01111111B;P50-LO,   d2,dp2,*,d3,*,*,d4,*
        BSET    SEG2H.0

        ;471
        MOV_    SEG0,#11001010B;P50-b2,   a2,f2,b3,a3,f3,b4,a4,f4
        BCLR    SEG0H.0
        MOV_    SEG1,#11011001B;P50-C2,   g2,e2,c3,g3,e3,c4,g4,e4
        BCLR    SEG1H.0
        MOV_    SEG2,#11111111B;P50-LO,   d2,dp2,*,d3,*,*,d4,*
        BSET    SEG2H.0

        ;411
        MOV_    SEG0,#11011010B;P50-b2,   a2,f2,b3,a3,f3,b4,a4,f4
        BCLR    SEG0H.0
        MOV_    SEG1,#11011001B;P50-C2,   g2,e2,c3,g3,e3,c4,g4,e4
        BCLR    SEG1H.0
        MOV_    SEG2,#11111111B;P50-LO,   d2,dp2,*,d3,*,*,d4,*
        BSET    SEG2H.0

        JMP     B_LOOP
                */
        BTS1    FK03S
        JMP     B_LOOP
        BCLR    FK03S
        BCLR    FGIE            ;總中斷使能
        MOV_    XSBW,#1
        MOV_    XSSW,#9
        MOV_    XSGW,#1;1X2X3X4X,0,5,6_OK,7X,8,9_OK,

        CLR     SEG0
        CLR     SEG1
        CLR     SEG2
        CLR     SEG0H
        CLR     SEG1H
        CLR     SEG2H

        MOV     A,XSGW
        CALL    LED_TABLE
        CALL    B_MOV8W

        MOV     A,XSSW
        CALL    LED_TABLE
        CALL    B_MOV8WA

        MOV     A,XSBW
        CALL    LED_TABLE
        CALL    B_MOV8WA
        BSET    FGIE            ;總中斷使能
        JMP     B_LOOP

(未完待續(xù))

 

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表