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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 144|回復: 2
打印 上一主題 下一主題
收起左側

各位大佬看看這個程序是啥問題,現在12864不顯示,硬件沒有問題 歡迎指導

[復制鏈接]
跳轉到指定樓層
樓主
ID:604763 發表于 2025-4-15 10:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
12864做顯示屏,串口顯示,定義P0.7,RS;P0.6,RW;P0.5,E;P0.4PSB;P0.3,RST。P1.0加熱繼電器,P1.1電機正轉,P1.2電機反轉,P1.3進水電磁閥,P1,4排水,P1.5門鎖,定義P3.2為程序鍵(短按切換清洗和燙染程序長按設置工作時間,電機旋轉時間,溫度,燙染是否排水),p3,3為加鍵,p3.2為減鍵,p3.5為啟動暫停鍵。p3.0,為水位開關鍵,p3.7接18b20溫度傳感器,程序可以選擇(燙染/清洗),燙染(進水,加熱,攪拌,排水)
清洗(進水,攪拌,排水)

設置的參數要保存

各位大佬看看這個程序是啥問題,現在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;  ; 電機正轉
sbit Motor_Reverse = P1^2; ; 電機反轉
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;

; 定義狀態和參數變量
STATUS EQU 30H      ; 工作狀態,0:待機,1:清洗,2:燙染
WORK_TIME EQU 31H    ; 工作時間
MOTOR_TIME EQU 32H  ; 電機旋轉時間
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        ; 結束復位
    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 寫數據
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 保存參數(實際可使用外部 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 讀取參數(實際可使用外部 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:
        ; 進入參數設置模式,此處省略具體設置代碼
        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
    ; 待機狀態
    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

; 簡單延時函數
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

; 較長時間延時函數
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
    ; 接收數據處理
    CLR RI
    SJMP SERIAL_EXIT
SEND_DATA:
    ; 發送數據處理
    CLR TI
SERIAL_EXIT:
    POP PSW
    POP ACC
    RETI

; 模擬 EEPROM 地址
PARAM_ADDR EQU 4000H

END



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

使用道具 舉報

沙發
ID:592807 發表于 2025-4-15 11:34 | 只看該作者
匯編語言啊,抱歉不會。用匯編寫代碼就要有自己解決問題的覺悟,匯編你操作的是寄存器地址,我們沒空去看你單片機的的地址。
回復

使用道具 舉報

板凳
ID:604763 發表于 2025-4-15 20:48 | 只看該作者
黃youhui 發表于 2025-4-15 11:34
匯編語言啊,抱歉不會。用匯編寫代碼就要有自己解決問題的覺悟,匯編你操作的是寄存器地址,我們沒空去看你 ...

好的,我明天用c寫個試試
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜av电影 | 午夜天堂精品久久久久 | 男人的天堂久久 | 羞羞视频免费观看入口 | 日韩视频区 | 国产精品高| 91亚洲免费 | 国产精品高潮呻吟久久av黑人 | 国产精品亚洲一区二区三区在线观看 | 国产精品国产精品国产专区不卡 | 三级在线观看 | 亚洲一区二区久久 | 天天精品在线 | 白浆在线 | 久久精品久久久久久 | 亚洲欧美在线视频 | 日韩精品免费在线观看 | 亚洲精品专区 | 久久久久国产一区二区三区四区 | av在线一区二区三区 | 欧美一区2区三区4区公司二百 | 国产一区二区电影网 | h片在线看 | 九九热免费视频在线观看 | 欧美一区二区三区在线 | 亚洲国产精品久久久 | 日韩av在线不卡 | 成人在线观看免费 | 亚洲一区不卡在线 | 最新超碰 | 男女免费观看在线爽爽爽视频 | 性色综合| 久久国产精品99久久久久久丝袜 | 北条麻妃99精品青青久久主播 | 亚洲一区二区免费视频 | 国产日韩一区二区三区 | 久久精品中文 | 国产一区二区三区四区 | www.久久精品视频 | 天天干天天爱天天操 | 欧美久操网 |