51单片机,光敏电阻,xpt2046芯片,根据光强控制一个小灯亮与不亮,写个程序
时间: 2024-03-03 22:50:35 浏览: 68
基于C51单片机的简单控制灯光的程序
好的,以下是基于51单片机的光敏电阻和xpt2046芯片控制一个小灯亮灭的程序示例:
```
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar xdata *TSC_ADRL = 0x6000; // 定义触摸屏AD值寄存器地址
uchar xdata *TSC_ADRLH = 0x6001;
uchar xdata *TSC_CON = 0x6002; // 定义触摸屏控制寄存器地址
sbit LED = P1^0; // 定义小灯引脚
void delay(uint i) // 延时函数
{
uint j;
while (i--)
{
for (j = 0; j < 125; j++);
}
}
void Init_TouchScreen() // 初始化触摸屏
{
*TSC_CON = 0x90; // 打开触摸屏AD转换,设置AD采样频率为125KHz
}
uint Get_TouchScreen_ADValue() // 获取触摸屏AD值
{
uint ad_value;
*TSC_CON |= 0x08; // 开始AD转换
while ((*TSC_CON) & 0x08); // 等待AD转换完成
ad_value = (*TSC_ADRL) | ((*TSC_ADRLH) << 8); // 获取AD值
delay(1); // 延时
return ad_value;
}
void main()
{
uint ad_value;
Init_TouchScreen(); // 初始化触摸屏
while (1)
{
ad_value = Get_TouchScreen_ADValue(); // 获取触摸屏AD值
if (ad_value < 200) // AD值小于200时,LED亮
{
LED = 0;
}
else // AD值大于等于200时,LED灭
{
LED = 1;
}
}
}
```
以上程序的实现原理是:通过触摸屏AD值的大小来判断周围光线的强弱,然后根据光线强度控制小灯亮灭。具体来说,当AD值小于200时,LED亮;当AD值大于等于200时,LED灭。
阅读全文