




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1技术指标12设计方案及其比较12.1方案一12. 2方案二22. 3方案三22.4方案比较33实现方案33. 1硬件部分33. 2软件部分83. 3测试电路204调试过程及结论204.1调试过程的现象204.2调试过程中出现的问题214. 3调试结论215心得体会216参考文献22基于si光电池的照度计设计与调试1技术指标(1)要求系统测量范围为0-200ix,测量精度达到llx;(2)设计光电池输出信号处理电路,要求可以控制处理后的电压幅度;(3)设计照度计硬件电路系统,要求系统各个模块能够正常工作;(4)设计照度计软件控制系统,要求系统整体工作稳定;(5)给设计系统定标,要求测量结果
2、误差在1%以内。2设计方案及其比较当光电池的光敏面收到光照射吋,pn节耗尽区内的光生电子与空穴在内建电场力的 作用下分别向n区和p区运动,在闭合的电路中产生光电流。首先将光电流经过i/v变换 和电压放人后形成直流电压信号,其次通过模数转换电路将处理得到的直流电压信号转换 为数字电压信号,再通过单片机处理后得到可以反应光照度的数字信号,最后通过lcd 实吋显示出来。照度计的系统框图如图1所示。图1照度计系统框图2.1方案一通过电阻转换的方式进行i/v转换,如图2,之后将电压放大后的盲流电压信号通过 由adc0809构成的a/d转换模块得到数字电压信号,然后,通过单片机得到可以反应光 照度的数字信
3、号,最后,通过led数码管实时显示出来。图2电阻转换模块2.2方案二通过三极管构建放大电路得到电压信号进行i/v转换,如图3,之后将电压放大后的直流电压信号通过由adc0809构成的a/d转换模块得到数字电压信号,然后,通过单片机得到可以反应光照度的数字信号,最后,通过led数码管实时显示出来。图3三极管转换模式2.3方案三通过集成运放芯片构建放大电路得到电压信号进行i/v转换,如图4, z后将电压放 大后的直流电压信号通过由adc0809构成的a/d转换模块得到数字电压信号,然后,通 过单片机得到可以反应光照度的数字信号,最后,通过led数码管实时显示出来。图4集成运放转换模式2.4方案比较
4、三种方案各有优缺点,方案一适合在电流较大的情况下使用,方案二适合在电流变换 范围小的情况下使用,方案三适用范围广,但成本会提高很多。由于此次课程设计电路板 上已经有运放芯片,故采取方案三。3实现方案3.1硬件部分系统的硬件由i/v变换模块、光电池前置放大模块、a/d转换模块、单片机控制模块 以及数码管显示模块组成,如图5, proteus仿真图如图6所示。当光电池的光敏面收到光照射吋,pn节耗尽区内的光生电子与空穴在内建电场力的 作用下分别向n区和p区运动,在闭合的电路中产生光电流。因为光电流需要转换为电压 信号,才能通过数码管显示,所以需要进行i/v变换。但是,所得的电压值过小,不宜测 量,
5、故需要电压放大模块将其放大为直流电压信号。其次,数码管显示的是数字信号,所 以,需要将放大得到的直流电压信号进过a/d转换模块转换为数字电压信号。最后,通过 单片机处理后得到可以反应光照度的数字信号,并通过数码管实吋显示岀来。图5系统屯路图图6总电路图1光电池和电压放大及i/v转换模块本系统选用的硅光电池光谱响应波长-般为0.4-1.1微米,峰值响应波长为0.9微米, 其特性曲线如图7所示。在不同光照下,硅光电池有不同的电信号输出,且二者之间具有 单值对应关系,因此,可以通过检测其输出电信号并根据其输出特性关系,得到对应的光 照度信息,以达到光照度检测的目的。图7硅光电池光谱响应特性曲线该模块
6、使用lm358运算放大芯片实现,如图8所示,该芯片引脚如图9所示,可以实现i/v变换,即将光电流信号转换为直流电压信号,并且进行放大。out1 1iin 1(.) 2iin1 3ignd 4vcc0vt2in2 (>in2图9 lm358引脚图2 a/d转换模块该模块由pcf8591芯片实现,如图10所示,该芯片引脚如图ii所示,可以实现a/d 转换,将直流电压信号转换为数字电压信号。pcf8591各引脚功能如下:aino、ainl、ain2、ain3:模拟信号输入端;ao、al、a2:引脚地址端;vdd、vss:电源端;sda、scl: i2c总线的数据线、时钟线;osc:外部时钟输入
7、端,内部时钟输出端;ext:内部、外部时钟选择线,使用内部时钟时ext接地;agnd:模拟信号地;aout: d/a转换输出端;vref:基准电源端;图10 a/d转换模块ainoain1ain2ain3aoala2vsspcf8591叵evddaoutvrepagndextoscsclsda图11 pcf8591引脚图3单片机控制模块rotngin>®podtaio po vah pojyate poarara poposfaw p0j&ac6 pottxtaizresr aleid1.1a.esm,7/wz1 -zz- t32dr>ez.vmb 22tac z
8、jta11 2. vac 2stag zfifau zw该模块由89c51芯片实现,如图12所示,89c51引脚图如图13所示。该模块通过 芯片内部的程序控制驱动pcf8591芯片并采集模数转换后的数字信号,对采集后的数字信 号进行处理,控制数码管显示系统检测得到的照度值。图12单片机系统p1.01pl. 12p1.23p1.34p1.45p1.56p1.67p1.78reset9(p3. 0) rxd10(p3 1) txd11(p3. 2)int012(p3. 3)int113(p3.4) t0 14(p3. 5) t1 15(p3. 6)w 16(p3. 7)r5 17xl1 18xl2
9、19gnd 2089c51图13 89c51引脚图4数码管显示系统及锁存器该模块由芯片74hc573和数码管实现,如图14, 74hc573引脚图如图15所示。数码管段选使用573锁存器,因为单片机引脚直接驱动功率不太够。3.2软件部分程序部分代码如下:1 main.c0e1 u201 vcc1d 2191q2d 3182q3d 4173q4d 5164q5d 6155q6d 146q7d8137q8d 9128qgnd 1011le图 15 74hc573/ " " " " " " " " " &quo
10、t; " " " " " " " " " " " " " " " " " " " "f*普中科技*实验名:ad显示试验*实验说明:使用数码管显示ad读取到电位器的电压值*连接方式:见连接图 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
11、 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7*/#include<reg5 l.h>#includehi2c.hn/定义使用的io/#define gpio_dig posbit lsa=p2a2;sbit lsb=p2a3;sbit lsc=p2a4;sbit le=p2a2;/-定义pcf8591的读写地址-/#define writeaddr 0x90 写地址#define readaddr 0x91 读地址-定义全局变量-unsigned char code dig_code17=ox3f,0x06,0x5b,0x4f,0
12、x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f 的显示码uchar code table =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,ox 77,0x7c,0x39,0x5e,0x79,0x71;unsigned char displaydata8;用来存放要显示的8位数的值-声明全局函数-void digdisplayo; /动态显示函数void pcf8591 sendbyte(unsigned ch
13、ar channel); unsigned char pcf8591 readbyte();void pcf8591 daconversion(unsigned char value);void digdisplayo;长延时函数void delay(uchar z)uchar xy for(xhzxvpx;) for(yh5pyvo;y;); 一诜医臂& 诜医臂淫黑 诜郵 > 诜郵 圧-main-円医迸-出-出亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<
14、亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<亠<
15、void main。unsigned h adnumn uim bl&aq-s 八 in 二 imerr floai vb-ue- uchar da(210kwh=e(l)hmel+八ifuimel%15)pcos591 sendbyte(o)八 dac?三 mel%15j n pcf8591readbyo()诜 2 八一-0-显示电位器电压-/pcf8591 sendbyte(o);发送电位器转换命令if(timel=150)time 1=0;/adnum = pcf8591readbyte()*2;/ 将转换结果读走adnum 二(date0+datel+date2+date3+d
16、ate4+date5+date6+date7+date8+date9)/10.;-我们8591每读取到一个1就表示5/256v,所以要知道电压值就乘以0.01953-/ value = adnum * 0.01953/1.3; 转为电压值adnum = value * 1000;保留两位小数n 二 adnum;/n=n*500./255;/n=123;bl=n/1000;b 二 n% 1000/100;s=n/10%10;g=n%10;le=1;po=oxfe;pl =tableb 1 ;delay(10);po=oxfd;p 1 =tableb ;delay(l 0);po=oxfb;p 1
17、 =tables ;delay( 10);p0=0xf7;p 1 =tableg ;delay(10);/ *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1
18、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* f*函数名:pcf8591sendbyte*函数功能:写入一个控制命令*输入:channel (转换通道)*输出:无彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳*/void pcf8591 sendbyte(unsigned char channel)i2c_start();i2c_sendbyte(writeaddr, 1); 发送写器件地址i2c_sendbyte(0x40|ch
19、annel, 0); 发送控制寄存器i2c_stop();/ *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *
20、1* *1* *1* *1* *1* *1* *1* *1* *1* *1*函数名*函数功能*输 入*输 出:pcf8591readbyte:读取一个转换值:无:dat彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳*/unsigned char pcf8591 readbyte()unsigned char dat;i2c_start();i2c_sendbyte(readaddr, 1);/ 发送读器件地址dat=i2c_readbyte();读取数据i2c_stop();结束总线re
21、turn dat;函数名:pcf8591 daconversion*函数功能:pcf8591的输出端输出模拟量:value (转换的数值)void pcf8591 daconversion(unsigned char value)i2c_start();i2c_sendbyte(writeaddr, 1);/ 发送写器件地址 i2c_sendbyte(0x40, 1); 开启da写到控制寄存器 i2c_sendbyte(value, 0);发送转换数值i2c_stop();函数名函数功能:使用数码管显示void digdisplayounsigned char i;unsigned int j
22、;for(i=0;i<8;i+)switch(i)/位选,选择点亮的数码管,case(o):lsa=o;lsb=o;lsc=o; break;/显示第 0 位case(l):lsa=1;lsb=o;lsc=o; break;/显示第 1 位case(2):lsa=o;lsb=1;lsc=o; break;/显示第 2 位case(3):lsa=1;lsb=1;lsc=o; break;/显示第 3 位case(4):lsa=o;lsb=o;lsc=1; break;/显示第 4 位case(5):lsa=1;lsb=o;lsc=1; break;/显示第 5 位case(6):lsa=o
23、;lsb=1;lsc=1; break;/显示第 6 位case(7):lsa= 1 ;lsb= 1 ;lsc= 1; break;/显示第 7 位 gpio_dig=displaydatai;/ 发送段码j=5oo;扫描间隔时间设定while(j);gpio_dig=oxoo; 消隐2 i2c.c#includehi2c.hn/ *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *
24、1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*函数名*函数功能*输 入*输 出:delay lus():延时:无:无 彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳*/void i2c_de
25、layl0us()uchar a, b;for(b=l; b>0; b)for(a=2; a>0; a);/ *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*
26、 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* 函数名:i2c_start()*函数功能:起始信号:在i2c_scl时钟信号在高电平期间i2c.sda信号产生一个下降沿*输入:无*输出:无*备注:起始之后i2c_sda和i2c_scl都为0彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳void i2c_start()i2c_sda = 1;i2c_delayl0us();i2c_scl = 1;i2c_delayl0u
27、s();/建立时间是 i2c_sda 保持时间4.7usi2c_sda = 0;i2c_delay 10us();/ 保持时间是4usi2c_scl = 0;i2c_delayl0us();*函数名:i2c_stop()*函数功能:终止信号:在i2c.scl时钟信号高电平期间i2c.sda信号产生一个上升沿:结束之后保持i2c_sda和i2c_scl都为1;表示总线空闲void i2c_stop()i2c_sda = 0;i2c_delayl0us();i2c_scl = 1;i2c_delayl0us();/建立时间大于 4.7usi2c_sda = 1;i2c_delayl0us();/
28、*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*
29、*1* *1*函数名:i2csendbyte(uchar num)函数功能:通过i2c发送一个字节。在i2c_scl时钟信号高电平期间,*保持发送信号i2c.sda保持稳定:num ,ack:0或1。发送成功返回1,发送失败返回0:发送完一个字节i2c_scl=0,需要应答则应答设置为1,否则为彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳*/uchar i2c_sendbyte(uchar dat, uchar ack)uchar a = 0,b = 0;/最大255, 个机器周期为l
30、us,最大延时255us。for(a=0; a<8; a+)要发送8位,从最高位开始i2c.sda = dat » 7; 起始信号之后i2c_scl=0,所以可以直接改变i2c_sda信 号dat = dat« 1;i2c_delayl0us();i2c_scl = 1;i2c_delay 10us();/ 建立时间 >4.7usi2c_scl = 0;i2c_delayl0us();/时间大于 4usi2c_sda = 1;i2c_delayl0us();i2c_scl = 1;while(i2c_sda && (ack = 1)/等待应答,也
31、就是等待从设备把i2c.sda拉低b+;if(b > 200)如果超过200us没有应答发送失败,或者为非应答,表示接收结束i2c.scl = 0;i2c_delayl0us();return 0;i2c_scl = 0;i2c_delayl0us();return 1;/ *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*
32、 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* 函数名:i2creadbyte()*函数功能:使用i2c读取一个字节:无:dat:接收完一个字节i2c_scl=0彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳彳*/uchar i2c_readb
33、yte()uchar a = o,dat = 0;i2c.sda = 1;起始和发送一个字节之后i2c.scl都是0i2c_delayl0us();for(a=0; a<8; a卄)接收8个字节i2c_scl = 1;i2c_delayl0us();dat «= 1;dat |= i2c_sda;i2c_delayl0us();i2c_scl = 0;i2c_delayl0us();return dat;3 i2c.h#ifndef_i2c_h_#define _i2c_h_# include<reg5 l.h>重定义关键词-/#ifndef uchar#define uchar unsigned char#endif# ifndef uint#define uint unsigned int #endif-定义使用的10 口-/sbit i2c_scl = p2a1;sbit i2c_sda = p2a0;-声明全局变量-/void i2c_delayl0u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 硕士论文防线策略
- 石家庄学院《艺术理念》2023-2024学年第一学期期末试卷
- 江西省景德镇市珠山区2025届数学三下期末综合测试试题含解析
- 上海市延安实验初级中学2025届初三第三次模拟练习数学试题含解析
- 山西省运城市2024-2025学年3月初三开学考试物理试题含解析
- 四川省南充市阆中学2025届下学期初三期末考试语文试题含解析
- 内蒙古呼伦贝尔市市级名校2025届初三下学期第二次学情调研语文试题试卷含解析
- 山西铁道职业技术学院《生物制药专业实验(下)》2023-2024学年第二学期期末试卷
- 南京工业职业技术大学《公路施工组织及概预算》2023-2024学年第二学期期末试卷
- 内蒙古杭锦后旗四校联考2025年中考总复习小题量基础周周考化学试题含解析
- 医患沟通技巧与人文关怀课件
- 招投标顾问服务协议
- 《Unit2Myfavoriteseason》教学设计课件
- 苏教版二年级下册数学《认识角》教学设计(市级公开课)
- 过水箱涵施工方案
- 2023年上半年教师资格证考试《高中音乐专业面试》真题及答案
- 生产加工型小微企业安全生产管理人员:安全生产管理
- 互联网思维中的用户思维
- 70岁以上老人考驾照,三力测试题库答案
- 医院预算业务流程图
- ALeader 阿立得 ALD515使用手册
评论
0/150
提交评论