买了一块TCS34725的颜色传感器回来,只有STM32和ARDUINO的演示代码,让自己感到了尴尬。一直再用STC12C5A60S2的单片机,所以将τ 宝客服给的代码改了下,经过调试 可以直接使用串口读取RGB和HSL值。希望帮助到大家
单片机源程序如下:
- #include <stc12c5a60s2.h>
- #include <stdio.h>
- #include "iic.h"
- #define uint unsigned int
- COLOR_RGBC rgb;
- COLOR_HSL hsl;
- void init() //中断
- {
- TMOD=0x20; //定时器工作方式,选择了定时器1,工作方式2 八位初值自动重装的8位定时器。
- TH1=0xfd; //定时器1初值 ,设置波特率为9600 晶振11.0529MHZ?
- TL1=0xfd;
- TR1=1; //开启定时器1
-
- SM0=0;
- SM1=1; //10位异步接收,(8位数据)波特率可变
- REN=1; //允许串行口接收位
- /*EA=1; //允许中断(总闸)
- ES=1; //允许串口中断 */
- }
- void delay_ms(uint time)
- {
- uint i,j;
- for(i = 0;i < time;i ++)
- for(j = 0;j < 930;j ++);
- }
- void main()
- {
- init();
- TCS34725_Init();
- if(TCS34725_Init() == 1)
- { TI=1;
- printf("Initial OK!\r\n");
- while(!TI);
- TI=0;
- }
- while(1)
- {
-
- TCS34725_GetRawData(&rgb);
- RGBtoHSL(&rgb,&hsl);
- TI=1;
- printf("R=%d G=%d B=%d C=%d\r\n",rgb.r,rgb.g,rgb.b,rgb.c);
- printf("H=%d S=%d L=%d\r\n",hsl.h,hsl.s,hsl.l);
- while(!TI);
- TI=0;
- delay_ms(3000);
- }
- }
复制代码
所有资料51hei提供下载:
TCS34725 _C51DEMO程序、.rar
(64.04 KB, 下载次数: 296)
Tcs3472x_DEMO.7z
(400.37 KB, 下载次数: 190)
|