单色图像识别单片机课程设计(6)

2019-05-24 14:24

单片机课程设计(论文)

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经缓冲器输入,可直接进入芯片内部。 TCS3200D颜色传感器与51单片机具体的连接方式如图4.3所示。

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

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

图4.3 TCS3200D与51的连接图

24

单片机课程设计(论文)

定时器初始化外部脉冲信号定时时间到否外部中断计数是输出频率值图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的计数值为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秒,每一秒中断一次,所记得数就是频率

25

单片机课程设计(论文)

{TH0=0xe0; TL0=0x18; lck++; if(lck==1000)

{ disp=dispcount; }

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来接收传感器的输出值。TCS3200D颜色传感器的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,表明选择红色滤波器,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; }

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

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

dispcount=0; }

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

delay1ms(1100); date=disp/100;

26

单片机课程设计(论文)

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补光模块的设计

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

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

27

单片机处理后的数据整型数转化成字符型数组LCD1602初始化和清屏4.5.2 LCD1602液晶显示模块软件设计

单片机课程设计(论文)

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

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

图4.7 LCD1602显示模块流程图

28

是以字符串方式输出设定光标显示位置显示完成输出结束否


单色图像识别单片机课程设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于开展乡(镇)村干部轮训的通知

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

马上注册会员

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