别人的毕业设计基于TCS230颜色传感器的色彩识别器的设计 - 图文(6)

2019-01-27 14:43

徐州工程学院毕业设计(论文)

4 色彩识别器系统的设计与实现

4.1 系统结构框图

色彩识别系统是基于MCS-51系列单片机控制的基础上,添加了TCS230颜色传感器采集模块,TCS230驱动模块,四个白色LED补光模块,LCD1602液晶显示模块,在这些模块的基础上实现的色彩识别系统,色彩识别系统的设计如图4.1系统框架所示。实物图如4.2所示。

TCS230驱动模块MC-51系列单片机TCS230颜色采集LCD1602液晶显示模块四个白色LED补光模块图 4.1 系统框架

图4.2 色彩识别系统实物图

4.2 TCS230驱动模块

TCS230采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64个光电二极管,这些二极管分为四种类型,其16个光电二极管带有红色滤波器;16个光电二极管带有绿

22

徐州工程学院毕业设计(论文)

色滤波器;16个光电二极管带有蓝色滤波器,其余16个不带有任何滤波器,可以透过全部的光信息,这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;另一方面,相同颜色的16个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。

本模块主要包括TCS230初始化、定时器初始化和颜色采集,具体程序如下: void TCS230Inital(void)

{ DDRC= DDRC|0x0f;PORTC = PORTC|0x0f; }

void TimerInital(void) { }

unsigned char TCS230Mode(unsigned char FOutMode,unsigned char PhotoType) {

if( FOutMode == F_POWERDOWN) {

PORTC = PORTC & 0xfc; } else if(FOutMode == F_100_2) { { { {

PORTD = PORTD & 0xfe;PORTD = PORTD | 0x02;} PORTD = PORTD & 0xfd;PORTD = PORTD | 0x01;} PORTD = PORTD | 0x03; } return 1; }

FrequencyMode = FOutMode; if(PhotoType==PH_RED) {PORTD = PORTD & 0xf3; } else if(PhotoType==PH_CLEAR) {

PORTC = PORTC & 0xf7;PORTC = PORTC | 0x04;

}

else if(PhotoType==PH_BLUE)

23

PORTC = PORTC|0x20; DDRC= DDRC|0x20;

PORTC = PORTC&0xdf;TCS230Mode(FrequencyMode,PhotoDiodeMode);

TCCR1A=0x00; TCCR1B=0x06; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00;ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR= 0x00; TCCR2 = 0x07; TCNT2 = 0xb7; OCR2= 0x00; TIMSK=0x40;

else if(FOutMode == F_100_20) else if(FOutMode == F_100_100) else

徐州工程学院毕业设计(论文)

}

{ { {

PORTC = PORTC & 0xfb;PORTC = PORTC | 0x08; PORTC = PORTC | 0x0c;

}

}

else if(PhotoType==PH_GREEN) else

return 2; }

PhotoDiodeMode=PhotoType; return 0;

4.3 TCS230颜色采集模块的设计

4.3.1 TCS230颜色采集模块与51单片机的接口

本设计中,TCS230模块主要与51单片机的P1口和P3口连接。P1口是准双向口,它只能作通用I/O接口使用。P1口的输出只由一个场效应管与内部上拉电阻组成。其输入输出原理特性与P0口作为通用I/O接口使用时一样,当其输出时,可以提供电流负载,不必像P0口那样需要外接上拉电阻。P1口具有驱动4个LSTTL负载的能力。

P3口除了作为准双向通用I/O接口使用外,它的每一根线还具有第二种功能,见表4.1.

表4.1 P3口的第二功能

P3口的引脚 第二功能 P3.0 RXD 串行口输入端 P3.1 TXD 串行口输出端 P3.2 INT0 外部中断0请求输入端,低电平有效 P3.3 INT1 外部中断1请求输入端,低电平有效 P3.4 T0 定时/计数器0外部计数脉冲输入端 P3.5 T1 定时/计数器1外部计数脉冲输入端 P3.6 WR 外部数据存储器写信号,低电平有效 P3.7 RD 外部数据存储器读信号,低电平有效 当P3口作为通用I/O接口时,第二功能输出线为高电平,与非门的输出取决于锁存器的状态。这时,P3是一个准双向口,它的工作原理、负载能力与P1、P2口相同。

当P3口作为第二功能使用时,锁存器的Q输出端必须为高电平,否则场效应管导通,引脚将被钳位在低电平,无法实现第二功能。当锁存器Q端为高电平,P3口的状态取决于第二功能输出线的状态。单片机复位时,锁存器的输出端为高电平。P3口第二功能中输入信号RXD、INT0、INT1、T0、T1经缓冲器输入,可直接进入芯片内部。 TCS230颜色传感器与51单片机具体的连接方式如图4.3所示。

4.3.2 TCS230颜色采集模块的软件设计

本设计的TCS230颜色采集模块主要是利用定时器/计数器T0和外部中断INT0来实现的。流程图4.4所示。

24

徐州工程学院毕业设计(论文)

图4.3 TCS230与51的连接图

定时器初始化外部脉冲信号定时时间到否外部中断计数是输出频率值图4.4 颜色采集模块软件流程图

1、定时器/计数器:MCS-51系列中51子系列有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1;52子系列有三个,比51子系列多一个定时/计数器T2.每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。

在方式0下,16位的加法计数器只用了13为,分别是TL0的低5位和TH0的8位,TL0的高3位未用。计数时,当TL0的低5位计满时向TH0进位,当TH0也计满时则溢出,是TF0置位。如果中断允许,则提出中断请求。另外也可通过查询TF0判断是否溢出。由于采用13位的定时/计数方式,因而最大计数值位2的13次幂,为8192。在实际中使用时,先根据计数值计算出初值,然后按位置置入到初值寄存器中。如定时/计数器T0的

25

徐州工程学院毕业设计(论文)

计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则TH0=11100000,TL0=00011000B。在方式0计数的过程中,当计数器计满溢出,计数器的计数过程并不会结束,计数脉冲来时同样会进行加1计数。只是这时计数器是从0开始计数,是满值的计数。如果要重新实现N个单位的计数,则这时应重新置入初值。

在本设计中,设置T0的工作方式为方式0,定时1ms,赋初值为TH0=0xe0,TL0=0x18,在定时器/计数器T0中断函数void timer0(void)中重新给定时器/计数器T0赋初值,并且设定了一个变量lck,用来计数定时器/计数器T0中断的次数,当变量lck达到1000时,表明定时了一秒钟,而外部中断0的中断函数void int0(void)中定义的变量dispcount在定时一秒时间达到时候的值就是此时所选择的某种颜色通道的频率值。具体程序如下:

void initTimer(void) // 定时器初值1ms { TMOD=0x0; TH0=0xe0; TL0=0x18; }

void timer0(void) interrupt 1 //定时1秒,每一秒中断一次,所记得数就是频率 { TH0=0xe0; TL0=0x18; lck++; if(lck==1000)

{ disp=dispcount; lck=0; }

2、MCS-51单片机提供5个硬件中断源:2个外部中断源INT0和INT1;2个定时器/计数器T0和T1的溢出中断TF0和TF1;1个串行口发送TI和接收RI中断。外部中断源INT0和INT1的中断请求信号从外部引脚P3.2和P3.3输入,主要用于自动控制、实时处理、单片机掉电和设备故障的处理。外部中断请求INT0和INT1有两种触发方式:电平触发和边沿触发。在边沿触发方式时,CPU在每个周期都采样P3.2或P3.3。为了保证检测到跳变,输入到P3.2或P3.3引脚上的高电平与低电平至少应保持1个机器周期。CPU响应后能够由硬件自动将IE0或IE1清零。

本设计中采用外部中断请求INT0来接收传感器的输出值。TCS230颜色传感器的OUT输出端与外部中断INT0(P3.2)管脚相连接,在外部中断INT0的中断函数void int0(void)中定义了一个变量dispcount,当接收一个脉冲信号时,dispcount就会加1,在定时/计数器T0设定的一秒时间内所累计的数值就是频率。具体程序如下:

void int0(void) interrupt 0 }

3、RGB三种色彩通道采集:此处设置了三个函数void red()、void green()、void blue(),分别代表红、绿、蓝三种颜色通道。在红色通道中,设置S2、S3都为低电平0,表明选择

26

dispcount=0; }

//外部中断0,TCS230的OUT端口接到INT0端口

{ dispcount++; //每一次中断,计数加一


别人的毕业设计基于TCS230颜色传感器的色彩识别器的设计 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高考冲刺百日决战誓师大会教师誓词

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

马上注册会员

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