显示效果:全屏幕显示0---9 :该程序试验通过

发布者:数字梦想最新更新时间:2011-02-27 手机看文章 扫描二维码
随时随地手机看文章

现在:我带领大家从字符型1602液晶入手, 一步一步的来掌握液晶的编程

SMC1602接口程序(MCS51模拟口线方式)

以上为运行的照片,实际是动态的, 从0--9

;********************************************************************************
;1602液晶全屏幕显示0-9 *
;********************************************************************************
;* 日期: 2007-3-25 *
;* 版本: 3.0 *
;* 作者: 深圳学林电子有限公司 专业8051单片机教程站 *
;* 邮箱: sxj1974@163.com *
;* 网站: http://www.51c51.com http://www.8951.com 更多例程请登陆网站 *
;********************************************************************************
;* 硬件:此程序在本公司xlisp系列单片机实验仪运行通过 *
;********************************************************************************
;* 【版权】 Copyright(C)深圳学林电子有限公司 www.51c51.com All Rights Reserved *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
;********************************************************************************
RSPIN EQU P2.0
RWPIN EQU P2.1
EPIN EQU P2.2
XPOS EQU 20H ;列方向地址指针(用于LCDPOS子程序)
YPOS EQU 21H ;行方向地址指针(用于LCDPOS子程序)
ORG 0000H
JMP START
START: MOV SP,#60H
CLR EPIN
MAIN:
MOV R7,#'0' ;测试主程序
MN_PA: ;整屏循环显示"0"到"9"及空格
CALL LCDRESET
MOV A,R7
CALL LCDFILL
CALL DELAY400MS
INC R7
MOV A,R7
CJNE A,#'9'+1,MN_PA
MOV A,#' '
CALL LCDFILL
CALL DELAY400MS
JMP MAIN
LCDFILL:
MOV B,A
MOV YPOS,#0
LFL_PB: MOV XPOS,#0 ;整屏显示A中所代表字符
LFL_PA: MOV A,B
CALL LCDWRITE
INC XPOS
MOV A,XPOS
CJNE A,#20,LFL_PA
INC YPOS
MOV A,YPOS
CJNE A,#4,LFL_PB
RET
LCDPOS: ;设置第(XPOS,YPOS)个字符的DDRAM地址
PUSH ACC
CLR C ;X位置范围(0到19)
MOV A,XPOS
SUBB A,#20
JC LPS_LBX
MOV XPOS,#0
LPS_LBX:ANL YPOS,#03H ;Y位置范围(0到3)
MOV A,YPOS ;(XPOS,YPOS)对应DDRAM地址
CJNE A,#00,LPS_LA1
MOV A,XPOS ;(第一行)X: 第0----19个字符
JMP LPS_LAX ; DDRAM: 0----13H
LPS_LA1:CJNE A,#01,LPS_LA2
MOV A,XPOS ;(第二行)X: 第0----19个字符
ADD A,#40H ; DDRAM: 40----53H
JMP LPS_LAX ;
LPS_LA2:CJNE A,#02,LPS_LAY
MOV A,XPOS ;(第三行)X: 第0----19个字符
ADD A,#14H ; DDRAM: 14----27H
JMP LPS_LAX
LPS_LAY:MOV A,XPOS ;(第四行)X: 第0----19个字符
ADD A,#54H ; DDRAM: 54----67H
LPS_LAX:ORL A,#80H ;设置DDRAM地址
CALL LCDWC
POP ACC
RET
LCDWRITE: ;定位写字符子程序
CALL LCDPOS ;定位显示地址
CALL LCDWD ;写字符
RET
LCDRESET: ;初始化程序
CALL DELAY5MS ;延时15MS
CALL DELAY5MS
CALL DELAY5MS
MOV A,#38H ;显示模式设置(不检测忙信号)
CALL LCDWCN ;共三次
CALL DELAY5MS
MOV A,#38H
CALL LCDWCN
CALL DELAY5MS
MOV A,#38H
CALL LCDWCN
MOV A,#38H ;显示模式设置(以后均检测忙信号)
CALL LCDWC
MOV A,#08H ;显示关闭
CALL LCDWC
MOV A,#01H ;显示清屏
CALL LCDWC
MOV A,#06H ;显示光标移动设置
CALL LCDWC
MOV A,#0CH ;显示开及光标设置
CALL LCDWC
RET
LCDWC: ;送控制字子程序(检测忙信号)
CALL WAITIDLE
LCDWCN: ;送控制字子程序(不检测忙信号)
CLR RSPIN ;RS=0 RW=0 E=高脉冲
CLR RWPIN
MOV P0,A
SETB EPIN
NOP
CLR EPIN
RET
LCDWD: ;写字符子程序
CALL WAITIDLE
SETB RSPIN ;RS=1 RW=0 E=高脉冲
CLR RWPIN
MOV P0,A
SETB EPIN
NOP
CLR EPIN
RET
WAITIDLE:
PUSH ACC ;正常读写操作之前必须检测LCD控制器状态
MOV P0,#0FFH
CLR RSPIN ;RS=0 RW=1 E=高电平
SETB RWPIN
SETB EPIN
WTD_PA: NOP ;DB7: 0 LCD控制器空闲
JB P0.7,WTD_PA ; 1 LCD控制器忙
CLR EPIN
POP ACC
RET
DELAY5MS:
MOV R1,#25 ;延时子程序(5MS)
DL5_PA: MOV R2,#100
DJNZ R2,$
DJNZ R1,DL5_PA
RET
DELAY400MS:
MOV R0,#20 ;延时子程序(400MS)
DL4_PA: MOV R1,#100
DL4_PB: MOV R2,#100
DJNZ R2,$
DJNZ R1,DL4_PB
DJNZ R0,DL4_PA
RET
END

引用地址:显示效果:全屏幕显示0---9 :该程序试验通过

上一篇:超扭曲向列型显示
下一篇:数据表中的代码怎样得到的呢?

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved