久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 各位大佬看看這個程序是啥問題,現(xiàn)在12864不顯示,硬件沒有問題 歡迎指導 [打印本頁]

作者: 鑫睿科技    時間: 2025-4-15 10:55
標題: 各位大佬看看這個程序是啥問題,現(xiàn)在12864不顯示,硬件沒有問題 歡迎指導
12864做顯示屏,串口顯示,定義P0.7,RS;P0.6,RW;P0.5,E;P0.4PSB;P0.3,RST。P1.0加熱繼電器,P1.1電機正轉(zhuǎn),P1.2電機反轉(zhuǎn),P1.3進水電磁閥,P1,4排水,P1.5門鎖,定義P3.2為程序鍵(短按切換清洗和燙染程序長按設置工作時間,電機旋轉(zhuǎn)時間,溫度,燙染是否排水),p3,3為加鍵,p3.2為減鍵,p3.5為啟動暫停鍵。p3.0,為水位開關鍵,p3.7接18b20溫度傳感器,程序可以選擇(燙染/清洗),燙染(進水,加熱,攪拌,排水)
清洗(進水,攪拌,排水)

設置的參數(shù)要保存

各位大佬看看這個程序是啥問題,現(xiàn)在12864不顯示,硬件沒有問題歡迎指導
; 定義 12864 引腳
sbit RS = P0^7;    ; 寄存器選擇引腳
sbit RW = P0^6;    ; 讀寫選擇引腳
sbit E = P0^5;     ; 使能引腳
sbit PSB = P0^4;   ; 并行/串行選擇引腳(設為并行)
sbit RST = P0^3;   ; 復位引腳

; 定義控制引腳
sbit Heating_Relay = P1^0;  ; 加熱繼電器
sbit Motor_Forward = P1^1;  ; 電機正轉(zhuǎn)
sbit Motor_Reverse = P1^2; ; 電機反轉(zhuǎn)
sbit Water_Intake = P1^3;  ; 進水電磁閥
sbit Water_Drain = P1^4;   ; 排水
sbit Door_Lock = P1^5;     ; 門鎖

; 定義按鍵引腳
sbit Program_Key = P3^2;   ; 程序鍵
sbit Inc_Key = P3^3;       ; 加鍵
sbit Dec_Key = P3^4;       ; 減鍵
sbit Start_Pause_Key = P3^5; ; 啟動暫停鍵
sbit Water_Level_Key = P3^0; ; 水位開關鍵

; 定義 18B20 引腳
sbit DS18B20 = P3^7;

; 定義狀態(tài)和參數(shù)變量
STATUS EQU 30H      ; 工作狀態(tài),0:待機,1:清洗,2:燙染
WORK_TIME EQU 31H    ; 工作時間
MOTOR_TIME EQU 32H  ; 電機旋轉(zhuǎn)時間
TEMP_SET EQU 33H    ; 設置溫度
DRAIN_FLAG EQU 34H  ; 燙染是否排水標志,0:不排水,1:排水

; 12864 命令
CLEAR_SCREEN EQU 00H
RETURN_HOME EQU 02H
ENTRY_MODE_SET EQU 04H
DISPLAY_CONTROL EQU 08H
CURSOR_SHIFT EQU 10H
FUNCTION_SET EQU 30H
SET_CGRAM_ADDR EQU 40H
SET_DDRAM_ADDR EQU 80H

; 串口相關定義
SMOD EQU 87H
REN EQU 99H
TI EQU 99H
RI EQU 98H

; 初始化 12864
INIT_12864:
    SETB PSB        ; 并行模式
    CLR RST         ; 復位
    CALL DELAY
    SETB RST        ; 結(jié)束復位
    MOV A, #FUNCTION_SET
    CALL WRITE_COMMAND_12864
    MOV A, #DISPLAY_CONTROL + 04H ; 顯示開,光標關
    CALL WRITE_COMMAND_12864
    MOV A, #ENTRY_MODE_SET + 02H ; 增量模式,不移動光標
    CALL WRITE_COMMAND_12864
    MOV A, #CLEAR_SCREEN
    CALL WRITE_COMMAND_12864
    RET

; 向 12864 寫命令
WRITE_COMMAND_12864:
    CLR RS
    CLR RW
    MOV P0, A
    SETB E
    CALL DELAY
    CLR E
    RET

; 向 12864 寫數(shù)據(jù)
WRITE_DATA_12864:
    SETB RS
    CLR RW
    MOV P0, A
    SETB E
    CALL DELAY
    CLR E
    RET

; 初始化串口
INIT_UART:
    MOV SCON, #50H  ; 工作方式 1,8 位異步,允許接收
    MOV TMOD, #20H  ; 定時器 1 工作方式 2
    MOV TH1, #0FDH  ; 波特率 9600
    MOV TL1, #0FDH
    SETB TR1
    SETB EA
    SETB ES
    RET

; 讀取 18B20 溫度(簡化,實際需復雜時序)
READ_DS18B20:
    ; 此處省略 18B20 讀取時序代碼
    RET

; 模擬 EEPROM 保存參數(shù)(實際可使用外部 EEPROM)
SAVE_PARAMETERS:
    MOV DPTR, #PARAM_ADDR
    MOV A, WORK_TIME
    MOVX @DPTR, A
    INC DPTR
    MOV A, MOTOR_TIME
    MOVX @DPTR, A
    INC DPTR
    MOV A, TEMP_SET
    MOVX @DPTR, A
    INC DPTR
    MOV A, DRAIN_FLAG
    MOVX @DPTR, A
    RET

; 模擬 EEPROM 讀取參數(shù)(實際可使用外部 EEPROM)
LOAD_PARAMETERS:
    MOV DPTR, #PARAM_ADDR
    MOVX A, @DPTR
    MOV WORK_TIME, A
    INC DPTR
    MOVX A, @DPTR
    MOV MOTOR_TIME, A
    INC DPTR
    MOVX A, @DPTR
    MOV TEMP_SET, A
    INC DPTR
    MOVX A, @DPTR
    MOV DRAIN_FLAG, A
    RET

; 按鍵掃描及處理
KEY_SCAN:
    MOV A, P3
    ANL A, #0FCH  ; 屏蔽無關位
    CJNE A, #0FCH, KEY_PRESSED
    RET

KEY_PRESSED:
    CALL DELAY
    MOV A, P3
    ANL A, #0FCH
    CJNE A, #0FCH, KEY_HANDLING
    RET

KEY_HANDLING:
    JB Program_Key, CHECK_OTHER_KEYS
    LCALL DELAY_LONG  ; 檢測長按
    MOV A, P3
    ANL A, #0FCH
    CJNE A, #0FCH, LONG_PRESS_PROGRAM_KEY
    SHORT_PRESS_PROGRAM_KEY:
        MOV A, STATUS
        CJNE A, #0, CHECK_STATUS_1
        MOV STATUS, #1  ; 切換到清洗
        SJMP KEY_EXIT
CHECK_STATUS_1:
        CJNE A, #1, CHECK_STATUS_2
        MOV STATUS, #2  ; 切換到燙染
        SJMP KEY_EXIT
CHECK_STATUS_2:
        MOV STATUS, #0  ; 切換到待機
        SJMP KEY_EXIT
    LONG_PRESS_PROGRAM_KEY:
        ; 進入?yún)?shù)設置模式,此處省略具體設置代碼
        SJMP KEY_EXIT

CHECK_OTHER_KEYS:
    JB Inc_Key, CHECK_DEC_KEY
    ; 加鍵處理
    MOV A, WORK_TIME
    ADD A, #1
    MOV WORK_TIME, A
    SJMP KEY_EXIT
CHECK_DEC_KEY:
    JB Dec_Key, CHECK_START_PAUSE_KEY
    ; 減鍵處理
    MOV A, WORK_TIME
    CLR C
    SUBB A, #1
    MOV WORK_TIME, A
    SJMP KEY_EXIT
CHECK_START_PAUSE_KEY:
    JB Start_Pause_Key, CHECK_WATER_LEVEL_KEY
    ; 啟動暫停鍵處理
    SJMP KEY_EXIT
CHECK_WATER_LEVEL_KEY:
    JB Water_Level_Key, KEY_EXIT
    ; 水位開關鍵處理
    SJMP KEY_EXIT

KEY_EXIT:
    RET

; 主程序
MAIN:
    CALL INIT_12864
    CALL INIT_UART
    CALL LOAD_PARAMETERS

MAIN_LOOP:
    CALL KEY_SCAN
    MOV A, STATUS
    CJNE A, #0, CHECK_WORK_STATUS
    ; 待機狀態(tài)
    SJMP MAIN_LOOP

CHECK_WORK_STATUS:
    CJNE A, #1, CHECK_TANG_RAN
    ; 清洗程序
    SETB Water_Intake
    CALL DELAY
    CLR Water_Intake
    SETB Motor_Forward
    CALL DELAY
    CLR Motor_Forward
    SETB Water_Drain
    CALL DELAY
    CLR Water_Drain
    SJMP MAIN_LOOP

CHECK_TANG_RAN:
    ; 燙染程序
    SETB Water_Intake
    CALL DELAY
    CLR Water_Intake
    SETB Heating_Relay
    CALL DELAY
    CLR Heating_Relay
    SETB Motor_Forward
    CALL DELAY
    CLR Motor_Forward
    JB DRAIN_FLAG, DRAIN_TANG_RAN
    SJMP MAIN_LOOP
DRAIN_TANG_RAN:
    SETB Water_Drain
    CALL DELAY
    CLR Water_Drain
    SJMP MAIN_LOOP

; 簡單延時函數(shù)
DELAY:
    MOV R5, #250
DELAY_LOOP1:
    MOV R6, #250
DELAY_LOOP2:
    MOV R7, #250
DELAY_LOOP3:
    DJNZ R7, DELAY_LOOP3
    DJNZ R6, DELAY_LOOP2
    DJNZ R5, DELAY_LOOP1
    RET

; 較長時間延時函數(shù)
DELAY_LONG:
    MOV R4, #100
DELAY_LONG_LOOP1:
    MOV R5, #250
DELAY_LONG_LOOP2:
    MOV R6, #250
DELAY_LONG_LOOP3:
    MOV R7, #250
DELAY_LONG_LOOP4:
    DJNZ R7, DELAY_LONG_LOOP4
    DJNZ R6, DELAY_LONG_LOOP3
    DJNZ R5, DELAY_LONG_LOOP2
    DJNZ R4, DELAY_LONG_LOOP1
    RET

; 串口中斷服務程序
SERIAL_ISR:
    PUSH ACC
    PUSH PSW
    JNB RI, SEND_DATA
    ; 接收數(shù)據(jù)處理
    CLR RI
    SJMP SERIAL_EXIT
SEND_DATA:
    ; 發(fā)送數(shù)據(jù)處理
    CLR TI
SERIAL_EXIT:
    POP PSW
    POP ACC
    RETI

; 模擬 EEPROM 地址
PARAM_ADDR EQU 4000H

END




作者: 黃youhui    時間: 2025-4-15 11:34
匯編語言啊,抱歉不會。用匯編寫代碼就要有自己解決問題的覺悟,匯編你操作的是寄存器地址,我們沒空去看你單片機的的地址。
作者: 鑫睿科技    時間: 2025-4-15 20:48
黃youhui 發(fā)表于 2025-4-15 11:34
匯編語言啊,抱歉不會。用匯編寫代碼就要有自己解決問題的覺悟,匯編你操作的是寄存器地址,我們沒空去看你 ...

好的,我明天用c寫個試試
作者: tyrl800    時間: 2025-4-16 10:16
兩個子程序,寫命令和寫數(shù)據(jù)都錯誤,用串行顯示,不是這樣寫




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲激情视频在线观看 | 国产一区二区网站 | 在线日韩欧美 | 伊人超碰在线 | 一级片免费在线观看 | 免费在线观看黄 | 国产黄网| 91亚洲一区| 免费成人毛片 | 亚洲精品成人在线 | 一级特黄aaaaaa大片 | 久久久免费观看 | 日韩有码在线视频 | 色妞网 | 亚洲精品国产精品国自产观看浪潮 | 一级免费片 | 水蜜桃一区二区 | 夜夜草av | 亚洲精品黄 | 国产精品主播一区二区 | 日韩欧美一区二区三区久久婷婷 | 亚洲综合精品 | 精品少妇一区二区三区免费观 | 曰韩av| 国产成人精品网站 | 99只有精品 | 全部免费毛片在线播放高潮 | 麻豆精品久久 | 男男巨肉啪啪动漫3d | 日韩精品视频免费播放 | 亚洲国产日韩在线 | 国产精品xxx在线观看 | 女人av在线 | 色综合天天综合网国产成人网 | 欧美午夜精品 | 国产丝袜视频 | a毛片大片 | 天天综合永久入口 | 青青操影院 | 亚洲青涩 | 天天色影院 |