




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*-TCS230.H -*/#ifndef _TCS230_H_#define _TCS230_H_#pragma SAVE#pragma REGPARMSvoid tcs230_set(uchar channel);void color_set(uchar color);uint readtcs230data(uchar channel,uchar color);bit readtcs230coloranddata(uchar channel,uchar color,uint std,bit mode); #pragma RESTORE#endif/通道设定/void tcs230_set(uchar channel) channel&=0x0f;if(channel7) U2138=1;U1138=0;else U1138=1;U2138=0;if(channel&0x01)A0=1;else A0=0;if(channel&0x02)A1=1;elseA1=0;if(channel&0x04)A2=1;elseA2=0;write574(U1,T230);/颜色设定/void color_set(uchar color) if(color=RED_COLOR) S2=0;S3=0;else if(color=WHITE_COLOR) S2=1;S3=0;else if(color=BLUE_COLOR) S2=0;S3=1;else if(color=GREEN_COLOR) S2=1;S3=1;write574(U1,T230);/在30毫秒内记录 N 通道 M 颜色的脉冲数/uint readtcs230data(uchar channel,uchar color) uint readdata=0;uchar readh,readl;write574(U1,T230=0); /复位所有的颜色传感器TMOD=0x15; /定时器1 模式1(16位定时方式) 计算器0 模式1(16位计数方式)EA=0; /总中断关ET0=0; /计算器0中断关ET1=0; /定时器1中断关TH1=0x8a; /定时器1 设定定时时间是30毫秒(12兆赫兹的时钟频率)TL1=0xd0; /定时器1 设定定时时间是30毫秒(12兆赫兹的时钟频率)TH0=0; /计算器0 设定初值高八位为0TL0=0; /计算器0 设定初值低八位为0EA=1; /总中断开ET0=1; /计算器0中断开ET1=0; /定时器1中断关 (采用查询方式检测)color_set(color); /颜色设定 (=0 红色)(=1 白色)(=2 蓝色)(=3 绿色)delay(1); tcs230_set(channel); /通道选择 通道低八位(=0 通道0 =1 通道1 . =10 通道10 )delay(1); /所有的准备工作已做完等待测试 TR1=1; /定时器1启动TR0=1; /计算器0启动while(TF1=0); /等待30毫秒时间到TF1=0; /清定时器1的中断标志TR0=0; /计算器0关闭计数TR1=0; /定时器1停止定时EA=0; /总中断关ET0=0; /计算器0中断关write574(U1,T230=0); /复位所有的颜色传感器readh=TH0; /读颜色传感器的高八位readl=TL0; /读颜色传感器的第八位 readdata=readh;readdata=8;readdata+=(readl);return readdata; / bit readtcs230coloranddata(uchar channel,uchar color,uint std,bit mode) xdata float r,g,b;xdata uint dred, dblue, dgreen, drezult ;dred =readtcs230data(channel,RED_COLOR) ; /测出红色成分的值 dblue =readtcs230data(channel,BLUE_COLOR) ; dgreen =readtcs230data(channel,GREEN_COLOR); drezult=dred+dblue+dgreen; r=dred/(1.0*drezult); g=dgreen/(1.0*drezult); b=dblue/(1.0*drezult); if(mode=1) lcdpos(0,0);printf(亮度=%-5u%c%4u,drezult,(drezultstd)? ,std); /秖代穞 4if(color=BLACK_COLOR) lcdpos(2,0);if(mode=1) cyc4or3run(); printf(暗光-%s!,(drezultstd)? OK : NG);/black color elseif(drezultstd)cyc4or3run(); printf( OK );return 0;elsecyc4or3run(); printf(暗光-NG!); /black colorreturn 1;/瘤礛兵琌穞,琌龟悔琌穞/*else if(dred16)&(dgreen16)&(dblue0.53) lcdpos(2,0);if(color=RED_COLOR)&(drezult=std)/代刚兵耞OK if(mode=0) printf(红色-OK!);/red return 0;elseprintf(%-3u:%-3u:%-3u OK!,dred,dgreen,dblue); /printf(R:G:B=%c:%c:%c OK!,r,g,b); return 0;else /代刚兵耞NG if(mode=0) printf(红色-NG!);/redreturn 1;elseprintf(%-3u:%-3u:%-3u NG!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c NG!,r,g,b);return 1;/狦秖代才屡 2/else if( b0.53) lcdpos(2,0);if(color=BLUE_COLOR)&(drezult=std)/代刚兵耞OK if(mode=0) printf(蓝色-OK!); /bluereturn 0;elseprintf(%-3u:%-3u:%-3u OK!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c OK!,r,g,b);return 0;else /代刚兵耞NG if(mode=0) printf(蓝色-NG!); /bluereturn 1;elseprintf(%-3u:%-3u:%-3u NG!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c NG!,r,g,b);return 1; /狦秖代才厚 3/ else if( g0.53 ) lcdpos(2,0);if(color=GREEN_COLOR)&(drezult=std)/代刚兵耞OK if(mode=0) printf(绿色-OK!); /GREENreturn 0;elseprintf(%-3u:%-3u:%-3u OK!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c OK!,r,g,b);return 0;else /代刚兵耞NG if(mode=0) printf(绿色-NG!); /GREENreturn 1;elseprintf(%-3u:%-3u:%-3u NG!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c NG!,r,g,b);return 1; */狦秖代才 1/else lcdpos(2,0);if(color=WHITE_COLOR)&(drezult=std)&(r0.2)&(g0.2)&(b0.2)/代刚兵耞OK if(mode=0)cyc4or3run(); printf(测试-OK!);/ WHITE_COLORreturn 0;elsecyc4or3run();printf(%-3u:%-3u:%-3u OK!,dred,dgreen,dblue); /printf(R:G:B=%c:%c:%c OK!,r,g,b);return 0;else /代刚兵耞NG if(mode=0) cyc4or3run(); printf(测试-NG!); / WHITE_COLORreturn 1;else/lcdpos(2,0);cyc4or3run();printf(%-3u:%-3u:%-3u NG!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c NG!,r,g,b);return 1; /*bit readtcs230coloranddata(uchar channel,uchar color,uint std,bit mode) uchar r,g,b;xdata uint dred,dblue,dgreen,drezult;xdata float fr,fg,fb;dred =readtcs230data(channel,RED_COLOR) ; dblue =readtcs230data(channel,BLUE_COLOR) ; dgreen =readtcs230data(channel,GREEN_COLOR); drezult=dred+dblue+dgreen; fr=1.0 * dred / drezult; fg=1.0 * dgreen / drezult; fb=1.0 * dblue / drezult; if(mode)&(color & 0x0f ) != B_AND_W_COLOR ) lcdpos(1,0);printf(亮度=%-5u%c%4u,drezult,(drezultstd)? ,std); /秖代穞 4if(color=BLACK_COLOR) lcdpos(2,0);if(mode=1) printf(暗光-%s!,(drezultstd)? OK : NG);/black color elseif(drezultstd)return 0;else printf(暗光-NG!); /black colorreturn 1;/瘤礛兵琌穞,琌龟悔琌穞/else if(dred1)&(dgreen1)&(dblue25) & (fr=fg) & (fr=fb) & (fr0.36) | (fr=fg)&(drezult=fb)&(fr0.50) if(color4)=RED_COLOR)writestring(1,0, Red Test OK! ); /狦秖代才 0 /else if( fr0.5) lcdpos(2,0);if(color&0x0f)=RED_COLOR)&(drezult=std)/代刚兵耞OK if(mode=0) printf(红色-OK!);/red return 0;elseprintf(%-3u:%-3u:%-3u OK!,dred,dgreen,dblue); /printf(R:G:B=%c:%c:%c OK!,r,g,b); return 0;else /代刚兵耞NG if(mode=0) printf(红色-NG!);/redreturn 1;elseprintf(%-3u:%-3u:%-3u NG!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c NG!,r,g,b);return 1;/狦秖代才屡 2/else if( fb0.5) lcdpos(2,0);if(color&0x0f)=BLUE_COLOR)&(drezult=std)/代刚兵耞OK if(mode=0) printf(蓝色-OK!); /bluereturn 0;elseprintf(%-3u:%-3u:%-3u OK!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c OK!,r,g,b);return 0;else /代刚兵耞NG if(mode=0) printf(蓝色-NG!); /bluereturn 1;elseprintf(%-3u:%-3u:%-3u NG!,dred,dgreen,dblue);/printf(R:G:B=%c:%c:%c NG!,r,g,b);return 1; /狦秖代才厚 3/ else if( fg0.5 ) lcdpos(2,0);if(color&0x0f)=GREEN_COLOR)&(drezult=std)/代刚兵耞OK if(mode=0) printf(绿色-OK!); /GREENreturn 0;elseprintf(%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 14193.1-2025液化气体气瓶充装规定第1部分:工业气瓶
- 应急安全培训装置课件
- 无人机资格证试卷(突破训练)附答案详解
- 新生儿真菌感染高危因素与抗真菌治疗原则
- 公司汽油购销合同(标准版)
- 2024年自考专业(金融)题库及参考答案详解(满分必刷)
- 防水补漏工程合同(标准版)
- 计算机三级考前冲刺练习试题【名校卷】附答案详解
- 2025年细胞治疗临床试验审批流程中的临床研究报告数据完整性报告
- 2025年数字化技术在零售门店智能货架商品识别与分析中的应用报告
- 职业技术学院《宠物临床诊断技术》课程标准
- 《器官捐献与脑死亡》课件
- 2025海南省金城安居投资集团有限公司第一期人才招聘6人笔试参考题库附带答案详解
- 急性冠脉综合征诊断及治疗课件
- 部队安全形势分析
- 陪玩协议合同模板
- 伤口造口护理指南版
- 《轨道交通自动门系统用行星齿轮减速器》编制说明
- 2022船舶水污染物内河接收设施配置规范
- 安全生产风险管控制度
- 2025-2030年中国鳜鱼行业市场行情监测及投资前景研判报告
评论
0/150
提交评论