欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開(kāi)始

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

各位大佬看看這個(gè)程序是啥問(wèn)題,現(xiàn)在12864不顯示,硬件沒(méi)有問(wèn)題 歡迎指導(dǎo)

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

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

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

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

; 定義按鍵引腳
sbit Program_Key = P3^2;   ; 程序鍵
sbit Inc_Key = P3^3;       ; 加鍵
sbit Dec_Key = P3^4;       ; 減鍵
sbit Start_Pause_Key = P3^5; ; 啟動(dòng)暫停鍵
sbit Water_Level_Key = P3^0; ; 水位開(kāi)關(guān)鍵

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

; 定義狀態(tài)和參數(shù)變量
STATUS EQU 30H      ; 工作狀態(tài),0:待機(jī),1:清洗,2:燙染
WORK_TIME EQU 31H    ; 工作時(shí)間
MOTOR_TIME EQU 32H  ; 電機(jī)旋轉(zhuǎn)時(shí)間
TEMP_SET EQU 33H    ; 設(shè)置溫度
DRAIN_FLAG EQU 34H  ; 燙染是否排水標(biāo)志,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

; 串口相關(guān)定義
SMOD EQU 87H
REN EQU 99H
TI EQU 99H
RI EQU 98H

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

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

; 向 12864 寫(xiě)數(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  ; 定時(shí)器 1 工作方式 2
    MOV TH1, #0FDH  ; 波特率 9600
    MOV TL1, #0FDH
    SETB TR1
    SETB EA
    SETB ES
    RET

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

; 模擬 EEPROM 保存參數(shù)(實(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ù)(實(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  ; 屏蔽無(wú)關(guān)位
    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  ; 檢測(cè)長(zhǎng)按
    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  ; 切換到待機(jī)
        SJMP KEY_EXIT
    LONG_PRESS_PROGRAM_KEY:
        ; 進(jìn)入?yún)?shù)設(shè)置模式,此處省略具體設(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
    ; 啟動(dòng)暫停鍵處理
    SJMP KEY_EXIT
CHECK_WATER_LEVEL_KEY:
    JB Water_Level_Key, KEY_EXIT
    ; 水位開(kāi)關(guān)鍵處理
    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
    ; 待機(jī)狀態(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

; 簡(jiǎn)單延時(shí)函數(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

; 較長(zhǎng)時(shí)間延時(shí)函數(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

; 串口中斷服務(wù)程序
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



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

使用道具 舉報(bào)

沙發(fā)
ID:592807 發(fā)表于 2025-4-15 11:34 | 只看該作者
匯編語(yǔ)言啊,抱歉不會(huì)。用匯編寫(xiě)代碼就要有自己解決問(wèn)題的覺(jué)悟,匯編你操作的是寄存器地址,我們沒(méi)空去看你單片機(jī)的的地址。
回復(fù)

使用道具 舉報(bào)

板凳
ID:604763 發(fā)表于 2025-4-15 20:48 | 只看該作者
黃youhui 發(fā)表于 2025-4-15 11:34
匯編語(yǔ)言啊,抱歉不會(huì)。用匯編寫(xiě)代碼就要有自己解決問(wèn)題的覺(jué)悟,匯編你操作的是寄存器地址,我們沒(méi)空去看你 ...

好的,我明天用c寫(xiě)個(gè)試試
回復(fù)

使用道具 舉報(bào)

地板
ID:275826 發(fā)表于 2025-4-16 10:16 | 只看該作者
兩個(gè)子程序,寫(xiě)命令和寫(xiě)數(shù)據(jù)都錯(cuò)誤,用串行顯示,不是這樣寫(xiě)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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