别人的毕业设计基于TCS230颜色传感器的色彩识别器的设计 - 图文 联系客服

发布时间 : 星期二 文章别人的毕业设计基于TCS230颜色传感器的色彩识别器的设计 - 图文更新完毕开始阅读

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

图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++; //每一次中断,计数加一

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

红色滤波器,S0为高电平1,S1为低电平0,表明以20%的方式输出频率。在绿色通道中,设置S2、S3都为低电平1,表明选择绿色滤波器,S0为高电平1,S1为低电平0,表明以20%的方式输出频率。在蓝色通道中,设置S2为低电平0,S3为高电平1,表明选择蓝色滤波器,S0为高电平1,S1为低电平0,表明以20%的方式输出频率。具体程序如下:

void red() //红色通道 { P1=0x01;

delay1ms(1100); date=disp/100;

//153是在纯白情况下测得的红色通道频率值

date=(255.0/153)*date; }

void green() //绿色通道 { P1=0xc1;

delay1ms(1100); date=disp/100;

date=(255.0/145)*date; } //145是在纯白情况下测得的绿色通道频率值

//蓝色通道

void blue() { P1=0x81;

delay1ms(1100); date=disp/100;

date=(255.0/183)*date; } //183是在纯白情况下测得的蓝色通道频率值

4.4 4个白色LED补光模块的设计

因为本设计的TCS230颜色采集模块需要在密闭的环境下实现,所以需要另外添加一个稳定的光源。本模块主要是用4个白色的LED光,照在待检测的物体上,然后反射到TCS230颜色传感器上,达到合适的光强的目的。电路图设计如图4.5所示。

4.5 LCD1602液晶显示模块

4.5.1 LCD1602液晶显示模块硬件设计

本设计中的LCD1602液晶显示模块主要是和MCS-51单片机的P0口和P2口连接的。Vss管脚接地,Vcc管脚接+5V电源,Vo管脚接地,RS管脚接P2.0管脚,RW管脚接P2.1管脚,E管脚接P2.7管脚,D0-D7管脚依次接P0.0-P0.7管脚,A管脚接+5V电源,K管脚接地。

P0口是一个三态双向口,可作为地址/数据分时复用接口,也可作为通用的I/O接口。它由一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成。

P2口也是准双向口,它有两种用途:通用I/O接口和高8位地址线。与P1口相比,它只在输出驱动电路上比P1口多了一个模拟转换开关MUX和反相器。

27

4.5.2 LCD1602液晶显示模块软件设计

LCD1602与51单片机的具体连接方式如图4.6所示。

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

图4.5 白色LED补光模块电路图

图4.6 LCD1602与51单片机的具体连接图

28