基于51单片机的轮式自动抓捕器系统 西安科技大学 - 图文(8)

2018-12-29 21:10

push_val_left=19; // 抓取货物 delay(500); IN5=1; IN6=0; delay(300); IN5=1; IN6=1; delay(400);

controlcar(6); // 调头 delay(800);

controlcar(1); // 前进 }

// 将货物向上提升一点,使其与货架分离

controlcar(2); // 后退一小段

4.5 显示部分软件设计

在小车进行循迹、取放货物等基本功能执行的同时,本设计利用LCD12864对系统的相关信息进行显示,数据传输采用的是并行方式。

打开电源给系统上电,LCD12864液晶进行初始化,然后显示基本信息界面,作适当的延时,单片机不断地扫描各I/O口采集到的相关信息,进行显示。

4.3.1 LCD12864液晶显示的基础

本设计采用12864液晶显示系统实时状态、货架距离等信息。STC89C52单片机使用P端口和12864液晶进行数据交换,使用P0口和12864液晶进行控制信息的交换,其应用代码的相应的函数如下[3]:

void LCDInit(void): 液晶初始化子程序。

void LCDIntro(void): 对本设计基本信息进行介绍子程序。 void LCDClear(void): 填充液晶DDRAM全为空格子程序。 void LCDFlash(void): 闪烁效果子程序。

void WriteDataLCD(unsigned char WDLCD): 对液晶写数据子程序。WDLCD为要写入的数据。

void WriteCommandLCD(unsigned char WCLCD,BuysC): 对液晶写指令子程序。WDLCD为要写入的指令。

unsigned char ReadDataLCD(void): 对液晶读数据子程序。 unsigned char ReadStatusLCD(void): 读液晶状态子程序。

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData): 指定

31

位置显示一个字符子程序。X为横坐标,Y为纵坐标,DData为要显示的数据

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData): 指定位置显示一串字符子程序。X为横坐标,Y为纵坐标,DData为要显示的字符串首地址。

void DisplayImage (unsigned char code *DData): 显示一幅图子程序。DData为要显示图片的首地址。

显示部分子程序流程图如图4.12所示。此为显示一个字符的流程图,当需要显示很多字符时,只需将此过程循环调用即可。

显示子程序入口指定显示坐标写控制命令写数据命令显示返回图4.12 显示部分子程序流程图

4.3.2介绍相关信息的显示

轮式定位抓捕器系统上电,则各模块进行初始化。之后LCD12864会对本设计的基本相关信息进行介绍性显示,包括此作品的名称、制作人及指导老师基本信息。

这里主要介绍制作人图片的显示。 1.图片取模

首先,任意找一款取模软件,对需要显示的图片进行横向取模。所谓横向取模就是,一张图片从图片最左上角的8位开始取模,从左向右,每次取8位二进制数据转化为16进制保存,第一排取完之后,接着到第二排最左边8位开始取模,以此类推。之所以要这样取模,因为12864液晶的横纵坐标就是这个取模顺序。

2.将取出的字模写进相应地址

LCD12864液晶分为上半屏和下半屏。当你想要点亮某个地方时,必须先写这个地方垂直地址紧接着写入它的水平地址,水平地址液晶会自加1,但垂直地址不会。水平坐标从0x80+00到0x80+0F,一共16个,其中0x80+00到0x80+07是上半屏的坐标,其中0x80+08到0x80+0F是下半屏的坐标。水平坐标每个两字节,先写入的数据填充在高字节。垂直坐标只有0x80+00到0x80+1F,上半屏和下半屏的及垂直地址是一样的。

32

每个垂直地址只确定一排,所以水平和垂直地址不能确定某个点的位置,只能确定某个两字节的地址,通过写入两字节的数据确定点亮某个点或几个点。比如我们写入

[垂直地址]:WriteCommandLCD (0x80+1); [水平地址]:WriteCommandLCD (0x80); 这就是说将在水平坐标00,垂直坐标01的位置输入数据。如此循环每输入一次地址,写入两字节数据,直到将图片的模全部输完为止。

3. 图片显示程序清单

void DisplayImage (unsigned char code *DData); //形参传递的是图片的模的首地址

{ unsigned char x,y,i; unsigned int tmp=0;

for(i=0;i<9;) //分两屏,上半屏和下半屏,因为起始地址不同,需要分开

{ for(x=0;x<32;x++) //32行

{ WriteCommandLCD(0x34,1); //使用扩充指令集

WriteCommandLCD((0x80+x),1); //列地址 WriteCommandLCD((0x80+i),1); //行地址,下半屏,即第三行地址0x88 WriteCommandLCD(0x30,1); //基本指令集动作 for(y=0;y<16;y++) //16列 WriteDataLCD(DData[tmp+y]); //读取数据写入LCD }

tmp+=16; } i+=8; }

WriteCommandLCD(0x36,1); WriteCommandLCD(0x30,1);

//扩充功能设定,绘图开

4.3.3 系统状态实时显示

系统实时状态显示,就是当系统在正常工作的过程中,对系统当前的动作进行显示,以便技术人员查看与监控系统是否在正常运作。其中包括移动平台循迹过程中的前进、后退、左转、右转以及取放货物时的动作。

超声波模块每测得一次数据,均会在12864上将前方物体的距离以cm为单位显示出来,若超出有效量程(50cm),则显示“--.-cm”。

状态实时显示的原理较为简单,即在调用系统循迹纠偏以及取放货物程序的时候,再调用一次显示程序,显示内容保存在几个数组中。下面给出部分程序清单及注释。

void controlcar(unsigned int function) {

switch(function) //判断小车控制指令类型

33

{

case 0:

{ //小车停止 IN1=0; IN2=0; IN3=0; IN4=0; ENA=0; ENB=0;

DisplayListChar(0,3,carstatus6); //显示字库中的“停止” break; }

case 1: //小车径直前行 {

……

DisplayListChar(0,3,carstatus1); //显示字库中的“前进” break; } ...... } }

4.6 本章小结

本章从软件上重点论述了系统工作的流程、寻迹和抓放货物、显示模块的实现方法,分析了循迹的原理和软件设计,设计了“轮式自动定位抓捕器”的所有的检测与控制程序,包括主程序、运动平台小电动机驱动子程序、左、右纠偏及其循迹子程序、实时状态的显示子程序,以及运用定时器中断对抓捕模块进行控制的子程序。还介绍了整幅图片在液晶上显示的实现方法。为与硬件的联合调试打下基础。

34

第5章 系统的调试及运行

本章主要分析软件与硬件的联合调试的过程及结果,详细介绍了Keil μVision4 软件的使用,并列举了调试、运行过程中的一些问题和最终的解决方法。

5.1软件调试

本设计中,软件使用C语言编写,使用Keil μVision4 软件进行调试,并生成 .HEX文件,为之后的软硬件的联合调试打下基础。

5.1.1 Keil μVision4 软件的介绍

Keil为德国Keil Software公司开发的8051单片机的软件开发平台。由于内嵌多种符合当前工业标准的开发工具,可以完成从工程的建立和管理、编译、链接、目标代码的生成、软件仿真及硬件调试等完整的开发流程,尤其是其C编译工具在生产代码的准确性和效率方面达到了很高的水平,而且可以附加灵活的控制选项,非常适合大型项目的开发[4]。

μVision4较之前的软件增加了许多新特性: ? 多显示器和灵活的窗口管理系统。

? 系统浏览器窗口的显示设备外设寄存器信息。 ? 调试还原视图创建并保存多个调试窗口布局。 ? 多项目工作区简化与众多的项目。

5.1.2 Keil μVision4 软件的使用

Keil环境下的软件开发主要步骤如下:

? 新建一个工程项目:建立工程项目文件、选择目标器件、输入程序代码等。 ? 项目文件的设置:主要包括对目标、输出选项、仿真类型的设置等。 ? 软件编译与链接:检查并修正程序的语法错误,生成.HEX文件。 ? 软件调试:检查设计的程序是否完成了功能[4]。

通过编译和链接之后,只是说明了无任何语法错误。但是,源程序是否正确完成了设置的功能,需要通过将生成的.HEX文件通过串口线和驱动软件下载入单片机中,进行联合硬件的反复调试才能得到最终的结果。

5.2硬件调试

在软件调试成功的基础上,对本设计使用的运动平台进行硬件的调试。

5.2.1 运动平台的硬件介绍

本次设计制作的运动平台车体如图5.1和图5.2所示。

35


基于51单片机的轮式自动抓捕器系统 西安科技大学 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015年河南省专业专技人员公需科目培训(初级)最全答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: