单片机课程设计(论文)-基于STC89C52的精确计时控制系统.docx_第1页
单片机课程设计(论文)-基于STC89C52的精确计时控制系统.docx_第2页
单片机课程设计(论文)-基于STC89C52的精确计时控制系统.docx_第3页
单片机课程设计(论文)-基于STC89C52的精确计时控制系统.docx_第4页
单片机课程设计(论文)-基于STC89C52的精确计时控制系统.docx_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计基于stc89c52的精确计时控制系统院 系计算机科学与技术学院 专 业计算机科学与技术 班 级08应本1班 学 号 学 生 姓 名 联 系 方 式 指 导 教 师 2011年 12月摘 要论文阐述了基于单片机stc89c52的智能计时控制系统的硬件电路原理图设计,以及液晶显示部分和按键控制部分在系统软件设计中的实现过程和方法,该系统采用stc89c52单片机为检测控制中心,用汇编语言编写,通过对按键的操作,实现所记录的时间在液晶显示屏lcd1602上的显示。系统包括液晶显示模块,串口通信模块,按键控制模块,蜂鸣器响应模块四个部分,能够实现通过手工按键记录时间的功能,以及按键时产生蜂鸣音的功能。关键词:单片机stc89c52;液晶显示;按键控制;汇编语言;abstractthe paper described a microcontroller-based intelligent stc89c52 timing control system hardware circuit schematic design, as well as crystal display part and the part of key control system software design process and methods of implementation, the system uses stc89c52 control center for the detection of single-chip, using assembly language writing, through the key operation to achieve the recorded time on the lcd1602 lcd display. system consists of liquid crystal display module, serial communication modules, key control module, response module buzzer four parts, can be achieved by manual key function of recording time, and the key beep generated when the function.key words:stc89c52 microcontroller;lcd;the control circuit by button;assembly language;目 录第1章 绪 论21.1 选题的背景及其意义21.2 系统的优点21.3 软硬件配置21.4 文章组织结构2第2章 系统简介22.1 概述22.2 系统功能描述22.3 系统总体设计简介2第3章 系统硬件电路设计23.1 硬件电路的原理图设计23.1.1 stc89c52单片机最小系统原理图设计23.1.2 串口通讯模块原理图设计23.1.3 按键控制模块设计23.1.4 蜂鸣器响应模块原理图设计23.2 选用器件2第4章 系统软件设计24.1 软件设计思路24.2 液晶显示模块程序设计24.2.1 基本操作时序函数程序设计24.2.2 lcd1602初始化过程的程序设计24.2.3显示字符的程序设计24.3 按键控制模块程序设计24.3.1 检测功能键函数2第5章 系统的程序下载与功能测试25.1 系统的程序下载25.2 系统的功能测试2结 束 语2参 考 文 献2附 录2致 谢2第1章 绪 论1.1 选题的背景及其意义在现在日常生活中的方方面面和时间都有着千丝万缕的关系。例如,在体育比赛中百米的第一名和第二名差别往往很小,所以对计时的精度也有更高的要求。另外在计算工作效率时往往要统计做一件事情需要多少时间。在竞争激烈的今天,时间对于每一个人都是很短暂的,不难看出计时在生活中的重要地位。因此,该系统设计选用时间的精确记录作为研究对象,加入了液晶显示电路和蜂鸣电路,可以多次精确计时,并且设计有可任意调节液晶显示屏亮度的功能。1.2 系统的优点1.精确计时的控制系统的主控制部分采用stc89c52单片机来设计,不仅可以简化电路结构、降低成本,而且可靠性好,易于扩展等优点。2.精确计时的控制系统的串口通讯部分选用sp232eep串口通讯芯片来设计,可以直接用串口实现和计算机相连,方便程序的下载。3.精确计时的控制系统的显示模块设计,采用1602字符型液晶屏来显示记录时间的信息。1602字符型液晶屏要比传统的七段数码led显示器显示的质量效果好,画质高而且不会闪烁。另外,液晶显示器功率消耗小,并且都是数字式的,和单片机的接口简单操作也很方便。1.3 软硬件配置1.软件配置计算机操作系统:windows 98/2000/xp或更高;开发平台:protel dxp2004,keilc51,stc_isp_v483。2.硬件配置万用表,电烙铁,所需芯片器件等。 1.4 文章组织结构第1章绪论。引入课题的背景及意义和主器件选择的优点描述,最后说明了系统开发软件和硬件上的配置以及文章的组织结构。第2章系统简介。重点介绍系统的功能描述和系统的总体设计简介,可以非常清楚的了解该系统,以及对它的设计框架也有初步的了解。第3章系统硬件电路设计。重点介绍系统硬件设计所需的芯片器件,以及硬件电路各个模块设计的原理图。通过此介绍,可以很好的进行硬件电路的实现。第4章系统软件设计。重点介绍了液晶显示模块程序部分的设计与按键控制模块程序部分设计,通过此程序设计的介绍,可以非常清晰的明白这两个模块的实现过程。第5章系统的程序下载与功能测试。简要介绍系统的程序调试过程与程序下载的方法,以及系统功能测试大致内容。最后,结束语。重点介绍系统的经济效益和系统扩展的内容以及需要改进的地方。第2章 系统简介2.1 概述基于单片机stc89c52的精确计时控制系统简要介绍了系统的硬件设计架构。2.2 系统功能描述在系统功能中,通过单片机的中断和计时器实现精确计时。另外,lcd1602液晶屏显示的内容包括正常显示界面内容和设计界面内容两个部分。正常显示界面内容第一行要求显示实时的计时次数信息,第二行要求显示设计者的姓名或计时信息。系统能够通过按键开始计时,在按下按键时会产生蜂鸣声,使操作更人性化。 2.3 系统总体设计简介从大的方向来说,系统的设计主要包括系统硬件电路设计和系统软件设计两大模块。在系统硬件电路设计模块中,系统由液晶显示模块,sp232eep串口通讯模块,按键控制模块,蜂鸣器响应模块四个部分组成。液晶显示模块主要实现实时计时信息在lcd1602上的最终显示结果,sp232eep串口通信模块实现和计算机之间的连接,按键控制模块主要实现精确计时控制系统中计时操作和清屏之间的切换,蜂鸣器响应块主要实现在按键按下的同时产生响声的功能。在软件设计模块中,系统可分为液晶显示模块,按键控制模块,蜂鸣器响应模块,主程序控制模块四个部分。这四个模块主要实现的硬件电路设计模块中的四个功能。主程序控制模块包括对各个模块的初始化和对蜂鸣器响应控制部分等内容。下面是系统总体设计的结构图: sp232eep串口通讯模块sp232eep串口通讯模块ds18b20的温度采集模块ds18b20的温度采集模块ds18b20的温度采集模块按键控制模块液晶显示模块蜂鸣器响应系统stc89c52图2-1 系统总体设计的结构图第3章 系统硬件电路设计系统硬件电路设计重点介绍系统硬件各个模块的原理图设计的原理和过程,以及系统设计所需的芯片器件。通过此介绍,可以很好的对硬件电路的进行焊接,实现系统硬件电路的设计。 3.1 硬件电路的原理图设计3.1.1 stc89c52单片机最小系统原理图设计系统在正常运行过程中,单片机是其核心控制器件。因而,stc89c52单片机最小系统是系统中最重要的控制部分。它包括液晶显示电路,时钟电路、复位开关,电源部分和其他控制接口,下面介绍一下液晶显示电路的设计。lcd1602字符型液晶屏是一种5*7点阵图形来显示字符的,它常见的显示容量是能够显示2行*16个字符,是目前工控系统中使用最为广泛的液晶屏之一。它采用标准的16脚接口,其引脚功能如下:第1脚:vss为电源地,接gnd。第2脚:vdd接5v正电源。第3脚:vl为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度。第4脚:rs为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:rw为读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和rw共同为低电平时可以写入指令或者显示地址,当rs为低电平rw为高电平时可以读忙信号,当rs为高电平rw为低电平时可以写入数据。第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。第714脚:d0d7为8位双向数据线。第15脚:bla背光电源正极(+5v)输入引脚。第16脚:blk背光电源负极,接gnd。通过lcd1602字符型液晶模块引脚功能的介绍,可以非常清楚的对它进行电路图连接。因此,液晶显示电路的设计是将lcd1602字符型液晶模块数据口d0d7与单片机p1口相连接,它控制端口rs,rw,en分别于单片机的p24,p25,p26端口相连接。通过向控制端口输入命令,实现单片机与lcd1602字符型液晶屏的数据并行传输。另外,该最小系统设计中采用的是12mhz的晶振时钟电路和复位电路。因此,最终的stc89c52单片机最小系统的原理图设计如图3-1所示:图3-1 stc89c52单片机最小系统的原理图3.1.2 串口通讯模块原理图设计在串口通讯模块中,所用的最主要芯片就是sp232eep芯片。串口通讯模块原理图设计如下:图3-2 串口通讯模块原理图3.1.3 按键控制模块设计按键控制模块硬件设计原理是当按键按下去,能够给出一个低电平的信号,以便使得单片机stc89c52可以根据该信号进行相应的控制。3.1.4 蜂鸣器响应模块原理图设计蜂鸣器响应电路图设计的原理就是给出一个低电平使得蜂鸣器响,产生报警功能。因此,蜂鸣器响应系统原理图设计如下:图3-3 蜂鸣器报警系统原理图 3.2 选用器件表3-1 器件选型名 称型 号数量单片机 stc89c521个lcd显示器16021个晶 振 12m1个三极管 90124个电阻排 470 x82个蜂鸣器1个滑动变阻器10k1个电 阻 若干个按 键 3个通讯芯片 sp232eep1片瓷片电容 30pf2片电解电容 4.7f2片第4章 系统软件设计4.1 软件设计思路在硬件电路搭建过后,就可以根据系统的原理图进行相应模块代码的编写。系统设计中软件设计可以分为液晶显示模块,按键控制模块,蜂鸣器响应模块,主程序控制模块四个部分。系统软件总体设计的流程图如下:开始系统初始化按下计时控制键ny计时开始y按下计时控制键nn计时停止按下清屏键y结束图4-1 系统总体设计流程图这里重点介绍系统软件设计中的液晶显示模块程序部分与按键控制模块程序部分,其他部分只做简单说明。4.2 液晶显示模块程序设计液晶显示模块主要解决的问题是lcd1602液晶显示屏如何与单片机stc89c52进行并行通信。例如,怎样显示一个字符,怎么显示正常界面的内容,怎么显示设置界面的内容等。4.2.1 基本操作时序函数程序设计为了能实现lcd1602与单片机stc89c52的并行通信,必须要先对基本操作时序函数进行定义。基本操作时序函数包括读状态函数,写指令函数和写数据函数,这三个函数的功能说明与定义如下:读状态函数功能说明:向lcd1602输入rs=l,rw=h,e=h时,即可通过d0d7口输出状态字。定义为:checkbusy:push accmov p1,#0ffh ;置p1口为输入状态clr lcd_ennopnopsetb lcd_rwclr lcd_rssetb lcd_enbusyloop:nopjb p1.7,busyloopclr lcd_enpop accret写指令函数功能说明:向lcd1602输入rs=l,rw=l,e=高脉冲时,即可通过d0d7口输入指令码。定义为:wcom:acall checkbusywcom_nc:mov p1,a ;写入指令clr lcd_ennopnopclr lcd_rsclr lcd_rwsetb lcd_enacall del_250clr lcd_enret写数据函数功能说明:向lcd1602输入rs=h,rw=l,e=高脉冲时,即可通过d0d7口输入数据。定义为: wdata:acall checkbusymov p1,a ;写入数据clr lcd_ennopnopsetb lcd_rsclr lcd_rwsetb lcd_encall del_250clr lcd_enret4.2.2 lcd1602初始化过程的程序设计lcd1602初始化过程的程序主要是向lcd1602中写入相应的指令,在指令运行之前,将相应的工作都准备好,以便下次指令执行时能够顺利稳定的执行。具体的lcd1602初始化过程的流程图如下:延时5ms,写指令38h(不检测忙信号)延时5ms,写指令38h(不检测忙信号)延时5ms,写指令38h(不检测忙信号)写指令38h,显示模式设置写指令0ch,开始显示写指令01h,显示清屏图4-2 lcd1602初始化过程的流程图4.2.3 显示字符的程序设计按指定位置显示一个字符的程序主要解决的问题是如何在一个指定的位置写入一个字符。为了解决此问题,首先要计算出指定位置的地址码,然后该地址码加上80h得到对应的指令码,再向该指令码中发出写命令,紧接着进行写数据,即可实现在指定位置显示一个字符。如何计算出指定位置的地址码?由于lcd1602显示的内容为2行*16个字符,即可以显示两行,每行16个字符。查阅芯片使用说明可知,第一行首地址的地址码是0x00,第二行首地址的地址码是0x40。因此,指定位置的地址码可由要显示的第几个字符加上该字符所在行的首地址的地址码即可得到。由上可知,按指定位置显示一个字符的程序可设计如下:lcd_print:cjne a,#1,line2 ;判断是否为第一行line1: mov a,#90h ;设置 lcd 的第一行地址call wcom ;写入命令call clr_line ;清除该行字符数据mov a,#90h ;设置 lcd 的第一行地址call wcom ;写入命令jmp fillline2: mov a,#0c0h ;设置 lcd 的第二行地址call wcom ;写入命令call clr_line ;清除该行字符数据mov a,#0c0h ;设置 lcd 的第二行地址call wcomfill: clr a ;填入字符movc a,a+dptr ;由信息区取出字符cjne a,#0,lc1 ;判断是否为结束码retlc1: call wdata ;写入数据inc dptr ;指针加1jmp fill ;继续填入字符ret4.3 按键控制模块程序设计系统中按键的作用就是实现液晶屏正常计时界面显示和初始化界面显示之间的切换。为了能实现按键的这些功能,必须定义多个变量来对按键的信号进行响应,以便单片机能控制各部分进行执行。根据按键控制模块原理图,可将与两个按键相连的单片机的p23,p24进行位定义,以便更好的进行控制。位定义的方法如下:k3 equ p2.3 ;功能键;/p23作为功能键,用于计时控制。k4 equ p2.4 ;复位键;/p24作为软件复位键,用于使系统回复初始化。由上述描述,按键控制模块的程序为检测功能键函数。4.3.1 检测功能键函数按键控制模块程序的设计,首先要检测功能键,以判断在液晶屏上显示的数据。在正常显示界面时按下功能键系统开始计时,再次按下功能键计时停止,重新按功能键由继续计时,再次按下功能键计时停止。因而检测功能键函数可设计如下:p_key:mov a, key_vjb acc.0, p_key4;inc key_c ;键按下次数加1mov a, key_ccjne a,#01h,p_key1 ;k3键是否第一次按下?setb tr0 ;启动中断mov dptr,#madj ;显示执行信息mov a,#1 ;lcd第一行显示信息字符串call lcd_printcall beep_bl ;蜂鸣器响一声retp_key1:mov a, key_ccjne a,#02h,p_key2 ;k3键是否第二次按下?clr tr0 ;停止中断mov dptr,#madj1 ;显示执行信息mov a,#1 ;lcd第一行显示信息字符串call lcd_printcall beep_bl ;蜂鸣器响一声retp_key2:mov a, key_ccjne a,#03h,p_key3 ;k3键是否第三次按下?setb tr0 ;启动中断mov dptr,#madj2 ;显示执行信息mov a,#1 ;lcd第一行显示信息字符串call lcd_printcall beep_bl ;蜂鸣器响一声retp_key3:mov a, key_ccjne a,#04h,p_key4 ;k3键是否第四次按下?clr tr0 ;关闭中断mov dptr,#madj3 ;显示执行信息mov a,#1 ;lcd第一行显示信息字符串call lcd_printcall beep_blp_key4:ret 第5章 系统的程序下载与功能测试5.1 系统的程序下载在硬件实物焊接和软件编程完成后,需要将程序下载到单片机stc89c52中,以便进行系统的功能测试。将程序下载到单片机stc89c52中的方法是:首先,打开keil uvision2软件,创建一个新的工程,然后点击下一步,会出现一个选择设备的对话框,在此对话框中选择单片机类型,点击确定。在此工程下添加所编写的程序,然后进行调试,调试无误时编译生成.hex文件。然后,用stc-isp软件打开经keil编译后的文件程序文件,点击download/下载后,给单片机通电,程序下载完成。图5-1 用stc-isp通过串口下载程序图 5.2 系统的功能测试 当程序下载到单片机的工作完成之后,就可以对整个系统进行测试。首先,将系统的电源线和地线连接到+5v的电压下,系统开始执行。然后,逐一测试系统的功能,如液晶屏显示的内容是否符合要求,系统的按键能否准确的响应等。经过多次的调试与实验,虽然发现了不少问题,但都得到了很好的解决,基于单片机stc89c52精确计时控制系统最终能够按照预期设计的功能进行工作。结 束 语基于单片机stc89c52的精确计时控制系统的设计成本低,并且它还是一个非常实用的系统。它可以间断的记录时间,方便于准确计时。另外,此系统使用lcd1602液晶显示屏,方便直观的显示时间。基于单片机stc89c52的精确计时控制系统除了以上的优点之外,它还具有很强的扩展性,可以在此系统基础上扩展成电子时钟。设计的思想就是将基于单片机stc89c52的精确计时控制系统中增加设置计时初值程序模块,通过调节计时初值可以实现对时的功能。这次毕业设计让我学习到很多。虽然结束了,但这只能是一个开始。通过这次基于单片机stc89c52智能温度控制系统的设计使我又得到了一次用专业知识、专业技能分析和解决现实问题的能力。使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为一名合格的应用型人才打下良好的基础。参 考 文 献1周惠潮,孙晓峰.常用电子元器件及典型应用m.北京:电子工业出版社,20072申忠如,申淼.mcs-1单片机原理及系统设计m.陕西:西安交通大学出版,2008.771303刘同法,陈忠平.单片机外围接口电路与工程实践m.北京:北京航天航空大学出版社,2009 4林志琦,郎建军,李会杰等.基于proteus的单片机可视化软硬件仿真m.北京:北京航天航空大学出版社,2006.1751785陈海宴.51单片机原理及应用m.北京:北京航天航空大学出版社,2010.1901976吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用m.北京:清华大学出版社,20027张大明.单片机控制实训指导及综合应用实例m.北京:机械工业出版社,2007.2588牟琦、聂建萍.微机原理与接口技术 m.北京:清华大学出版社,20079沈美明、温冬婵.ibm-pc汇编语言程序设计(第二版) m.北京:清华大学出版社,200110肖看,李群芳.单片机原理、接口及应用 m.北京:清华大学出版社,201011王为青,程国纲.单片机keil cx51应用开发技术m.北京:人民邮电出版社,2007.31110附 录;功能描述: *; 1602lcd显示秒表 *;1602液晶引脚定义 lcd_rs p0.4 lcd_rw p0.5 lcd_en p0.6 lcd数据 p1口 * ; k3 p2.3- 控制按键 * ; 第一次按下时,开始计时,第二次按下时,暂停计时。 *; 第三次按下时,累计计时,第四次按下时,暂停计时。 *; k4 p2.4 - 清零按键:喇叭:p2.0口 *; 在任何状态下,按一下k4,均可清零。 *;可同时显示:时、分、秒、毫秒(带有两位ms级显示) *tlow equ 00h ;10ms定时初值thigh equ 0dchhour equ 30h ;时存放单元min equ 31h ;分存放单元sec equ 32h ;秒存放单元sec0 equ 33h ;10ms计数值存放单元key_s equ 34h ;为键当前的端口状况key_v equ 35h ;为键上次的端口状况key_c equ 36h ;键计数单元lcd_x equ 37h ;lcd 地址变量beep equ p2.0 ;蜂鸣器控制端口lcd_rs equ p1.0 ;lcd控制端口lcd_rw equ p1.1lcd_en equ p1.2;-;按键的独立键端口定义;-k3 equ p2.3 ;功能键k4 equ p2.4 ;复位键;-;-org 0000hjmp mainorg 0bhjmp t0_intorg 0080h;-main:mov sp,#60h ;设堆栈初值mov key_v,#01h ;设初值call init_lcd ;初始化lcdcall set_lcd1 ;第一行显示信息mov r5,#30call menu ;第二行滚动显示名字main1: call delay100 ;停留3s。djnz r5,main1jmp $call init_lcd ;初始化lcdcall set_lcd1 ;第一行显示信息call set_lcd2 ;第二行显示信息call init ;初始化变量call init_timer ;初始化定时器loop:call conv ;时间数据处理jb k4,loop1 ;判清零键是否按下call beep_bl ;蜂鸣器响一声jnb k4,$ ;等待k4键释放jmp main ;软件复位loop1:call skey ;判是否有键按下jz loop ;无键按下转loopmov key_v,key_s ;交换数据call p_key ;功能键处理jmp loop;判是否有键按下子程序;有键按下,a 中内容不为零;无键按下,a 中内容则为零skey:clr amov key_s,amov c,k3rlc aorl key_s,amov a,key_sxrl a,key_vret;功能键处理子程序;根据k3键按下的次数来执行相应的功能p_key:mov a,key_vjb acc.0,p_key4 ;inc key_c ;键按下次数加1mov a,key_ccjne a,#01h,p_key1 ;k3键是否第一次按下?setb tr0 ;启动中断mov dptr,#madj ;显示执行信息mov a,#1 ;lcd第一行显示信息字符串call lcd_printcall beep_bl ;蜂鸣器响一声retp_key1:mov a,key_ccjne a,#02h,p_key2 ;k3键是否第二次按下?clr tr0 ;停止中断mov dptr,#madj1 ;显示执行信息mov a,#1 ;lcd第一行显示信息字符串call lcd_printcall beep_bl ;蜂鸣器响一声retp_key2:mov a,key_ccjne a,#03h,p_key3 ;k3键是否第三次按下?setb tr0 ;启动中断mov dptr,#madj2 ;显示执行信息mov a,#1 ;lcd第一行显示信息字符串call lcd_printcall beep_bl ;蜂鸣器响一声retp_key3:mov a,key_ccjne a,#04h,p_key4 ;k3键是否第四次按下?clr tr0 ;关闭中断mov dptr,#madj3 ;显示执行信息mov a,#1 ;lcd第一行显示信息字符串call lcd_printcall beep_blp_key4:ret;设置lcd初始化显示set_lcd1:mov dptr,#lmess1 ;指针指到显示信息1mov a,#1 ;显示在第一行call lcd_printretset_lcd2: mov dptr,#lmess2 ;指针指到显示信息2mov a,#2 ;显示在第二行call lcd_printretlmess1:db stopwatch 0 ,0 ;lcd 第一行显示lmess2:db time ,0 ;lcd 第二行显示;初始化定时器子程序;设置定时器0 工作模式为模式1;启用定时器0 产生中断init_timer:mov tmod,#01hmov ie, #82hmov tl0,#tlowmov th0,#thighret;时间数据转换为 ascii 码并显示conv:mov a,hour ;加载小时数据mov lcd_x,#5 ;设置位置call show_dig2 ;显示数据inc lcd_x ;mov a,#: ;显示“:”mov b,lcd_x ;call lcdp2 ;mov a,min ;加载分钟数据inc lcd_x ;设置位置call show_dig2 ;显示数据inc lcd_x ;mov a,#: ;显示“:”mov b,lcd_x ;call lcdp2 ;mov a,sec ;加载秒数数据inc lcd_x ;设置位置call show_dig2 ;显示数据inc lcd_x ;mov a,#: ;显示“:”mov b,lcd_x ;call lcdp2 ;mov a,sec0 ;加载秒数数据inc lcd_x ;设置位置call show_dig2ret;在lcd1602的第二行显示数字show_dig2:mov b,#10 ;设置被除数div ab ;结果a存商数,b存余数add a,#30h ;a为十位数,转换为字符push b ;b放入堆栈暂存mov b,lcd_x ;设置 lcd 显示的位置call lcdp2 ;由 lcd 显示出来pop b ;mov a,b ;b为个位数add a,#30h ;转换为字符inc lcd_x ;lcd 显示位置加1mov b,lcd_x ;设置 lcd 显示的位置call lcdp2 ;由 lcd 显示出来ret;在lcd的第二行显示字符lcdp2:push acc ;入栈保护mov a,b ;设置显示地址add a,#0c0h ;设置lcd的第二行地址call wcom ;写入命令pop acc ;由堆栈取出acall wdata ;写入数据ret;在lcd的第一行或第二行显示字符 lcd_print:cjne a,#1,line2 ;判断是否为第一行line1: mov a,#90h ;设置 lcd 的第一行地址call wcom ;写入命令call clr_line ;清除该行字符数据mov a,#90h ;设置 lcd 的第一行地址call wcom ;写入命令jmp fillline2: mov a,#0c0h ;设置 lcd 的第二行地址call wcom ;写入命令call clr_line ;清除该行字符数据mov a,#0c0h ;设置 lcd 的第二行地址call wcomfill: clr a ;填入字符movc a,a+dptr ;由信息区取出字符cjne a,#0,lc1 ;判断是否为结束码retlc1: call wdata ;写入数据inc dptr ;指针加1jmp fill ;继续填入字符ret;清除 lcd 指定行的字符clr_line:mov r0,#24cl1: mov a,#20h ; call wdatadjnz r0,cl1ret;写控制指令子程序;写控制指令到lcd;传入参数: acc(要写入的指令);rs=l,rw=l,e=高脉冲,d0-d7=指令码 。wcom:acall checkbusywcom_nc:mov p0,a ;写入指令clr lcd_ennopnopclr lcd_rsclr lcd_rwsetb lcd_enacall del_250clr lcd_enret;写数据子程序;写显示数据到lcd;传入参数: acc(要写入的数据);rs=h,rw=l,e=高脉冲,d0-d7=数据码 。wdata:acall checkbusymov p0,a ;写入数据clr lcd_ennopnopsetb lcd_rsclr lcd_rwsetb lcd_encall del_250clr lcd_enretdel_250:mov r7,#125 ;延时250微秒djnz r7,$ret;检测lcd控制器忙碌状态;正常读写操作之前必须检测lcd控制器状态;busy flag(p0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论