買了一塊TCS34725的顏色傳感器回來,只有STM32和ARDUINO的演示代碼,讓自己感到了尷尬。一直再用STC12C5A60S2的單片機,所以將τ 寶客服給的代碼改了下,經(jīng)過調(diào)試 可以直接使用串口讀取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初值 ,設(shè)置波特率為9600 晶振11.0529MHZ?
- TL1=0xfd;
- TR1=1; //開啟定時器1
-
- SM0=0;
- SM1=1; //10位異步接收,(8位數(shù)據(jù))波特率可變
- 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, 下載次數(shù): 296)
2021-1-8 10:48 上傳
點擊文件名下載附件
Tcs3472x_DEMO.7z
(400.37 KB, 下載次數(shù): 190)
2021-1-8 15:11 上傳
點擊文件名下載附件
|