完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
7个回答
|
|
代码:
RS EQU P2.0 ;引入p2.0位为命令数据引脚 RW EQU P2.1 ;引入读写选择引脚 E EQU P2.2 ;引入使能端 OPEN EQU P2.3 ;引入显屏的开关端 ORG 0000H AJMP MAIN ORG 0003H ;外部中断0入口 AJMP INTO ORG 0030H MAIN: SETB EX0 ;允许中断0 SETB EA ;中断总开关 CLR IT0 ;外部中断0方式为低电平 ACALL KS ;开关机检查 ACALL INITIAL ;显屏模块初始化 ACALL DISPLAY2 ;调用液晶显示子程序 AJMP MAIN KS: JB OPEN,KS_END ;open键按下走程序,没按下等待 AJMP KS KS_END: RET INITIAL: MOV R0,#33 ;最长字符串的长度 MOV A,#01H ;清屏 ACALL WR_CODE ;(指令写入显屏) MOV A,#38H ;工作方式的设置(8位数据接口、两行显示、5X8点阵字符) ACALL WR_CODE MOV A,#0CH ;显示开关的设置(显示开、光标不显示、光标不闪烁) ACALL WR_CODE MOV A,#06H ;进入模式设置(写入新数据后光标左移、显示不移动) ACALL WR_CODE RET DISPLAY2: MOV A,#0C0H ;第二行第1个点 ACALL WR_CODE ;写指令 MOV DPTR, #JUZI ;定义第二行字符串首地址 ACALL PR_STR1 ;取数据 ACALL WR_DATA1 ;写P1口数据进入指令 MOV A,#82H ;第一行第2个点 ACALL WR_CODE ;写指令 MOV DPTR, #JUZI1 ;定义第一行字符串首地址 ACALL PR_STR1 ;取数据 ACALL WR_DATA1 ;写P1口数据进入指令 DISP1: MOV A,#1CH ;字符左移命令 ACALL WR_CODE ACALL DELAY1 ;延时移动 DJNZ R0,DISP1 ;第二行(最长行)是否移动结束?结束重新循环 RET WR_CODE: ;RS=0 RW=0 写显屏指令 MOV P1,A CLR RS CLR RW CLR E LCALL DELAY SETB E RET WR_DATA1: ;RS=1 RW=0 写数据到DDRAMZ指令 MOV P1, A SETB RS ;写入数据 CLR RW CLR E LCALL DELAY ;判断液晶模块是否忙 SETB E RET PR_STR1: ;逐个读出字符串数据 CLR A MOVC A, @A+DPTR JZ END_PR1 ACALL WR_DATA1 INC DPTR AJMP PR_STR1 END_PR1: RET INTO: MOV A,#01H ;开关松开清屏 ACALL WR_CODE RETI DELAY: MOV P1,#0FFH ;判断液晶显示器是否忙的子程序 CLR RS SETB RW CLR E NOP SETB E JB P1.7,DELAY ;如果P1.7为高电平表示忙就循环等待 RET DELAY1: MOV R7,#25 ;延时函数 DELAY2: MOV R6,#100 DELAY3: MOV R5,#50 DELAY4: DJNZ R5,DELAY4 DJNZ R6,DELAY3 DJNZ R7,DELAY2 RET JUZI: ;第二行字符串 DB ' Hello everone! Welcome to Harbin',00H JUZI1: ;第一行字符串 DB ' 3115000698 ',00H END |
|
|
|
你需要好好看看1602的资料,1602的实物连接需要接对比度调节电阻,就是一个50K的可调电阻,第15、16脚的背光连接需要接,如果是蓝屏1602,没有背光是看不到的,看你的1602象是蓝屏的
|
|
|
|
人中狼 发表于 2018-1-9 13:49 谢谢你,我先试一下 可变电阻是要50k的吗 |
|
|
|
我接了背光后就只有背光灯亮呢,还是没有那个字母出来,但现在还没接个可变电阻 |
|
|
|
|
|
|
|
我试了下接地 确实有字母出现了 而且没乱码 ,。但同时又个问题我的字母是向右移动的 我仿真是向左的,移动方向字母改变了。 |
|
|
|
注意看1602的资料,MOV A,#1CH ;字符左移命令,这里注释的是左移,但实际写入的参数是右移。
另外 ACALL INITIAL ;显屏模块初始化 ACALL DISPLAY2 ;调用液晶显示子程序 AJMP MAIN 这里最后不需要跳转到MAIN,应该跳转到ACALL INITIAL ;显屏模块初始化和ACALL DISPLAY2 ;调用液晶显示子程序之间,也就是ACALL INITIAL ;显屏模块初始化之前都是对硬件或中断等的初始设置,没有更改的话只需要执行一次就可以了。 再你的程序里,就是循环执行ACALL DISPLAY2就可以了 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
727 浏览 0 评论
815 浏览 0 评论
850 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
823 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1274 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11816 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 02:08 , Processed in 0.558549 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号