传感器课程设计.docx

上传人:b****1 文档编号:1656676 上传时间:2023-05-01 格式:DOCX 页数:18 大小:471.81KB
下载 相关 举报
传感器课程设计.docx_第1页
第1页 / 共18页
传感器课程设计.docx_第2页
第2页 / 共18页
传感器课程设计.docx_第3页
第3页 / 共18页
传感器课程设计.docx_第4页
第4页 / 共18页
传感器课程设计.docx_第5页
第5页 / 共18页
传感器课程设计.docx_第6页
第6页 / 共18页
传感器课程设计.docx_第7页
第7页 / 共18页
传感器课程设计.docx_第8页
第8页 / 共18页
传感器课程设计.docx_第9页
第9页 / 共18页
传感器课程设计.docx_第10页
第10页 / 共18页
传感器课程设计.docx_第11页
第11页 / 共18页
传感器课程设计.docx_第12页
第12页 / 共18页
传感器课程设计.docx_第13页
第13页 / 共18页
传感器课程设计.docx_第14页
第14页 / 共18页
传感器课程设计.docx_第15页
第15页 / 共18页
传感器课程设计.docx_第16页
第16页 / 共18页
传感器课程设计.docx_第17页
第17页 / 共18页
传感器课程设计.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

传感器课程设计.docx

《传感器课程设计.docx》由会员分享,可在线阅读,更多相关《传感器课程设计.docx(18页珍藏版)》请在冰点文库上搜索。

传感器课程设计.docx

传感器课程设计

目录

1.摘要2

2.系统总体设计方案2

2.1设计要求2

2.2总体框图2

3.系统硬件设计2

3.1总体电路图2

3.2组成模块介绍2

4.元件清单2

5.系统调试与测量结果2

5.1程序流程图2

5.2程序代码2

6.测量结果分析2

7.心得体会2

8.参考文献2

基于光敏电阻的简易传感器

——光感自动控制百叶窗

1.摘要

本设计题目是光感自动控制百叶窗,用光照的强弱来改变光敏电阻的阻值大小,采用了MS-C51单片机为主控制电路,用数码管显示光照强度值,进而控制步进电动机控制百叶窗的旋转包括正转、反转和暂停。

本设计电路各个部分电路的设计原理及功能都能实现,要求对各种基本的电子元器件,电阻、电容、二极管、三极管等熟悉,掌握Proteus仿真软件的运用、Protel99SE工具软件等绘图软件,并加以运用。

用单片机内部的AD转换实现模拟转化为数字量,通过编程控制各个外围电路并实现其功能。

本设计具有有线路简单、结构紧凑、价格低廉、性能优越等特点。

单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于各领域各方面。

本次设计是以单片机为核心,加上其他器件,设计电路来实现百叶窗的控制。

2.系统总体设计方案

2.1设计要求

单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于各领域各方面。

本次设计是以单片机为核心,加上其他器件,设计电路来实现百叶窗的控制。

利用光敏电阻与标准电阻串联输入模拟信号,通过ADC0809芯片转换成数字信号传送给单片机,通过单片机处理并控制LCD显示当前的测量光强值,以及输出步进电动机的驱动信号,再利用达林顿管ULN2003提高单片机的输出功率驱动步进电动机。

2.2总体框图

3.系统硬件设计

3.1总体电路图

3.2组成模块介绍

单片机:

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

AD转换模块:

将光敏电阻用滑动变阻器代替。

R10为标准10K电阻,RV1为10K滑动变阻器,以代替光敏电阻仿真。

由于仿真软件只支持ADC0808芯片仿真,故在仿真时使用此芯片,实际电路板中选用了ADC0808。

处于实际电路板焊接时候引脚选用方便考虑,选用IN7输出口。

即将模拟输入选择口ADDA、ADDB、ADDC接入VCC。

处于实际电路焊接考虑,将ST接入P3.0口,EOC接入P3.1口,OE接入P3.2口,CLK接入P3.3口,具体电路如右图。

 

步进电动机驱动:

如果直接用单片机驱动步进电动机,因为单片机的输出电流太低,功率不够,无法驱动步进电动机,故接入达林顿管ULN2003来增加输出功率,处于实际电路焊接考虑,使用P3.4~P3.7端口。

电路如下图

暂停控制:

用开关控制,开关闭合时步进电动机暂停,LCD显示暂停状态(*字符),但依旧可以测量出光强值。

LCD显示:

LCD接口如图所示,由于单片机P0口和P2口在单片机的右边,故将LCD的输入口和控制口分别接入P0和P2口,由于P0口无上拉电阻,故接入LCD时接入一排上拉电阻。

如右图

4.元件清单

数量

元件名称

参数

1

AT89C51

1

LCD

LM016L

1

RESPACK-8

1

ULN2003A

1

RES

10K

1

POT-HG

10K

1

SW-SPST

1

MOTOR-STEPPER

+5V

1

ADC0808

5.系统调试与测量结果

5.1程序流程图

5.2程序代码

#include

unsignedcharget_data;

unsignedinttemp;

unsignedcharcodetab1[]="welcomeon!

";

unsignedcharcodetab2[]="light:

";

unsignedcharcodetab3[]="mcd";

sbitST=P3^0;

sbitEOC=P3^1;

sbitOE=P3^2;

sbitCLK=P3^3;

sbitA1=P3^5;

sbitB1=P3^6;

sbitC1=P3^7;

sbitD1=P3^4;

sbitRS=P2^0;

sbitRW=P2^1;

sbitE=P2^2;

sbitkey=P2^4;

#definer1{A1=1;B1=1;C1=1;D1=0;}

#definer2{A1=1;B1=1;C1=0;D1=0;}

#definer3{A1=1;B1=1;C1=0;D1=1;}

#definer4{A1=1;B1=0;C1=0;D1=1;}

#definer5{A1=1;B1=0;C1=1;D1=1;}

#definer6{A1=0;B1=0;C1=1;D1=1;}

#definer7{A1=0;B1=1;C1=1;D1=1;}

#definer8{A1=0;B1=1;C1=1;D1=0;}

voidtimer()

{

TMOD=0x10;

TH0=(65536-190)/256;

TL0=(65536-190)%256;

EA=1;

ET0=1;

TR0=1;

}

voiddelay(unsignedintt)

{

inti,j;

for(i=t;i>0;i--)

for(j=112;j>0;j--);

}

writecom(unsignedcharcom)

{

RS=0;

RW=0;

P0=com;

E=0;

delay

(1);

E=1;

delay

(1);

E=0;

}

writedata(unsignedchardate)

{

RS=1;

RW=0;

P0=date;

E=0;

delay

(1);

E=1;

delay

(1);

E=0;

}

voidwritecount(unsignedintData)

{

switch(Data)

{case0:

writedata(0x30);break;

case1:

writedata(0x31);break;

case2:

writedata(0x32);break;

case3:

writedata(0x33);break;

case4:

writedata(0x34);break;

case5:

writedata(0x35);break;

case6:

writedata(0x36);break;

case7:

writedata(0x37);break;

case8:

writedata(0x38);break;

case9:

writedata(0x39);break;

}

}

voidbujin(unsignedintpd)

{

if(pd)

{

r1

delay(5);

r2

delay(5);

r3

delay(5);

r4

delay(5);

r5

delay(5);

r6

delay(5);

r7

delay(5);

r8

delay(5);

}

else

{

r8

delay(5);

r7

delay(5);

r6

delay(5);

r5

delay(5);

r4

delay(5);

r3

delay(5);

r2

delay(5);

r1

delay(5);

};

}

voiddisp(unsignedinta)

{

unsignedintc;

a*=4;

writecom(0xc0+7);

writecount(a/1000);

writecom(0xc0+8);

writecount(a%1000/100);

writecom(0xc0+9);

writecount(a%100/10);

writecom(0xc0+10);

writecount(a%10);

writecom(0xc0+11);

for(c=0;c<3;c++)

writedata(tab3[c]);

}

pduan(unsignedinta)

{

unsignedintx;

if(a<51)x=0;

elseif(a<102)x=1;

elseif(a<153)x=2;

elseif(a<204)x=3;

elsex=4;

return(x);

}

main()

{

unsignedintcompare=0;

unsignedintdji;

unsignedinti,j,k;

writecom(0x38);

writecom(0x0c);

writecom(0x06);

writecom(0x80+1);

for(i=0;i<11;i++)

writedata(tab1[i]);

writecom(0xc0+1);

for(j=0;j<6;j++)

writedata(tab2[j]);

timer();

while

(1)

{

ST=0;

OE=0;

ST=1;

ST=0;

while(EOC==0);

OE=1;

get_data=P1;

OE=0;

temp=get_data;

disp(temp);

dji=pduan(temp);

writecom(0x80+14);

writedata(0x2a);

if(key)

{

writecom(0x80+14);

writedata(0x20);

if(dji>compare)

{

for(k=25*(dji-compare);k>0;k--)

bujin(0);

compare=dji;

}

elseif(dji

{

for(k=25*(compare-dji);k>0;k--)

bujin

(1);

compare=dji;

}

elsecompare=dji;

};

};

}

voidt0(void)interrupt1using0

{

TH0=(65536-190)/256;

TL0=(65536-190)%256;

CLK=~CLK;

}

 

6.测量结果分析

当光敏电阻受光照强度的不同时电阻值改变,进而改变步电机的转速与方向,是室内的采光程度最好。

如果想自己手动改变采光度,停止步电机的工作可以关闭开关。

7.心得体会

通过这一次的电路设计,掌握了LCD液晶显示、AD转换和步进电动机驱动的方法,对单片机运用技术又有了进一步的提高。

单片机可以驱动电路和实现的功能多种多样,对单片机的灵活运用显然还欠缺许多知识,但经过这次的课程设计,相信对单片机的各方面可以慢慢学习渗透,将其融会贯通。

仿真时LCD无任何字符显示,检查源程序的LCD初始化是否正确,修改错误,重新载入源程序仿真。

显示的转换数据为错乱数据,网上查阅ADC0809芯片功能书发现改芯片的输出口与IO口的高低位相反,OUT0~OUT7为高位到低位,恰与我们平时定义的相反。

8.参考文献

《传感器与检测技术》陈杰黄鸿编著

《基于单片机的百叶窗设计》网络文献

《单片机应用实例》网络文献

《沈阳理工大学传感器实验指导书》刘军冯艳君编著

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2