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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機怎么讀HD44780里面的固有字符,匯編語言,軟件仿真

[復制鏈接]
跳轉到指定樓層
樓主
ID:708783 發表于 2020-3-31 09:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 BSq 于 2020-4-1 12:32 編輯

最近在學習LCD模塊,這個也是我用仿真軟件edsim51做的仿真,這個是顯示我寫在CGRAM的字符,如果顯示它的固有的符號(就是CGROM里面的字符怎么讀出來)比如顯示1,怎么改動?
源程序
; 初始化顯示
; 詳見指令集
CLR P1.3                  ; 清零寄存器選擇RS1為數據,0為命令/狀態)表示指令正在發送到模塊
; 功能設置
CLR P1.7                 ; |
CLR P1.6                 ; |
SETB P1.5         ; |
CLR P1.4                 ; | 高半字節P1.4-P1.7DL=18位數據接口;DL=04位數據

SETB P1.2         ; |
CLR P1.2                 ; | 使能信號E的下降沿

CALL delay         ; 等待忙標志BF清零
        ; 首次發送的函數集-告訴模塊進入4位模式
; 為什么函數集為高半字節發送兩次?見HD447804位操作
SETB P1.2         ; |
CLR P1.2                 ; | 使能信號E的下降沿
        ; 第二次發送相同的函數集高半字節P1.4-P1.7

SETB P1.7         ; 低半字節(N=1,2行顯示;N=01行顯示)

SETB P1.2         ; |
CLR P1.2                 ; | 使能信號E的下降沿
        ; 發送低半字節函數集

CALL delay         ; 等待忙標志BF清零


; 設置輸入方式(光標和顯示模式)
; 設置為不移動的地址指針加1
CLR P1.7                 ; |
CLR P1.6                 ; |
CLR P1.5                 ; |
CLR P1.4                 ; | 高半字節

SETB P1.2         ; |
CLR P1.2                 ; | 使能信號E的下降沿

SETB P1.6         ; |
SETB P1.5         ; | 低半字節

SETB P1.2         ; |
CLR P1.2                 ; | 使能信號E的下降沿

CALL delay         ; 等待忙標志BF清零


; 設置顯示開/關及光標閃爍
; 顯示器打開,光標打開,閃爍關閉
CLR P1.7                 ; |
CLR P1.6                 ; |
CLR P1.5                 ; |
CLR P1.4                  ; | 高半字節

SETB P1.2         ; |
CLR P1.2                 ; | 使能信號E的下降沿

SETB P1.7         ; |
SETB P1.6         ; |
SETB P1.5         ; | 低半字節

SETB P1.2         ; |
CLR P1.2                 ; | 使能信號E的下降沿

CALL delay          ; 等待忙標志BF清零


; 將歐元符號放入RAM
MOV 30H, #110B ;   **
MOV 31H, #1001B ;  *  *
MOV 32H, #11110B ; ****
MOV 33H, #1000B ;  *
MOV 34H, #11110B ; ****
MOV 35H, #1001B ;  *  *
MOV 36H, #110B ;   **
MOV 37H, #0 ; | 數據結束(在本例中,0可用于指示數據結束,因為沒有行本身包含0


; 設置CG RAM地址
; 設置為字符4,行0(地址100000 B=20H
CLR P1.7                 ; |
SETB P1.6         ; |
SETB P1.5         ; |
CLR P1.4                 ; | 高半字節

SETB P1.2          ; |
CLR P1.2                 ; | 使能信號E的下降沿

CLR P1.6                 ; |
CLR P1.5                 ; | 低半字節

SETB P1.2         ; |
CLR P1.2                 ; | 使能信號E的下降沿

CALL delay         ; 等待忙標志BF清零


; 將歐元符號發送到CGRAM
SETB P1.3 ; 置位寄存器選擇RS-表示數據正在發送到模塊
MOV R1, #30H ; 指向第一行,在8051 RAM位置30H
loop:
MOV A, @R1 ; R1指向單元中的數據傳送至A
JZ endEuroEntry ; 如果A0,則已到達數據結尾-跳出循環
CALL sendCharacter ; 將當前行發送到LCD模塊
INC R1 ; 指向下一行
JMP loop         ; 跳回loop

endEuroEntry:


; 設置DDRAM地址
; 設置為0
CLR P1.3                 ; 清零寄存器選擇RS—表示指令正在發送到模塊

SETB P1.7         ; |
CLR P1.6                 ; |
CLR P1.5                 ; |
CLR P1.4                  ; | 高半字節

SETB P1.2          ; |
CLR P1.2                 ; | 使能信號E的下降沿

CLR P1.7                 ; | 低半字節

SETB P1.2          ; |
CLR P1.2                 ; | 使能信號E的下降沿

CALL delay         ; 等待忙標志BF清零


; 顯示歐元符號(通過發送4DDRAM
SETB P1.3 ; 置位寄存器選擇RS-表示數據正在發送到模塊
MOV A, #4 ; | 現在A中是4CGRAM中的數據
CALL sendCharacter ; | 將顯示位置4(即:歐元符號)



JMP $          ; 程序結束-不執行任何操作



; 發送字符子程序

sendCharacter:
MOV C, ACC.7         ; |
MOV P1.7, C ; |
MOV C, ACC.6         ; |
MOV P1.6, C ; |
MOV C, ACC.5         ; |
MOV P1.5, C ; |
MOV C, ACC.4         ; |
MOV P1.4, C ; | 高半字節

SETB P1.2 ; |
CLR P1.2         ; | 使能信號E的下降沿

MOV C, ACC.3         ; |
MOV P1.7, C ; |
MOV C, ACC.2         ; |
MOV P1.6, C ; |
MOV C, ACC.1         ; |
MOV P1.5, C ; |
MOV C, ACC.0         ; |
MOV P1.4, C ; | 低半字節

SETB P1.2 ; |
CLR P1.2         ; | 使能信號E的下降沿

CALL delay ; 等待忙標志BF清零

delay:
MOV R0, #50
DJNZ R0, $
RET
(小白一個,大佬莫怪@-@,前幾次沒看到有獎勵,這次設置一下,謝謝各位了)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:584814 發表于 2020-3-31 16:41 | 只看該作者
非得匯編就只能問學校老師了,工作的一般都不用了,C的程序網上多些
回復

使用道具 舉報

板凳
ID:708783 發表于 2020-3-31 22:46 | 只看該作者
man1234567 發表于 2020-3-31 16:41
非得匯編就問學校老師好了,C的程序網上多些

就是沒有老師呀

怎么辦呀
回復

使用道具 舉報

地板
ID:201555 發表于 2020-4-1 07:50 來自觸屏版 | 只看該作者
11 mov 30h,#110B,mov 36h,#110Bе110B1
回復

使用道具 舉報

5#
ID:201555 發表于 2020-4-1 22:49 | 只看該作者
修改“mov 30,#110B…mov  36h,#110B”,將#110B,…換成“1”對應的段碼。
回復

使用道具 舉報

6#
ID:708783 發表于 2020-4-2 19:06 | 只看該作者
www12www 發表于 2020-4-1 22:49
修改“mov 30,#110B…mov  36h,#110B”,將#110B,…換成“1”對應的段碼。

固有字符
回復

使用道具 舉報

7#
ID:201555 發表于 2020-4-4 15:32 | 只看該作者
仿照顯示歐元符號的方法,把顯示部分改成一個匯編語言的函數,cgram與ddram的地址可以變化,想顯示1的位置改變cgram與ddram的相應值,把1的顯示碼通過函數調用的方式(lcall 函數名)傳過去就可以了。
回復

使用道具 舉報

8#
ID:727790 發表于 2020-4-12 20:58 | 只看該作者
怎么顯示字符串
回復

使用道具 舉報

9#
ID:727790 發表于 2020-4-12 21:04 | 只看該作者
www12www 發表于 2020-4-1 22:49
修改“mov 30,#110B…mov  36h,#110B”,將#110B,…換成“1”對應的段碼。

怎么顯示字符串
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人免费视频网站高清观看视频 | 国产一区电影 | 日本在线中文 | 亚洲欧美日韩电影 | 精品国产31久久久久久 | 久久精品日产第一区二区三区 | 久久精品女人天堂av | 欧美极品在线观看 | 亚洲黄色成人网 | 日本国产精品视频 | 久久精品久久久久久 | 一级免费毛片 | 久久久99精品免费观看 | 伊人看片 | 亚洲一区二区三区 | 男女羞羞视频免费看 | 国产乱码久久久久久 | 一区二区国产精品 | 中文字幕一页二页 | 夜夜夜夜草| 久久天天躁狠狠躁夜夜躁2014 | 日韩三级 | 欧美精品1区 | 91精品无人区卡一卡二卡三 | 天天久久| 99精品国产一区二区青青牛奶 | 日韩视频一区在线观看 | 最新国产视频 | 999精品网| 亚洲精品综合 | 欧美久久一级 | 国产精品视频网 | 爱爱综合网 | 国产成人精品午夜 | 黄色大片毛片 | 欧产日产国产精品99 | 一级a爱片久久毛片 | 综合久久99| 欧美αv | 正在播放国产精品 | 国产精品成人久久久久 |