马路路灯自动控制器实验报告.doc_第1页
马路路灯自动控制器实验报告.doc_第2页
马路路灯自动控制器实验报告.doc_第3页
马路路灯自动控制器实验报告.doc_第4页
马路路灯自动控制器实验报告.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

马路路灯自动控制器实验报告马路路灯自动控制器实验报告 一, 实验目的1. 学习8051定时器时间计时处理、光敏电阻、蜂鸣器的应用、按键扫描及led数码管显示的设计方法。2. 设计任务及要求,利用实验平台上8个led数码管, 设计带有光线控制、定时控制、检测路灯是否损毁功能的马路路灯自动控制器。二,实验要求 基本要求:1:能够根据环境光线强度自动开、关路灯。2:能够根据时间自动开、关路灯。3:能够判断路灯灯泡是否损坏。4: 自由发挥其他功能.三,实验基本原理利用光敏电阻的电阻值随入射光的强弱而改变的光电效应,控制led灯的亮灭。在白天,光敏电阻阻值小,输出低电平,led灯灭;在晚上,光敏电阻阻值大,输出高电平,led灯亮。利用单片机定时器完成计时功能,设计时钟。定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为0,每中断一次中断计数初值加1,当加到20时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。为了将时间在led数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现led显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。然后设定时钟时间,当时间达到某一区域事,控制led灯亮,超出这部分时,控制led灯灭。同时利用光敏电阻的光电效应来检测led路灯是否有损毁,若led灯损毁,即不亮状态,相当于夜晚,光敏电阻阻值高,输出高电平,控制蜂鸣器响;若led正常,即点亮状态,相当于白天,光敏电阻阻值低,输出低电平,正常运行程序。四,实验设计分析针对要实现的功能,采用at89s52单片机进行设计,at89s52 单片机是一款低功耗,高性能cmos8位单片机,片内含8kb在线可编程(isp)的可反复擦写1000次的flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准mcs- 51指令系统及80c51引脚结构。这样,既能做到经济合理又能实现预期的功能。在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为光线控制路灯程序、检测路灯是否损毁程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、延时程序等。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!五,实验要求实现a.电路设计1. 整体设计此次设计主要是应用单片机来设计马路路灯控制器,硬件部分主要分以下电路模块:显示电路用8个共阴数码管分别显示小时、分钟和秒,通过动态扫描进行显示,从而避免了译码器的使用,同时节约了i/0端口,使电路更加简单。单片机采用at89s52系列,这种单片机应用简单,适合电子钟设计。电路的总体设计框架如下:单片机at89s52判断部分输输入部分输出部分晶振和复位b.程序设计b. 程序总体设计本实验用汇编程序完成.程序总的流程图如下:主程序开始显示星期,时,分,秒h18? 光线弱? no no yes yesled灯亮b.2.3主程序主程序主要对按键进行扫描,以及判断时间、光线是否已到,若到则调用相关程序,该段程序如下:#include#define uchar unsigned char#define uint unsigned intsbit rl1=p17;/定义光敏电阻,实现光线控制功能sbit rl2=p14;/定义光敏电阻,实现检测灯泡是否损毁sbit led=p15;/定义灯的亮灭sbit buzzer=p16;/定义蜂鸣器,如果灯泡损毁报警uchar sec,sec1,min,min1,hou,hou1,t,num,temp;uint num1,num2,num3,n,k=0;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;void init();uchar keyscan();void control();void display(uchar ,uchar ,uchar ,uchar ,uchar ,uchar ,uchar ,uchar );void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void main() init(); while(1) tr0=0; keyscan(); control(); tr0=1; if(t=20) t=0; num1+; if(num1=60) num1=0; num2+; if(num2=60)num2=0;num3+; if(num323) num3=0; sec1=num1/10; sec=num1%10; min1=num2/10; min=num2%10; hou1=num3/10; hou=num3%10; display(hou1,hou,10,min1,min,10,sec1,sec);if(rl1=1)/如果光敏电阻为高电平,灯亮,即晚上为高电平。led=0;delay(1);led=1;if(num318)/如果时间在18-6,路灯亮led=0;delay(1);led=1;if(rl2=1)/如果光敏电阻为高电平,灯亮,即路灯损毁为高电平。buzzer=0;delay(1);buzzer=1; void init() t=0; num1=0,num2=0,num3=0; tmod=0x01;th0=(65536-50000)/256;tl0=(65536-50000)%256; ea=1;et0=1; tr0=1; void time0() interrupt 1 th0=(65536-50000)/256;tl0=(65536-50000)%256;t+;void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar k,uchar h) p2=tablea;p0=0xfe;delay(1);p2=tableb;p0=0xfd;delay(1);p2=tablec;p0=0xfb;delay(1);p2=tabled;p0=0xf7;delay(1);p2=tablee;p0=0xef;delay(1);p2=tablef;p0=0xdf;delay(1);p2=tablek;p0=0xbf;delay(1);p2=tableh;p0=0x7f;delay(1);uchar keyscan() p3=0xfe; temp=p3; temp=temp&0xf0; while(temp!=0xf0) delay(5); temp=p3; temp=temp&0xf0; while(temp!=0xf0) temp=p3; switch(temp) case 0xee: num=1;break;case 0xde: num=2;break;case 0xbe: num=3;break;case 0x7e: num=4;k+;break; while(temp!=0xf0) temp=p3; temp=temp&0xf0; return num; void control() if(num=1) num1+; p2=0xfe; n=num1%10; if(num159) num1=0; p1=tablen;/调整秒 num=0; if(num=2) num2+; p2=0xf7; n=num2%10; if(num259) num2=0; p1=tablen;/调整分 num=0; if(num=3) num3+; p2=0xbf; n=num3%10; if(num323) num3=0; p1=tablen;/调整时 num=0; if(num=4) if(k%2=0) if(num312)num3=num3-12; else if(num312) num3=num3+12; num=0; c. 程序调试及仿真本程序通过keil单片机开发平台实现程序的编译,链接,生成hex文件。程序再编译过程中可以发现错位,并及时改正,在设计时非常重要,使错误被扼杀在摇篮中。通过keil和硬件仿真平台proteus的联合,可以将设计效果仿真出来,根据效果,有目的的改变设计,优化程序。c.1 利用keil软件实验过程截图:1,建一个工程,并设定与proteus仿真相关的参数2,c语言程序,并生成hex文件c.2利用proteus仿真实验过程截图:五.实验总结及感想当我们初次接触单片机时,由于尚未学习,所以感觉很是高深莫测。后来,我们小组一起学习,共同探讨共同进步。我们一起去八教204集体学习,初始的时候,我们一起看郭天祥介绍单片机的相关视频。当我们看完视频的时候,终于对单片机编程有了初步的了解。接下来,就开始单片机的程序了,我们小组采用的是分题到人的方法。很幸运,我选到的是马路灯自动控制器,首先,我对光敏电阻就比价纠结,原本以为要用到数模转换,因为我们的单片机没有数模转换模块,后来,在查阅相关资料和小组一起讨论后,终于发现并不需要。然后,我就开始编写程序了,编写程序的时候,难免出错,然后就是在一遍遍的调试,一遍遍的修改程序。发现问题,并改变解决问题,成了我们的必修课。终于,当我们的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论