单片机课程设计(论文)
本设计的LCD1602液晶显示模块主要是利用比较经典的LCD显示方法来进行设计的,即字符串的方式进行输出显示。流程图如图4.7所示。
首先,将MCS-51单片机处理所得的最终数据送入uchar * int2str(uint d)函数,此函数的功能是将接收到的整型数d的每个位的数字取出,放到一个字符型的数组str[]中,以便LCD1602输出显示,具体程序如下:
uchar * int2str(uint d) //整型数转化成字符型数组函数 { }
其次,对LCD1602进行初始化和清屏,使用8位数据,显示两行,使用5*7的字型;显示器打开,关闭光标闪烁;输出方式为字符不动,光标自动右移一格。具体程序如下: void init_LCD(void) // 初始化lcd
{ LCD_w_com(0x38); // lcd为两行显示8位数据线有效 LCD_w_com(0x0e); // 显示字符 关闭光标
LCD_w_com(0x06); // 输入方式设置 光标向右移动一位 ac-1 }
void clear_LCD()
//清屏
{ LCD_w_com(0x01); //清屏指令
LCD_w_com(0x02); // 光标归位 即光标置于左上位置 }
最后,是向LCD1602液晶显示器写命令函数void LCD_w_com(unsigned com)和写数据函数void LCD_w_dat(uchar dat)以及字符串输出函数void display_LCD_string(uchar *p)、光标定位函数void gotoxy(unsigned x,unsigned y)。写命令函数的功能是向LCD1602中写入相应的命令指令,比如清屏命令LCD_w_com(0x01),实现LCD1602清屏功能。写数据函数和字符串输出函数的功能是向LCD1602写入要输出的数据,字符串输出函数中定义的指针P指向前面的字符型数组str[],一位一位的输出。光标定位函数的功能是告诉LCD1602要输出的数据的显示位置。具体程序如下: void LCD_w_com(unsigned com) { RW=0; RS=0; E=1; P0=com; delay1ms(10); E=0; RW=1; }
void LCD_w_dat(uchar dat) // 写数据 函数, 写要显示的数据 { RW=0; RS=1; E=1; P0=dat; delay1ms(10);
29
str[0]='0'+d/100; str[1]='0'+d0/10; str[2]='0'+d; return str;
//写命令函数,com为 要写的指令
单片机课程设计(论文)
E=0; RW=1; }
void display_LCD_string(uchar *p)//字符串输出函数 { while(*p)
{ LCD_w_dat(*p); p++; delay1ms(10); }}
void gotoxy(unsigned x,unsigned y) //定位 ,x为行,y为列 { if(x==1) LCD_w_com(0x80+y); else LCD_w_com(0xC0+y); }
4.6 本章小结
本章对整个系统所包含的几个模块进行了详细的介绍和设计,包括TCS3200D驱动模块、TCS3200D颜色采集模块、LED补光模块以及LCD1602液晶显示模块。其中TCS3200D颜色采集模块、LCD1602液晶显示模块是最重要的部分。颜色采集模块利用TCS3200D颜色传感器进行数据采集,以数字量输出,送到51单片机里进行数据处理,最后通过LCD1602液晶显示器显示出来。
30
单片机课程设计(论文)
5 色彩识别系统的实验
5.1色彩识别的实验过程
事物是随时间变化而运动变化的,由于本系统对软硬件关联性要求很高,其整个实验过程中间变化过程很复杂,一般仿真无法实现。
本设计的实验过程很简单,具体操作如下:首先将开发板接通电源,将色彩纸板放平,其次把设计中的颜色采集模块放在待测的纸板上,放正放平,最后用隔光较好的纸张或者盒子将颜色采集模块遮盖起来,然后用笔记录LCD显示的值,依次测量不同颜色的纸板并记录数据即可。
在实验过程中进行了多次的测量试验,记录的一些数据如下图5.1
颜色纯白结果第一次第二次第三次第一次第二次第三次第一次第二次第三次第一次第二次第三次R253255249166166166078075069035028031G246250252036047036131128133043045042B243253250044041040061062058107101105图像纯红纯绿纯蓝图5.1 实验数据
5.2实验结果分析
通过上面的实验仿真结果可以看出,如果被测物体的颜色中,红色成分比较多,那么在显示的输出结果中的R的值就大;同样的,如果绿色成分多,输出结果中的G的值就大,如果蓝色成分多,输出结果中的B的值就大。表格最后一列给出了这些颜色值对应的色彩图像,而表格的第一列给出了标准的色彩图像,可以看出,实际测得值与标准值之间还存在着一定的误差,这些误差产生的原因有很多,其中之一就是外界干扰光的存在,其次因为传感器芯片对光的敏感性不同,此外可能的原因包括补光模块中的LED二极管发出的光不稳定,还可能因为物体对光的反射能力不同等等,所有的这些原因导致了在测量的过程中存在的误差在所难免,只有不断的改善,以达到减小误差的目的,所以本系统还有待更进一步的研究以改善整个系统。
5.3 本章小结
通过实验,验证了色彩识别系统的可行性,通过对纯白色、纯红色、纯绿色、纯蓝色
31
单片机课程设计(论文)
四个纸板的检测,验证了本系统的确可以完成预期的任务,实现系统功能,但是与其真实值之间还有一定的误差,这也是本系统的不完善之处,这也为以后的更完善的功能更强大的精确度更高的色彩识别系统打了一个结实的基础,为以后更好的完善和简化色彩识别系统做下了铺垫。
32
单片机课程设计(论文)
6 结论与展望
6.1 结论
本文就色彩识别系统的原理及实现做了研究。现将本论文所做的主要工作内容总结如下:
(1) 建立颜色识别系统的模型,推算出颜色识别的算法。 (2) 介绍单片机等主要模块的的功能及优势。 (3) 对系统进行整体的软硬件设计。
(4)编写程序计算RGB三种颜色值,然后进行测试实验,以验证论文中结论的准确性。
总的来说,本论文是以STC89C52RC单片机为基础,利用TCS3200D颜色传感器模块,LCD1602液晶显示模块实现色彩识别系统的设计,并进行了色彩识别的测试实验。其中,色彩识别的算法实现原理和各模块的实现是本论文研究的重点。
由于本人水平有限,在本文的研究过程中也存在着一些不足之处:色彩识别的核心难点是RGB三种颜色测量的算法设计,算法的优劣程度很大程度上决定了色彩识别系统的优劣,而难以建立精确的测量算法。
6.2 展望
色彩识别技术是现代工业化、自动化社会的一门重要技术。根据本文己完成的工作,对需要进行的下一步研究工作做如下展望:
(1)完善色彩处理的算法。本文对测得的RGB三种颜色的频率值只取了前三位,所以在精确度上不够精确,因此需要建立更精确的色彩处理算法,以使测量结果更准确。 (2)没有对所测色彩进行过多的色彩区分。在以后的工作中需要对色彩空间进行划分,规划出不同的色彩区间,以便可以实现更准确的色彩识别。
从本设计的色彩识别系统到实际的产品,还有很多的不足之处,需要考虑系统的稳定性、抗干扰能力、供电等等问题,因而还有大量的研究内容,需要我们进行更深入的研究。我相信在不久的将来,色彩识别系统将被广泛应用到各个行业之中。
33