首页 51单片机程序9

51单片机程序9

举报
开通vip

51单片机程序951单片机程序9 LCD_RS BIT P2.0 ;定义LCD_RS数据/命令选择信号 LCD_RW BIT P2.1 ;定义LCD_RW读写信号 LCD_E BIT P2.2 ;定义LCD_E使能信号 DB0_DB7 EQU P0 ;定义DB0_DB7数据信号 ORG 0000H ;程序从0000H开始 LJMP MAIN ;调主程序 ORG 030H ;主程序从030H开始 ;以下是主程序 MAIN: MOV SP,#70H ;初始化堆栈指针 ACALL HOT_START ;热启动? S...

51单片机程序9
51单片机程序9 LCD_RS BIT P2.0 ;定义LCD_RS数据/命令选择信号 LCD_RW BIT P2.1 ;定义LCD_RW读写信号 LCD_E BIT P2.2 ;定义LCD_E使能信号 DB0_DB7 EQU P0 ;定义DB0_DB7数据信号 ORG 0000H ;程序从0000H开始 LJMP MAIN ;调主程序 ORG 030H ;主程序从030H开始 ;以下是主程序 MAIN: MOV SP,#70H ;初始化堆栈指针 ACALL HOT_START ;热启动? START: ACALL CLR_LCD ;清LCD ACALL MOVE_STR ;调字符串移动子程序,字符串开始移动显示 ACALL DELAY_05s ;延时0.5s ACALL DELAY_05s ;延时0.5s ACALL DELAY_05s ;延时0.5s,共延时1.5s ACALL FLASH ;延闪烁子程序,开始闪烁 AJMP START ;以下是字符串移动子程序 MOVE_STR : MOV A,#10010000B ;在第1行第16列显示 ACALL WRITE_IR ;调写指令子程序 MOV DPTR,#LINE1 ;第1行字符串的起始地址送入DPTR ACALL DISP_STR ;调字符串显示子程序 MOV A,#11010000B ;在第2行第16列显示 ACALL WRITE_IR ;调写指令子程序 MOV DPTR,#LINE2 ;第2行字符串的起始地址送入DPTR ACALL DISP_STR ;调字符串显示子程序 MOV R3,#16 ;向左移动16格 MOV_NEXT: MOV A,#00011000B ;光标和字符同时左移1格 ACALL WRITE_IR ;调写指令子程序 ACALL DELAY_05s ;延时0.5s DJNZ R3, MOV_NEXT ;R3不为16,跳转到NEXT继续循环 RET ; 以下是字符串显示子程序 DISP_STR: PUSH ACC ;ACC入栈 DISP_LOOP: CLR A ;清A MOVC A,@A+DPTR ;查 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf JZ END_STR ;若A的值为0,则退出 LCALL WRITE_DR ;调写数据寄存器DR子程序 INC DPTR ;DPTR加1 SJMP DISP_LOOP ;跳转到DISP_LOOP继续循环 END_STR: POP ACC ;ACC出栈 RET ;以下是LCD第1、2行显示字符串 LINE1: DB " Ding-Ding",00H LINE2: DB "Welcome to you!",00H ;以下是闪烁子程序 FLASH: MOV R4,#3 ;设置闪烁次数 FL_NEXT: MOV A,#00001000B ;关闭显示 ACALL WRITE_IR ;调写指令子程序 ACALL DELAY_05s ;延时0.5s MOV A,#00001100B ;开显示,关闭光标 ACALL WRITE_IR ;调写指令子程序 ACALL DELAY_05s ;延时0.5s DJNZ R4, FL_NEXT ; R4不为3,继续闪烁 RET ;以下是0.5s延时子程序 DELAY_05s: MOV R7,#250 LOOP2: MOV R6,#250 LOOP1: NOP NOP NOP NOP NOP NOP DJNZ R6,LOOP1 DJNZ R7,LOOP2 RET ; 以下是LCD忙碌检查子程序 CHECK_BUSY: PUSH ACC MOV P0,#0FFH CLR LCD_RS SETB LCD_RW SETB LCD_E BUSY_LOOP: NOP JB DB0_DB7.7,BUSY_LOOP ;若第7位为1,说明忙,则等待 CLR LCD_E POP ACC RET ;以下是LCD清屏子程序 CLR_LCD: MOV A,#01H ;清除屏幕 ACALL WRITE_IR ;调写指令寄存器IR子程序 RET ;以下是写指令寄存器IR子程序 WRITE_IR: CALL CHECK_BUSY WRITE_IR_NB: CLR LCD_RS CLR LCD_RW MOV DB0_DB7,A SETB LCD_E NOP NOP NOP NOP CLR LCD_E RET ;以下是写数据寄存器DR子程序 WRITE_DR: ACALL CHECK_BUSY SETB LCD_RS CLR LCD_RW MOV DB0_DB7,A SETB LCD_E NOP NOP NOP NOP CLR LCD_E RET ;以下是LCD热启动子程序 HOT_START: ACALL DELAY_5ms ;延时5ms ACALL DELAY_5ms ;延时5ms ACALL DELAY_5ms ;延时5ms,共延时15ms,等待LCD 电源稳定 MOV A ,#00111000B ;功能设置指令,数据总线为8位,双 行显示,5×7点阵字体 ACALL WRITE_IR_NB ;写指令,不进行LCD忙检测 ACALL DELAY_5ms ;延时5ms MOV A ,#00111000B ;功能设置指令,数据总线为8位,双行显 示,5×7点阵字体 ACALL WRITE_IR_NB ;写指令,不进行LCD忙检测 ACALL DELAY_5ms ;延时5ms MOV A ,#00111000B ;功能设置指令,数据总线为8位,双 行显示,5×7点阵字体 ACALL WRITE_IR_NB ;写指令,不进行LCD忙检 ACALL DELAY_5ms ;延时5ms MOV A,#00001000B ;关显示 ACALL WRITE_IR ;写指令,进行LCD忙检测 ACALL CLR_LCD ;清屏 MOV A,#00001100B ;开显示,关光标 ACALL WRITE_IR ;写指令,进行LCD忙检测 RET ;以下是5ms延时子程序 DELAY_5ms: SETB RS0 ;切换工作寄存器组 SETB RS1 ;切换工作寄存器组 MOV R6,#10 LCD_D1: MOV R7,#250 LCD_D2: DJNZ R7,LCD_D2 DJNZ R6,LCD_D1 RET END
本文档为【51单片机程序9】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_963767
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-09-26
浏览量:18