航标灯控制.doc_第1页
航标灯控制.doc_第2页
航标灯控制.doc_第3页
航标灯控制.doc_第4页
航标灯控制.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

湖南工程学院生 产 实 习课程名称 单片机原理与应用 课题名称 航标灯控制 专 业 电子科学技术 班 级 0902 学 号 25 姓 名 陈玉琪 指导教师 肖锋 2012年 05月 16 日湖南工程学院课 程 设 计 任 务 书课程名称 单片机原理与应用 课 题 航标灯控制 专业班级 电子技术0902 学生姓名 陈玉琪 学 号 200901180225 指导老师 肖锋 审 批 任务书下达日期 2012年 05月 07 日任务完成日期 2012年 05月 16 日设计内容与设计要求设计内容:利用单片机为核心设计一个航标灯控制系统,要求为在黑夜中航行的船只提供灯光指示。设计要求:1)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;*5)进行部分单元电路及应用程序的调试;主 要 设 计 条 件本系统要求:1)航标灯在黑夜能定时闪闪发光,亮2s,熄灭2s周期循环。2)白天应停止航标灯工作。3)枯水季节应检测水位高度,低于通航水位时要发出警告信号。4)向控制台发送实际水位数据。说 明 书 格 式1. 课程设计任务书2. 目录3. 系统总体方案选择与说明4. 系统结构框图与工作原理5. 各单元硬件设计说明及计算方法6. 软件设计与说明(包括流程图)7. 调试结果与必要的调试说明8. 使用说明9. 总结10、参考文献附录附录A 系统原理图附录B 程序清单进 度 安 排设计时间为两周第一周星期一、上午:布置课题任务,讲课及课题介绍 下午:借阅有关资料,总体方案讨论星期二、确定总体设计方案星期三、硬件模块方案设计星期四、软件模块方案设计星期五、各硬件模块设计第二周星期一、各硬件模块设计星期二、各软件模块设计星期三、各软件模块设计星期四、写说明书星期五、上午:写说明书,整理资料下午:交设计资料,答辩参 考 文 献参考文献1、 教材单片微型计算机技术 刘国荣 编 机械工业出版社2、 单片微型计算机原理、应用及接口技术 张迎新 编 国防工业出版社3、 单片机实用系统设计技术 房小翠 编 国防工业出版社4、单片机应用系统设计 何立民 编 北航出版社5、单片机原理及接口技术 曹琳琳编 国防科技大学出版社目录一 课程设计任务.1二 总目录.5三 系统总体方案选择.6四 系统结构框图与原理.63.1系统结构框图63.2系统工作原理.7五 各单元电路设计及计算说明.84.1单片机晶振电路的连接.84.2复位电路.84.3 LCD1602显示电路.94.4蜂鸣器电路和航标灯显示电路94.5 ADC转换电路.104.6光敏电阻的选择.10六 软件设计框图.11七 调试结果及说明.12八 总结.12九 参考文献.13九 附录.14二系统总体方案选择本系统要求区分白天与黑夜、检测水位信息、控制航标灯闪烁和蜂鸣器的鸣叫,同时需要显示并发送水位信息;综合要求,选择51单片机作为控制器,用光敏电阻检测白天与黑夜,因为只有一路水位信息,所以选择ADC0804作为模数转换器,并用LED作为航标灯指示器,LCD1602作为水位显示器件。设计方案框图单 片 机8 0 5 1水位测量模块光敏电阻模块蜂鸣器模块航标灯模块水位显示模块三系统总体设计方案描述3.1系统结构框图白天晚上水位指示灯亮2s熄灭2s闪烁高指示灯关闭,蜂鸣器 鸣响鸣响高低蜂鸣器快速鸣响指示灯快速闪动蜂鸣器快速鸣响3.2系统的工作原理本系统通过51单片机作为控制核心,并选择12MHz晶体,以达到控制航标灯的闪烁,蜂鸣器的报警指示;同时显示并往控制总台发送水位信息;在本系统中通过ADC0804将模拟变化的水位信号转换成单片机可以识别的数字信号,同时通过LCD1602液晶显示器显示实时水位信息并将水位信息通过串口传送到控制台;系统中通过光敏电阻检测白天与黑夜,当水位正常时,如果是晚上,通过单片机的控制蜂鸣器发声,航标灯定时闪烁(亮2s,熄灭2s);如果是白天,则航标灯关闭,蜂鸣器继续工作。当水位超过警戒水位(水位过低,不适合航行)时,如果是晚上,则通过单片机控制蜂鸣器的加速鸣叫,并且航标灯闪烁加快;如果是白天则航标灯关闭,蜂鸣器继续工作。四单元电路的设计与计算4.1单片机晶振电路的连接图中晶振选用12MHz晶振,电容选择22pF。4.2复位电路图中电阻选用1K电阻,可以实现上电复位和手动复位4.3LCD1602显示电路通过LCD1602显示水位信息,并将LCD连接到P0和P1端口4.4蜂鸣器电路和航标灯显示电路图中通过PNP管的驱动蜂鸣器发声,仿真中蜂鸣器的发声必须通过PWM波形驱动;用LED当作航标灯,并接在P1.7口4.5ADC转换电路图中电路为ADC0804经典接法,空出的第5号脚为转换结束信号引脚;此次设计并没有用到该引脚;当让也可以接到单片机引脚,通过该引脚检测转换是否结束。4.6光敏电阻的选择本系统中光敏电阻利用单刀双掷开关代替。五.软件设计框图开始定时器,液晶初始化AD转换白天或晚上低于警戒水位白天蜂鸣器加速鸣 响高于警戒水位白天蜂鸣器鸣响LED加速闪烁蜂鸣器加速鸣响晚上LED闪烁蜂鸣器鸣响液晶显示水位六调试结果系统中当检测到水位变化时,通过LCD1602显示水位,并用一个一个“!”表示水位过低,并发出警告信号(白天蜂鸣器鸣叫频率变高,晚上LED闪烁频率和蜂鸣器鸣叫频率都变高),当水位正常时,发出提醒信号(白天蜂鸣器鸣叫正常,晚上LED闪烁频率和蜂鸣器鸣叫频率都正常);当水位变化时,通过串口将水位发送到控制总台,反应实时水位信息。七总结本次课程设计让我发现自己理论知识不足,理解不透彻,导致多走很多弯路,也让我深刻体会到理论与实践相结合的重要性,通过学习将课本上的理论知识应用于实践,本次课程设计应用知识面广,涉及知点多,所以很有实践意义,以前的很多理论知识都必须应用到实践当中,必须熟练掌握各方面的知识。虽然两周的课程设计很短,但是充分锻炼了我们的团队合作能力以及对知识点的巩固,也培养了我们独立思考和设计能力,树立了对知识点应用的信心课程设计虽然结束了,但我从中学到很多知识,受益匪浅,感触很深。八参考文献1、教材单片微型计算机技术 刘国荣 编 机械工业出版社2、单片微型计算机原理、应用及接口技术 张迎新 编 国防工业出版社3、单片机实用系统设计技术 房小翠 编 国防工业出版社4、单片机应用系统设计 何立民 编 北航出版社5、单片机原理及接口技术 曹琳琳编 国防科技大学出版社附录A 系统原理图附录B 程序清单1.主程序:#include #includedef.h#includelib.h#includeadc_dis.h#includelcd1602.hsbit LED=P17;sbit BUZ=P16;sbit status=P32;INT16U num=0,flag=0,num1=0,num2=0;INT8U stage,deep=0;/*定时器初始化函数*/void timer_init()TMOD=0X21;/设定定时器1工作在方式2,定时器0工作在方式1SCON=0X40;/串口方式1PCON=0;/SMOD位为0TL1=0XFD;/9600HzTH1=0XFD;TH0=0X3c;TL0=0Xb0;/设定定时器0初值为15536 TR1=1;/启动定时器1;IE=0X82;/打开总中断和定时器0溢出中断/*串口发送程序*/void usart_send(INT8U date)/串口发送数据SBUF=date;while(!TI);/判断数据是否发送完成TI=0;/*串口发送字符串程序*/void usart_print(INT8U *temp)/发送字符while(*temp)!=0) usart_send(*temp+);/*定时器中断处理函数*/void timer0() interrupt 1TH0=0X3c;TL0=0Xb0;/设定定时器0初值为15536num+; /控制LEDnum1+;/控制蜂鸣器num2+;/控制水位数据的发送void led_buz(INT8U temp)INT16U i,j;if(stage=1)TR0=1;stage=0;if(temp=10) LED=LED;num=0; if(num1=10)num1=0;for(i=0;i70;i+)for(j=0;j103) /正常水位if(status=1)/白天LED=1;flag=1;else /晚上if(num=40)LED=LED;num=0;if(num1=30)num1=0;for(i=0;i1000;i+)for(j=0;j100;j+);BUZ=BUZ;/*水位显示函数*/void display(INT8U temp)INT8U bai,shi,ge;bai=temp/100;shi=temp/10%10;ge=temp%10;write_com(0x80+2);/显示位置命令delay(1);lcd_prints(water level);write_com(0x80+0x40+6);delay(1);write_date(bai+0x30);write_date(shi+0x30);write_date(ge+0x30);if(temp=60)/每3s发送一次水位数据num2=0;usart_send(deep/100+0x30);usart_send(deep/10%10+0x30);usart_send(deep%10+0x30);usart_send(m);if(deep103) usart_send(!);usart_print(r);/发送回车符号,即换行display(deep);/LCD1602显示led_buz(deep);/蜂鸣器和LED控制函数2.液晶显示函数LCD1602.C#include #includelib.h#includedef.h#includesbit lcd_rs=P13;sbit lcd_rw=P14;sbit lcd_en=P15;/*1602写命令函数*/void write_com(INT8U com)lcd_rs=0;P0=com;delay(1);lcd_en=1;delay(1);lcd_en=0;/*1602写数据函数*/void write_date(INT8U date)lcd_rs=1;P0=date;delay(1);lcd_en=1;delay(1);lcd_en=0;/*1602写初始化函数*/void lcd_init()lcd_rw=0;/lcd_rs=1;/lcd_en=0;write_com(0x38); /设置显示方式为16*2显示write_com(0x0c); /显示开,关光标write_com(0x06); /移动光标write_com(0x01); /清屏指令/*1602显示字符串函数*/void lcd_prints(INT8U *lcd_string)INT8U i=0;while(lcd_stringi!=0) write_date(lcd_stringi);i+;3.LCD1602.H头文件#ifndef _LCD1602_H_#define _LCD1602_H_#includedef.hvoid write_com(INT8U com);void write_date(INT8U date);void lcd_init();void lcd_prints(INT8U *lcd_string);#endif4.AD转换函数ADC_DIS.C#include #includedef.h#includelib.hsbit adc_cs=P10;sbit adc_rd=P11;sbit adc_wr=P12;/*ADC0804启动转换函数*/INT8U start_ad()INT8U temp;adc_cs=0;adc_wr=1;delay(1);adc_wr=0;delay(1);adc_wr=1;delay(1);/启动ADadc_rd=1;delay(1);adc_rd=0;delay(1);temp=P2;delay(1);adc_rd=1;delay(1); /读取数据return temp;5.AD转换函数ADC_DIS.H头文件#ifndef _ADC_DIS_H_#define _ADC_DIS_H_INT8U start_ad();#endif延时函数#include #includedef.hvoid delay(INT16U z)INT16U x,y;for(x=0;xz;x+)for(y=0;y110;y+);6.LIB.H头文件#ifndef _LIB_H_#define _LIB_H_#includedef.hvoid delay(INT16U z);#endif7.DEF.H头文件#ifndef _DEF_H_#define _DEF_H_typedef unsigned int INT16U;typedef unsigned c

温馨提示

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

评论

0/150

提交评论