如何用PIC通过AD使用光敏电阻

发布者:温柔之风最新更新时间:2020-01-08 来源: eefocus关键字:PIC  光敏电阻 手机看文章 扫描二维码
随时随地手机看文章

通过光敏电阻输入模拟信号,得到相应的数字信号,通过数字量的大

小设置阈值,通过阈值可以控制灯泡等设备的开关

模拟信号输入口为AN0,模拟电压的产生由外围电路搭建,参考电压为内部的VCC和VSS

通过串行口连接上位机显示转换后的数字信号

如何用PIC通过AD使用光敏电阻

主程序

#include “p18f4620.h”

//初始化,可不需要

void initial()

{

INTCON = 0x00; //位7~0:关总中断

ADCON1 = 0x07; //设置数字输入输出口

PIE1 = 0;

PIE2 = 0;

}

//串行口初始化

void EUSART_Init()

{

TXSTA = 0xA4; //选择异步高速方式传输8位数据

RCSTA = 0x90; //允许串行口工作

BAUDCON =0x00; //

TRISC = TRISC|0x80; //将RC7(RX)设置为输入方式

TRISC = TRISC&0xBF; //将RC6(TX)设置为输出方式

SPBRG = 25; //4MHZ晶振时波特率设置为9600

}

//通过串口发送数据

void send_ch(unsigned char d)

{

PIR1bits.TXIF = 0;

TXREG = d;

Nop();

while(TXSTAbits.TRMT == 0); //等待发送完毕

}

//AD初始化函数

void AD_Init(void)

{

ADCON1 = 0x0E; //参考电压为VCC~VSS,配置模拟输入口为AN0和AN1

ADCON2 = 0xA6; //AD结果右对齐,采样时间8个TAD,转换时钟选择为Fos/64

ADCON0 = 1; //启动AD

PIR1bits.ADIF = 0; //

TRISAbits.TRISA0 = 1; //设置模拟输入口RA0和RA1为输入方式

TRISAbits.TRISA1 = 0;

}

//读取指定通道的AD采集数据

unsigned int Read_AD(unsigned char ch)

{

unsigned int adtemp;

PIR1bits.ADIF = 0;

ADCON0 = (ch 《《 2)|1; //模拟输入通道的选择

ADCON0bits.GO = 1;

while(ADCON0bits.GO); //等待转换的结束

PIR1bits.ADIF = 0;

// adtemp = ADRESL + (ADRESH 《《 8);

adtemp = ADRESH; //读取AD的转换值

adtemp = (adtemp 《《 8) + ADRESL;

return adtemp;

}

//软件延时函数

void wait(unsigned char t)

{

unsigned char i;

unsigned int j;

for(i=0;i for(j=0;j《10000;j++);

}

//主控制函数

void main()

{

unsigned int adtempdat;

// TRISAbits.TRISA0=0;

// LATAbits.LATA0=1;

iniTIal();

EUSART_Init();

AD_Init();

while(1)

{

adtempdat = Read_AD(0); //选择通道0

send_ch(0xFF); //发送间隔标志

send_ch(adtempdat); //发送数字低八位

send_ch(adtempdat 》》 8); //发送数字高八位

if(adtempdat 《 0x0100) //灯的开关阈值可以调节

{

LATAbits.LATA1 = 1;//如果亮度小于阈值,开灯,否则关灯

}

else

{

LATAbits.LATA1 = 0;

}

Nop();

wait(10);

}

}

关键字:PIC  光敏电阻 引用地址:如何用PIC通过AD使用光敏电阻

上一篇:PIC单片机对烧录器电路的控制设计
下一篇:如何使用PIC单片机来调试LCD控制器

推荐阅读最新更新时间:2024-10-27 19:48

如何用PIC通过AD使用光敏电阻
通过光敏电阻输入模拟信号,得到相应的数字信号,通过数字量的大 小设置阈值,通过阈值可以控制灯泡等设备的开关 模拟信号输入口为AN0,模拟电压的产生由外围电路搭建,参考电压为内部的VCC和VSS 通过串行口连接上位机显示转换后的数字信号 主程序 #include “p18f4620.h” //初始化,可不需要 void initial() { INTCON = 0x00; //位7~0:关总中断 ADCON1 = 0x07; //设置数字输入输出口 PIE1 = 0; PIE2 = 0; } //串行口初始化 void EUSART_Init() { TXSTA = 0xA4; //选择异步高速方式传输8位数据 RCSTA =
[单片机]
如何用<font color='red'>PIC</font>通过<font color='red'>AD</font>使用<font color='red'>光敏电阻</font>
PIC通过AD使用光敏电阻
/*************通过光敏电阻输入模拟信号,得到相应的数字信号,通过数字量的大 小设置阈值,通过阈值可以控制灯泡等设备的开关************************/ /***模拟信号输入口为AN0,模拟电压的产生由外围电路搭建,参考电压为内部的VCC和VSS***/ /**************通过串行口连接上位机显示转换后的数字信号************************/ /*********************主程序*********************************/ #include p18f4620.h //初始化,可不需要 void initial() { INTCO
[单片机]
51单片机学习:ADC模数转换实验--光敏电阻AD采集
实验名称:ADC模数转换实验--光敏电阻AD采集 接线说明: 实验现象:下载程序后,数码管上显示AD模块采集光敏电阻的AD值 注意事项: ***************************************************************************************/ #include public.h #include smg.h #include xpt2046.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数
[单片机]
AD转换之光敏电阻AIN2 ---- 学习笔记
一、逐次逼近式ADC的转换原理 逐次逼近式AD转换器与计数式A/D转换类似,只是数字量由“逐次逼近寄存器SAR”产生。SAR使用“对分搜索法”产生数字量,以8位数字量为例,SAR首先产生8位数字量的一半,即10000000B,试探模拟量Vi的大小,若Vn Vi,清除最高位,若Vn Vi,保留最高位。在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位) 试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位) 试探模拟量的大小。重复这一过程,直到最低位bit0被确定,转换结束。 二、时序图与引脚 三、代
[单片机]
<font color='red'>AD</font>转换之<font color='red'>光敏电阻</font>AIN2 ---- 学习笔记
pic16f877a的AD实验学习
一、主函数 //采集AD值 #include pic.h #include ad.h #include usart.h __CONFIG(0xFF32); const uchar disp ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f}; //延时函数 void delayms(uint x) { uint j,k; for(j=x;j 0;j--) for(k=110;k 0;k--); } //显示4位,低位数码管显示不正常 void display(uint x) { PORTD= disp |0
[单片机]
PIC单片机的多路AD切换程序设计
pic单片机是最重要的单片机种类之一,对于pic单片机,小编曾带来诸多介绍,如pic单片机的优势、pic单片机选型等。而在本文中,小编将为大家介绍两种pic单片机程序:一是pic单片机多路ad切换程序,二是pic单片机循环程序。 一、pic单片机简介 pic单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机。PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型
[单片机]
<font color='red'>PIC</font>单片机的多路<font color='red'>AD</font>切换程序设计
PIC单片机进行AD转换的设计
AD转换 我们先看看R1和R2,R2是个可调电阻如果我们将R2变大RA1这个管脚上的电压就越大。R2变小RA1这个管脚上的电压就越小。那单片机是怎么知道电压变化的。这就需要AD转换。就是将模拟量转换成数字量。 PIC单片机如何表示电压 PIC用十位二进制位的数来表示电压,也就是数值0~1023来表示电压。那比如现在这个数值是400那这代表多少的电压?这就要根据参考电压来确定了。 比如我们设置正参考电压为3.3V ,当输入的电压为0时,数值就为0。当输入的电压为3.3V时,数值就是1023. 那如果输入的电压是1.2V代表多少电压。 首先,先算出一个数值代表多少的电压 3.3V除以1023 约等于 0.003V 。
[单片机]
<font color='red'>PIC</font>单片机进行<font color='red'>AD</font>转换的设计
实例讲解PIC单片机之AD设置步骤
AD 转换 我们先看看 R1 和 R2,R2 是个可调电阻 如果我们将 R2 变大 RA0 这个管脚上的电压就越大。R2 变小 RA0 这个管脚上的电压就越小。那单片机是怎么知道电压变化的。这就需要 AD 转换。就是将模拟量转换成数字量。 PIC 单片机如何表示电压 PIC 用十位二进制位的数来表示电压,也就是数值 0~1023 来表示电压。那比如现在这个数值是 400 那这代表多少的电压?这就要根据参考电压来确定了。 比如我们设置正参考电压为 3.3V ,当输入的电压为 0 时,数值就为 0。当输入的电压为 3.3V 时,数值就是 1023. 那如果输入的电压是 1.2V 代表多少电压。 首先,先算出一个数值
[单片机]
实例讲解<font color='red'>PIC</font>单片机之<font color='red'>AD</font>设置步骤
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved