⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chengxu.lst

📁 TCS230颜色识别传感器应用学习资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
 145   1           //**************求取红色因子***********************
 146   1           TH0=(65536-10000)/256;
 147   1               TL0=(65536-10000)%256;
 148   1           TH1=0;
 149   1           TL1=0;
 150   1           tcs230_s2=0;
 151   1           tcs230_s3=0;//选择红色滤光器
 152   1           tcs230_en=0;
 153   1           TR0=1;//10毫秒开始计时
 154   1           TR1=1;//开始计数
 155   1           while(TF0==0);//等待定时器溢出
 156   1           TF0=0;//清楚定时器0溢出标志
 157   1           TR0=0;//关闭定时0
 158   1           TR1=0;
 159   1           ryz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1)
 160   1           //**************求取蓝色因子***********************
 161   1           TH0=(65536-10000)/256;
 162   1               TL0=(65536-10000)%256;
 163   1           TH1=0;
 164   1           TL1=0;
 165   1           tcs230_s2=0;
 166   1           tcs230_s3=1;//选择蓝色滤光器
 167   1           TR0=1;//10毫秒开始计时
 168   1           TR1=1;//开始计数
 169   1           while(TF0==0);//等待定时器溢出
 170   1           TF0=0;//清楚定时器0溢出标志
 171   1           TR0=0;//关闭定时0
 172   1           TR1=0;
 173   1           byz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1)
 174   1           //**************求绿红色因子***********************
 175   1           TH0=(65536-10000)/256;
 176   1               TL0=(65536-10000)%256;
 177   1           TH1=0;
 178   1           TL1=0;
 179   1           tcs230_s2=1;
C51 COMPILER V8.05a   CHENGXU                                                              04/11/2012 16:53:31 PAGE 4   

 180   1           tcs230_s3=1;//选择绿色滤光器
 181   1           TR0=1;//10毫秒开始计时
 182   1           TR1=1;//开始计数
 183   1           while(TF0==0);//等待定时器溢出
 184   1           TF0=0;//清楚定时器0溢出标志
 185   1           TR0=0;//关闭定时0
 186   1           TR1=0;
 187   1           tcs230_en=1;
 188   1           gyz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1)
 189   1      }
 190          /*======================================================================
 191           LCM初始化
 192          ======================================================================*/
 193          void LCMInit(void) 
 194          {
 195   1       LCM_Data = 0;
 196   1       WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号
 197   1       DelayMs(5);
 198   1       WriteCommandLCM(0x38,0);
 199   1       DelayMs(5);
 200   1       WriteCommandLCM(0x38,0);
 201   1       DelayMs(5);
 202   1       WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号
 203   1       WriteCommandLCM(0x08,1); //关闭显示
 204   1       WriteCommandLCM(0x01,1); //显示清屏
 205   1       WriteCommandLCM(0x06,1); // 显示光标移动设置
 206   1       WriteCommandLCM(0x0C,1); // 显示开及光标设置
 207   1       DelayMs(100);
 208   1      }
 209          //==============================LCD1602显示子程序================================================
 210          // 写数据函数: E =高脉冲 RS=1 RW=0
 211          //======================================================================*/
 212          void WriteDataLCM(uchar WDLCM)
 213          {
 214   1       ReadStatusLCM(); //检测忙
 215   1       LCM_Data = WDLCM;
 216   1       LCM_RS = 1;
 217   1       LCM_RW = 0;
 218   1       LCM_E = 0; //若晶振速度太高可以在这后加小的延时
 219   1       LCM_E = 0; //延时
 220   1       LCM_E = 1;
 221   1      }
 222          /*====================================================================
 223            写指令函数: E=高脉冲 RS=0 RW=0
 224          ======================================================================*/
 225          void WriteCommandLCM(uchar WCLCM,BuysC) //BuysC为0时忽略忙检测
 226          {
 227   1       if (BuysC) ReadStatusLCM(); //根据需要检测忙
 228   1       LCM_Data = WCLCM;
 229   1       LCM_RS = 0;
 230   1       LCM_RW = 0;
 231   1       LCM_E = 0;
 232   1       LCM_E = 0;
 233   1       LCM_E = 1;
 234   1      }
 235          /*====================================================================
 236            正常读写操作之前必须检测LCD控制器状态:E=1 RS=0 RW=1;
 237            DB7: 0 LCD控制器空闲,1 LCD控制器忙。
 238            读状态
 239          ======================================================================*/
 240          uchar ReadStatusLCM(void)
 241          {
C51 COMPILER V8.05a   CHENGXU                                                              04/11/2012 16:53:31 PAGE 5   

 242   1       LCM_Data = 0xFF;
 243   1       LCM_RS = 0;
 244   1       LCM_RW = 1;
 245   1       LCM_E = 0;
 246   1       LCM_E = 0;
 247   1       LCM_E = 1;
 248   1       while (LCM_Data & Busy); //检测忙信号  
 249   1       return(LCM_Data);
 250   1      }
 251          /*======================================================================
 252          功 能:     在1602 指定位置显示一个字符:第一行位置0~15,第二行16~31
 253          说 明:     第 X 行,第 y 列  注意:字符串不能长于16个字符
 254          ======================================================================*/
 255          void DisplayOneChar( uchar X, uchar Y, uchar ASCII)
 256          {
 257   1        X &= 0x1;
 258   1        Y &= 0xF; //限制Y不能大于15,X不能大于1
 259   1        if (X) Y |= 0x40; //当要显示第二行时地址码+0x40;
 260   1        Y |= 0x80; // 算出指令码
 261   1        WriteCommandLCM(Y, 0); //这里不检测忙信号,发送地址码
 262   1        WriteDataLCM(ASCII);
 263   1      }
 264          /*====================================================================
 265            设定延时时间:x*1ms
 266          ====================================================================*/
 267          void DelayMs(uint Ms)
 268          {
 269   1        uint i,TempCyc;
 270   1        for(i=0;i<Ms;i++)
 271   1        {
 272   2          TempCyc = 250;
 273   2          while(TempCyc--);
 274   2        }
 275   1      }
 276          
 277          
 278          
 279          /*************************************************************************
 280                                          结束    
 281          **************************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1048    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -