资源描述
学校代码: 10128
学 号: 010202064
(
本科毕业设计说明书
题 目:分拣机器人单片机控制系统设计
学生姓名:
学 院:
系 别:
专 业:
班 级:
指导教师:
二 〇 一 七 年 五 月
摘 要
通常分拣机器人因为其操作方法较复杂,分拣效率较差,人机交互系统不太完善,机械性能欠佳等已经极难满足当今社会生产实践需要。伴伴随社会飞速发展,大家对性能优良智能分拣人需求也和日俱增。设计一款基于单片机分拣机器人有很大实践需要和社会功效。依据控制系统要求,决定采取美国INTEL企业MCS-51系列单片机基础产品89C52,作为分拣机器人主控制芯片。它含有运行速度快,功耗低,抗干扰能力强等优点,能够完全我设计要求。本系统包含硬件和软件两个部分。硬件系统关键包含电压转换电路设计、单片机连接PC机串口电路设计,单片机系统设计,驱动电路设计,显示电路设计等。在电路图板上完成各模块设计和连接。分析易得,此系统能够完全满足设计需要。经过光耦等器件克服电机驱动部分和单片机部分相互干扰。
关键词:单片机;硬件设计;软件编程;89C52
Abstract
The general sorting robot is more complicated due to its operation,sorting is less efficient,human-computer interaction system is not perfect,poor mechanical performance has been difficult to meet the needs of today's social production practice. Accompanied by the rapid development of society,the demand for smart sorters is also growing。The design of a sorting robot based on a single chip has a great practical need and social function.According to the requirements of the control system,Decided to adopt the United States INTEL MCS-51 series of basic products 89C52,as the main control chip for the sorting robot。It has the advantages of fast running speed, low power consumption and strong anti-interference ability,can be completely my design requirements。The system includes both hardware and software。The hardware system mainly includes the design of voltage conversion circuit,design of serial circuit of PC computer connected by single chip microcomputer,design of Single Chip Microcomputer System,design of the drive circuit,display circuit design, etc。In the circuit board to complete the design and connection of the module。Analysis easy to get,This system can fully meet the design needs。Through the optocoupler and other devices to overcome the motor drive part and the microcontroller part of the mutual interference。
Keywords: Single chip,hardware design,software programming,89C52
目 录
第一章 序言 1
1.1 本论文背景和意义 1
1.2 研究现实状况 1
1.3 本论文关键方法和研究进展 2
1.4 本论文工作原理框图 2
1.5 本论文关键内容 3
第二章 系统方案设计 4
2.1 单片机型号论证和选择 4
2.2 数据显示模块论证和选择 5
2.3 驱动器模块论证和选择 6
2.4 电磁阀论证和选择 7
2.5 总体方案比较和选择 7
第三章 系统硬件电路设计 8
3.1 STC89C52RC单片机模块 8
3.1.1 中央处理单元CPU介绍 8
3.1.2 STC89C52RC单片机特点 9
3.2 复位电路模块 10
3.3 振荡电路模块 10
3.4 LCD12864液晶显示器模块 11
3.5 继电器驱动电路 11
3.6 8255电机驱动 12
3.7 外部定时器 12
3.8 下载电路 14
第四章 软件系统设计 15
4.1程序步骤图 15
4.2块初始化函数 15
4.2.1定时器初始化和pwm模拟 15
4.1.2 12864液晶初始化 20
4.2 按键检测程序 25
4.3电机运行状态控制程序 27
4.3.1电机控制方法介绍 27
4.3.2电机速度控制策略 27
4.4机械爪控制程序 31
4.5锁存器74LS573控制程序 32
第五章 设计总结及技术展望 33
致 谢 34
参 考 文 献 35
附录1 系统设计电路总图 36
第一章 序言
1.1 本论文背景和意义
伴随人类社会进步,人类聪慧才智使得工具越来越优异。工具一直是为人类服务而被生产和改善。工具进步使人类劳动愈加方便,能够在更困难环境中工作。机器人诞生是经过解放人类双手和大脑,从社会生产力枯竭和生产更方便工具。
自恩格尔伯格先生发明Error! Reference source not found.,机器人已经在过去1里发生了很大改变。现在,机器人已广泛应用于人类生产活动各个领域。在现代工厂中,白天不懂夜黑,输送搬运物品,危险完成排爆排爆机器人替换人类工作,甚至坐在宇宙飞船探索宇宙去探索人类未知世界。和人类相比,机器人有很多优点。机器人不怕累,怕脏,不怕苦。在危险情况下,机器人功效突出。而且,机器人工作正确性比较高,大家不会受到一样情绪波动影响。机器人运动方法关键是机械运动,电机驱动Error! Reference source not found.是其关键控制方法。
单片机控制电机驱动Error! Reference source not found.在当今社会很普遍。伴随单片机理论和硬件系统更替,单片机控制技术在国民经济发展中起着关键作用。自20世纪70年代单片机诞生以来,前后经历了单片机、单片机和SOC三个发展阶段。现在,供给链管理正朝着高性能、多品种方向发展。未来趋势将是CMOS,低功耗,小体积,高性能,低价格,外围电路。现在,如功率表、示波器等智能仪表,在工业控制、家用电器、多种大型电器等模块化应用中,全部有单片机使用。单片机渗透到我们工作各个领域。
1.2 研究现实状况
国外分拣系统起步较早,现在普遍采取自动化分拣系统,在中国分拣系统起步较晚,现在关键采取人工分拣方法。智能分拣系统发展依靠于机械设计水平不停提升,在自动分拣系统中Error! Reference source not found.,机械手爪设计科学性影响系统正常工作。
自动分拣系统是二战后,发达国家为了提升运输物品效率提出一个作业方法,广泛应用于大型商场、快递行业。分拣系统适适用于大批量分拣货物,降低了犯错概率。此系统出现极大降低了人员使用。伴随技术发展,国外分拣系统展现出自动化程度越来越高Error! Reference source not found.,正确度越来越高。不过系统一次性投入较大,资本回收较慢,系统结构复杂,同时对商品外观要求较高,所以中国发展较慢。而机械机械手在国外发展也较快,因为国外起步较早,其机床加工水平相对较高,机械手爪生产关键使用自动化机械生产,产品工艺水平高,同时机械手臂自由度公式出现,加紧了工业水平提升,经过理论计算能够得到机械手臂尺寸和需要多少相关模块Error! Reference source not found.Error! Reference source not found.Error! Reference source not found.。在进行设计之前能够进行仿真分析每个部件受到力度,优化各部分尺寸设计。
在中国分拣系统起步较晚,现在还是关键采取人工分拣方法。中国分拣系统集约化程度低。企业投资通常集中在货架和传送带等设备上面。物流体系整体运转较低,技术设备相对落后。伴随技术发展,中国自动分拣系统也在不停发展,中国能够自主生产多个自动分拣机,如托盘式翻板式和交叉带式分拣机等,关键应用于配送中心、邮政、机场等部门。但精度还需要提升。同时中国机械加工水平不停提升,中国机械加工起步较晚,但伴随车床等技术引进,发展较快。
1.3 本论文关键方法和研究进展
本毕业设计论文以生产实践中所出现问题为出发点, 为了满足市场化需要,提升中国自动化水平,本文拟研究一款基于单片机分拣机器人。该系统采取传送结构实现,传送带负责将物件传送等候分拣,红外检测到物品抵达时,单片机控制伺服电机抓取物品,放置在对应物品箱。
1.4 本论文工作原理框图
本设计采取以单片机为控制关键,实现抓物基础动作功效,基于红外技术收发系统实时检测机器抓物设计和实现工作原理框图图1.4所表示。
图1.4 工作原理框图
1.5 本论文关键内容
研究伺服电机和步进电机区分,伺服电机工作原理,单片机控制器使用驱动器高精度控制伺服电机运动Error! Reference source not found.,能够实现水平、垂直两个轴定位控制和机械手爪开合控制;
(1)手爪运行速度可达3m/s,定位精度大于0.5mm;
(2)要含有很好人机接口和安全性方法;
(3)控制系统含有和其它计算机通讯功效。
第二章 系统方案设计
2.1 单片机型号论证和选择
方案一:51单片机
优点:STC89C52RC是51单片机,它成本低性能高而且支持ISP和IAP技术。用户能够在系统板上烧录自己程序,修改调试很简单方便。IAP技术能将内部部分EEPROM能够用专用Flash替换使用,确保停电后能确保数据不丢失,擦写次数能够达成100000数次,不用外接EEPROM。而且和传统8051单片机程序兼容,硬件无需改动。
缺点:作为8位单片机,运行速度相对来说比较慢。而且一般非加强版51单片机并不带内部时钟电路,假如不外接振荡电路就无法工作,5v工作环境相对来说比较耗电。
方案二:MSP430单片机
优点:使用MSP430系列单片机。MSP430系列单片机是美国德州仪器企业生产一个16位微处理器,使用是精简指令集。MSP430单片机最显著特点就是超低功耗。微小电量就能使单片机正常工作,中央处理器可工作电压在1.8V~3.3V之间Error! Reference source not found.。
缺点:超低功耗使得单片机只需要3.3v就能工作,不过这也使得很多需要5v才能工作硬件电路需要外加驱动才能工作,使得硬件设计复杂化。而且430单片机不带片内EEPROM,这就使得430单片机不能实施部分特殊指令。430单片机作为16位单片机即使运行速度快了部分不过价格却高了很多,在产品设计中无疑会增加产品成本。
方案三:STM32单片机
优点:STM32F1系列属于32位ARM微控制器中中低端产品,由意法半导体企业生产, Cortex-M3内核。可由Flash大小可分为小容量、中容量、大容量。芯片集成定时器,CAN,ADC,SPI,I2C,USB,UART,等多个功效Error! Reference source not found.。所以STM32单片机基础含有51和430单片机全部优点,而且伴随STM32普及,部分STM32低端产品甚至比430还要廉价。
缺点:基于ARM内核STM32单片机价格也是单片机中价格最高,而且程序编写复杂,初学者不轻易看懂。
总而言之,STM32单片机即使最强,不过因为其出色性能和高昂价格,使得它并不适适用于小型电子产品应用,430单片机能够说除了低功耗基础没有任何优点。至于51单片机,作为年代最早单片机,它使用方法简单,基础能满足多个小型电子产品设计需求,而且它使用和学习全部十分简单,比较能被更多人接收。经过对比使用STC89C52RC单片机。
2.2 数据显示模块论证和选择
方案一:数码管
优点:数码管是由半导体发光器件组成,关键是由八个发光二极管工作。而且数码管拥有两种驱动方法,静态显示驱动和动态驱动,不过不管是动态驱动还是静态驱动,数码管全部有高亮度和低功耗优点。而且数码管使用相当简单且价格低廉。
缺点:不一样位数数码管管脚数不一样,位数越多管脚越多。全部数码管全部需要外接驱动电路,焊接比较复杂而且能显示内容相当有限。
方案二:LCD1602
优点: LCD1602为平面薄型显示设备,LCD1602能够显示字母、符号和数字,能够显示16*2个字符,能够显示较多信息。而且LCD1602价格低,体积小,功耗低等优点,被广泛用作多种仪器显示器。
缺点:1602除了程序上要求复杂一点基础没有缺点。
方案三:LCD12864
优点:12864液晶显示模块分为有字库和无字库两种,全部是由128*64个点阵组成,该模块能够较多多种文字数字字符图案等信息。而且使用较为方便。
缺点:该模块价格较高,有字库12864在编程是轻易出现字符乱码现象,处理起来较为麻烦。
总而言之,LCD1602含有很大优势,不过考虑到实际需求,即使数码管使用硬件设计比较复杂,不过很多情况下能够直接使用驱动芯片来替换驱动电路,而且在大部分电子产品中液晶LCD1602使用并不是很普及,比如它显示字符尤其小,且不可改变,大部分电子产品中使用全部是笔段式液晶,其原理和使用方法和数码管一样,不过成本却比数码管要高得多,不过这两种模块全部只能十分局限显示数字字母等信息,无法符合此次设计要求,以此次设计选择了无字库LCD12864。
2.3 驱动器模块论证和选择
方案一:继电器
优点:继电器是在电气输出电路中使用电气控制装置,使用较为广泛,使用方法简单。而且依据不一样要求还分为不一样继电器,一般继电器价格也十分低。
缺点:继电器使用需要外接驱动电路,而且不一样功率继电器所需要驱动电压也不一样,所以使用继电器时要考虑到电源要求。
方案二:可控硅
优点:使用简单,不管多大功率可控硅全部只需要高低电平就能驱动,不需要考虑控制端电源要求。
缺点:只适适用于交流电。
总而言之:此次设计不需要使用大功率电机,所以一般继电器就能工作,所以选择继电器。
2.4 电磁阀论证和选择
方案一:直动式电磁阀
在通电时电磁力会将关闭阀门开关提起,阀门就打开了,断电时候电磁力消失开关又开始工作阀门就会关闭Error! Reference source not found.。
优点:能在多种环境下工作。
缺点:孔径太小,用处很局限。
方案二:先导式电磁阀
在通电时候电磁力会先把导孔打开,这么会使上腔压力下降,在关闭开关周围形成压差,流体产生压力毁推进开关向上移动,阀门开启。一样断电,阀门关闭Error! Reference source not found.。
优点:能够经过定制随意安装。
缺点:工作时有流体压差限制。
总而言之,作为机械手,需要满足任意性,有力度限制,所以选择先导式电磁阀。
2.5 总体方案比较和选择
该设计运动关键利用直流电机实现在平面上运动,数字金属舵机组成机械手抓取物体。利用按键控制装置抵达指定位置,再由机械手抓取物体,再将物体送往指定位置,从而实现物体分拣。Error! Reference source not found.
主控芯片选择较多,有常见AVR、STC、ARDUINO 等。依据之前学过课程,我们决定采取stc系列STC89c5A60S2增强型单片机作为主控芯片。之所以不选89C52等芯片,不是因为她们运算速度不够,关键原因是它们片上flash太小,难以满足需求,其次是因为自己有闲置STC89C5A60S2,片上内存大,运算速度1T,即充足利用资源节省成本,又能够实现所需要功效需求。
最终就是隶属配件 usb转ttl串口stc下载线。
选择采取cp2102作为usb转串口芯片方案,下载STC单片机完胜PL2303方案,最高下载速度可达115200波特率。
第三章 系统硬件电路设计
3.1 STC89C52RC单片机模块
3.1.1 中央处理单元CPU介绍
STC89C52RC单片机是宏晶科技推出一款超低功耗、抗干扰、高速单片机。STC89C52RC单片机选择8051核ISP在系统可编程芯片。它含有结构简单,易于开发和价格廉价等特点。
STC89C52RC单片机有两种工作电压,一个是2.0V-3.8V,即3V电压单片机,另一个是3.4V-5.5V,即5V电压单片机,本设计选择5V电压单片机。
STC89C52RC单片机含有很宽广工作温度范围,工业级单片机能够工作在-40℃至85℃环境里,商业级单片机能够工作在0℃至75℃环境里。
STC89C52RC单片机工作频率最大能够达成48MHz,这么它就能够以飞快速度去处理相关数据。
STC89C52RC单片机内部拥有专用复位电路,当外部晶体频率在20MHz以下时,能够省去外部复位电路。
STC89C52RC单片机是一个低功耗、抗干扰性强、速度快单片机。STC89C52RC单片机在系统可编程芯片上使用8051核isp。其特点是结构简单,开发简单,价格低廉。
STC89C52RC微控制器有两种工作电压,一个是2.0 V到3.8 V,即三V电压单片微机,另一个是3.4 V到3.4 V,5 V电压单芯片微机,这种设计选择5伏电压单片机。
STC89C52RC单片机含有广泛工作温度范围,工业级MCU可在40到85环境中工作,在0到75环境中,单片微型计算机商业水平能够工作。
STC89C52RC单片机工作效率最高为48MHz,所以它能够以快速速度处理相关数据。
STC89C52RC单片机有一个专用复位电路,当外部晶体频率低于20MHz时,它能够保留外部复位电路
3.1.2 STC89C52RC单片机特点
1.512字节RAM;
2.eepm功效;
3.两个16位定时器/计数器;
4.看门狗;
5.有一个程序系列UART通道;
6.六个中止;
7.低功耗模式;
8.有三个等级加密内存
图3.1.2 STC89C52RC管脚图
3.2 复位电路模块
当系统接入5V电源时时,STC89C52RC单片机开始复位,图3.3所表示复位电路模块电路原理图。
图3.2 复位电路模块电路原理图
3.3 振荡电路模块
此次设计选择是11.0592MHz晶振和30pF电容,那么STC89C52RC单片机工作周期是11.0592MHz×(1/11.0592MHz)=1us。图3.3所表示最小时钟振荡电路原理图。
图3.3 振荡电路模块
3.4 LCD12864液晶显示器模块
本设计使用LCD2864液晶显示作为观察正在实施功效。图3.4所表示为LCD12864液晶显示器电路原理图。
图3.4 LCD12864液晶显示器模块电路原理图
3.5 继电器驱动电路
当认为按下开启按键时,单片机开始工作,给继电器发送指令。因为STC89C52RC单片机端口输出电流比较低,所以加一个三极管以增大功率,驱动继电器正常工作。图3.5所表示继电器电路原理图。
图3.5 继电器驱动模块电路原理图
3.6 8255电机驱动
DRV8255能够驱动一个二项四线步进电机,也能够驱动两个直流电机,和8-45v输入电压,最大电流为1.7a,经得起2.5a瞬时电压经过PWM输入驱动。能够avref / bvref调整电机绕组电流电阻,电流应大小电机额定电流;经过模型/模型/模式,三角配置细分驱动模式,您能够配置2 / 4 / 8 / 16 / 32细分。nhome脚,从电源,电机转了45度位置,nhome引脚会输出一个低电平。图3.6.
图3.6 8255连接电路
3.7 外部定时器
此次8253作为定时器实施复杂电机控制器。
1.数据母线缓冲器这个三态、双向和八位缓冲器用于将8253和系统数据总线连接起来。CPU实施输入/输出指令时缓冲器就发送或接收数据。数据总线缓冲器有三个基础功效:
·经过编程确定8253工作方法;
·向计数寄存器装入数据;
·读出计数值。
2.读/写逻辑读/写逻辑接收来自系统总线输入,然后产生控制整个器件工作控制信号。由CS信号来许可或严禁读写逻辑工作,所以除非该器件被系统逻辑选中,不然不会发生改变其功效操作。
3.RD(读)这个输入端上低电平信号通知8253,CPU正在输入计数值。
4.WR(写)这个输入端上低电平信号告诉8253,CPU正在输出工作方法信息或向计数器装入数据。
5.A0A1这两个输入端通常连接到地址总线上。其作用是选择三个计数器中一个和选择控制字寄存器方便选择工作方法。
6.CS(选片)这个输入端上低电平信号将启用8253。除非器件被选中,不然不会发生读或写操作。CS输入信号对计数器实际操作没有影响8253内部拥有三个独立不过结构和功效全部相同定时器。此次设计使用到了两个8253,连接方法图3.7。
图3.7 8253连接图
3.8 下载电路
此次设计使用到了CH340芯片下载,因为现在笔记本电脑全部没有了并口通信接口,而用了CH340就能够实现USB转串口,电脑上装上驱动后就能够下载数据,接线方法图3.8图所表示.
图3.8 CH340下载电路
第四章 软件系统设计
4.1程序步骤图
程序采取了次序结构,步骤图以下:
4.2块初始化函数
4.2.1定时器初始化和pwm模拟
本方案中定时器采取是8253定时器,该定时器有六种工作方法,我们需要定时功效。8253片选端是用来控制订时器工作方法端口。该端口连接至单片机io口。只需要设置对应端口电平就能够设置定时器工作方法。定时器作用是用来控制电机转动时间。
因为存在着电机这种设备,所以需要使用pwm进行调速。不过51单片机并不能直接输出pwm,所以本设计中经过软件模拟方法产生pwm。软件模拟关键利用定时器定时中止功效。本设计采取是51单片机,51单片机内部有两个定时器,分别是T0和T1,T0和T1是两个完全一样16位定时器。定时器作用关键就是定时,在51单片机中定时器工作方法是以中止方法进行。设定一个定时时间当定时器定时达成定时时间后,就会进入定时器中止。在中止中能够处理相关事件。
在本设计中定时器中止作用是用来模拟产生pwm。因为51单片机内部不带硬件pwm,所以需要模拟。模拟思绪是经过定时器设定时间来控制脉冲宽度,其控制思绪以下图所表示:
上述步骤图是定时器模拟产生pwm步骤,定时器设定定时时间为1ms,也就是说,定时时间到了1ms定时器就会进入中止,在初始化时,要首先设置好单片机工作方法,设置单片机工作方法为方法1,定时时间设为1ms,经过往寄存器TH和TL中装入初始值实现计时时间调整。定时时间到1ms时,程序会自动进入中止。在中止服务程序中能够实施相关任务代码。也就是说程序会每隔1ms就会进入一次中止,就会有一个较为正确周期性。
在中止中关键进行是按键处理和pwm模拟,按键处理将在后续章节中介绍。PWM以下图所表示:
图4.2.1 PWM图
在上图中,能够看到pwm是一个方波。占空比是t/T,要让单片机管脚输出这个占空比,只有经过定时器来实现。首先假设要输出pwm频率为100hz,也就是周期T为10ms。在上面已经提到设置单片机定时时间为1ms,也就是每个1ms会实施一次中止服务程序。在中止服务程序里设一个变量flag,每进一次中止这个变量就会自增一次,那么变量自增次数就能够用来表示时间,每加一次就是过来1ms。利用这个时间变量就能够设置单片机输出PWM了。假设现在要设置占空比是百分之30.那么就是说整个周期中,高电平时间占整个周期百分之30.也就是3ms。在程序中是经过判定定时变量实现,在第一次进入中止时,设置单片机一个io口输出低电平。当第七次进入中止时,此时恰好是7ms。控制这个单片机io口输出电平翻转,输出高电平。当第十次进入中止时候,此时是第10ms,控制这个io口再次输出低电平,如此反复,就能够模拟出占空比为百分之30pwm了。
程序代码以下:
void timer0( ) interrupt 1 //定时器0工作方法1
{
TH0=0xff; //重装计数初值
TL0=0x38; //重装计数初值
b++;
get_key(); //按键查询
if(p10==0)
{
delay(10); //延时消抖,按键消抖
if(p10==0)
{
p00=0;p02=p01=p03=1; //前进
list_write_HZ_Str(6,20,"qianjin");
}
}
if(p11==0)
{
delay(10);
if(p11==0)
{
p01=0;p02=p00=p03=1;
list_write_HZ_Str(6,20,"houtui ");//后退
}
}
if(p12==0)
{
delay(10);
if(p12==0)
{
p02=0;p00=p01=p03=1;
list_write_HZ_Str(6,20,"zuo "); //左边
}
}
if(p13==0)
{
delay(10);
if(p13==0)
{
p03=0;p00=p01=p02=1; //右边运动
list_write_HZ_Str(6,20,"you ");
}
}
if(p14==0)
{
delay(10);
if(p14==0)
{
p00=p02=p01=p03=1;
list_write_HZ_Str(6,20,"停止 ");
}
}
if (key_up==1)
{
if(X!=15) //判定是否计数到9999
{
X=X+1; //加一
key_up=0;
}
}
if (key_down==1)
{
if(X!=2) //判定是否计数到0
{
X=X-1; //减一
key_down=0;
}
}
}
4.1.2 12864液晶初始化
12864是一个带字符库液晶,能够显示128*64个点。12864液晶需要经过软件写入命令和数据才能够显示出字符。在初始化时首先需要写入命令,让12864液晶进入显示状态。设定显示地址。指令是依据12864液晶数据手册编写。12864液晶初始化步骤以下:
程序代码以下:
//*****************写指令代码*****************//
void wcode(uchar cd) //写指令 代码
{
chkbusy(); //写等候
P2=0xff; //使能LCD
RW=0; //读严禁
RS=0; //输出 设置
P2=cd; //写数据代码
E=1; //以下两句产生下降沿
E=0;
}
//*******************把显示数据写到内存单元中 *****************//
void wdata(uchar dat) //写显示数据
{
chkbusy(); //写等候
P2=0xff; //使能LCD
RW=0; //读严禁
RS=1; //输出 设置
P2=dat ^0xFF; //写数据代码
E=1; //以下两句产生下降沿
E=0;
}
//****************显示LCD程序********************//
void disrow(uchar page,uchar col,uchar *temp)
{
uchar i;
if(col<64) // 左半平面
{
L=1;R=0;
wcode(LCDPAGE+page); // 写指令 页
wcode(LCDLINE+col); //写指令行
if((col+16)<64) //假如字在左半平面显示不了,转到右半平面去
{
for(i=0;i<16;i++) //写字
wdata(*(temp+i));
}
else //右半平面
{
for(i=0;i<64-col;i++) //减去左边数,从右半平面第一位开始显示
wdata(*(temp+i)); //写字显示
L=0;R=1; //右半平面
wcode(LCDPAGE+page); // 写指令页
wcode(LCDLINE); //写指令行
for(i=64-col;i<16;i++) //写字右半平面
wdata(*(temp+i));
}
}
else
{
L=0;R=1;
wcode(LCDPAGE+page); // 写指令 页
wcode(LCDLINE+col-64); //写指令行
for(i=0;i<16;i++) //写字
wdata(*(temp+i));
}
}
//*********************供调用 ****子程序 *************//
void display( int page, int col,uchar *temp)
{
disrow( page, col, temp); //显示上半字
disrow( page+1, col, temp+16); //显示下半字
}
void disrow_ascii(uchar page,uchar col,uchar *temp)
{
uchar i;
if(col<64) // 左半平面
{
L=1;R=0;
wcode(LCDPAGE+page); // 写指令 页
wcode(LCDLINE+col); //写指令行
if((col+8)<64) //假如字在左半平面显示不了,转到右半平面去
{
for(i=0;i<8;i++) //写字
wdata(*(temp+i));
}
else //右半平面
{
for(i=0;i<64-col;i++) //减去左边数,从右半平面第一位开始显示
wdata(*(temp+i)); //写字显示
L=0;R=1; //右半平面
wcode(LCDPAGE+page); // 写指令页
wcode(LCDLINE); //写指令行
for(i=64-col;i<8;i++) //写字右半平面
展开阅读全文