《单片机课程设计》报告.docx

上传人:b****6 文档编号:3474869 上传时间:2022-11-23 格式:DOCX 页数:18 大小:214.99KB
下载 相关 举报
《单片机课程设计》报告.docx_第1页
第1页 / 共18页
《单片机课程设计》报告.docx_第2页
第2页 / 共18页
《单片机课程设计》报告.docx_第3页
第3页 / 共18页
《单片机课程设计》报告.docx_第4页
第4页 / 共18页
《单片机课程设计》报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

《单片机课程设计》报告.docx

《《单片机课程设计》报告.docx》由会员分享,可在线阅读,更多相关《《单片机课程设计》报告.docx(18页珍藏版)》请在冰豆网上搜索。

《单片机课程设计》报告.docx

《单片机课程设计》报告

机械与车辆学院

《单片机课程设计》报告

(2014-2015学年第一学期)

 

课程设计题目:

水塔水位控制系统设计

姓名:

学号:

班级:

12机电1班

指导老师:

时间:

2014年12月22日—2015年1月4日

成绩:

 

目录

一、课程设计性质和目的…………………………………… 1

二、课程设计的内容及要求………………………………… 1

三、课程设计的进度及安排………………………………… 2

四、设计所需设备及材料…………………………………… 2

五、设计思路及原理分析…………………………………… 3

六、流程图及程序编写……………………………………… 5

七、调试运行………………………………………………… 7

八、结果及分析……………………………………………… 7

九、心得体会………………………………………………… 8

一十、参考文献………………………………………………… 8

十一、致谢……………………………………………………… 8

十二、附录……………………………………………………… 9

 

1、课程设计性质和目的

此次单片机课程设计是对于这学期我们学习的《单片机原理与接口技术》课程的延续与检验,这一学期我们虽然有学习单片机,也有进行够实验,但这些更多的只是停留在书本与电脑仿真,并未过多接触实物,而此次课程设计正好可以让我们将所学的理论知识与实践结合在一起,提高我们的实操能力,同时也培养我们的能动性与创造力,不再要求我们按老师的思路走,完全可以根据自己的想象力与能力去设计完全只属于自己的作品。

通过电路设计、安装、调试等一系列环节的实施,提高学生的单片机应用系统的设计能力。

2、课程设计的内容及要求

 1、硬件设计

(1)用80C51设计一个单片机最小控制系统。

其中P2.0接水位下限传感器,P2.1接水位上限传感器,P2.2输出经反相器后接光电耦合器,通过继电器控制水泵工作,P2.3输出经反相器后接LED,当出现故障时LED闪烁;P2.4输出经反相器后接蜂鸣器,当出现故障时报警。

(2)完成一个单片机至水泵的控制电路。

要求单片机与水泵之间用光电耦合器和继电器控制,用LED灯与蜂鸣器作为报警装置。

2、软件设计

(1)根据功能要求画出控制程序流程图。

(2)根据控制程序流程图编写80C51汇编语言

3、功能要求:

(1)水塔水位下降至下限水位时,启动水泵,水塔水位上升至上限水位则关闭水泵。

水泵工作时LED灯长亮。

(2)水塔水位在上、下限水位之间时,水泵保持原状态。

当水泵工作时LED灯长亮,水泵不工作时LED灯灭。

(3)供水系统出现故障时,自动报警:

LED灯闪烁,且蜂鸣器报警。

 

三、课程设计的进度及安排

           表1课程设计的进及安排表

序号

项             目

时  间

1

整理课程设计任务,思考水塔水位控制系统总体方案设计、仿真电路设计、程序编写与调试

1天

2

焊接训练、水塔水位控制系统硬件设计与制作

1天

3

水塔水位控制系统程序编写与调试

1天

4

数字时钟电路设计(仿真电路+程序)与调试

1天

5

水塔水位控制系统硬件制作与调试

1天

6

桥式整流电路设计与仿真

1天

7

撰写课程设计报告

1天

8

水塔水位控制系统综合调试、整体调试

1天

9

撰写课程设计报告

1天

10

检测验收,答辩,提交实物及报告

1天

四、设计所需设备及材料

表2设计所需设备及材料表

元件名

原理图

工作原理

个数

继电器

SRD-12VDC-SL-C

线圈通电产生磁场,吸附开关,使常闭端打开,闭合与常开端

1

1

 

光电藕合器

 

4n25

输入的电信号驱动发光二极管,使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步的放大输出,实现电—光—电的转化

 

1

PNP三极管

9015C

PNP三极管用作开关,当基极电位低于发射极电位是三极管导通

 

1

二极管

单向导通,保护继电器

1

电阻5.1kΩ

保护电路

2

电阻110Ω

保护电路

1

 

51单片机

CA89C51

对整个系统进行控制

 

1

 

五、设计思路及原理分析

1、设计思路原理

水塔水位控制原理图见图1,图中两条虚线表示正常工作情况下水位升降的上下限,在正常供水时,水位应控制在两条虚线代表的水位之间。

B测量水位下限,C测量水位上限,A接+5V,B、C接地。

图1水塔水位检测原理图

在水塔无水或水位低于下限水位时,B、C为断开,B、C两点电位为零(低电平“0”),需要水泵供水,单片机输出低电平,控制电机工作供水。

水位上升到B点,B接通,B点电位变为高电平“1”,C开关仍断开,C点仍为低电平,维持现状水泵继续供水。

当水位上升到C点时,C接通。

这时B、C均接通,B、C两点都为高电平,表示水塔水位已满,需水泵停止供水,单片机输出高电平,电机断电停止供水。

水塔水位开始下降,水位在降到B点之前,B点电位为高、C点电位为低,单片机输出控制电平维持不变,仍为高。

当水位降到B点以下,B、C两点电平都为低时,单片机输出控制电平又变低,水泵供水。

2、原理图及分析

如图2,P1.0与P1.1分别接水塔水位的上下限传感器;P1.2输出经Q0电流放大后接光电耦合器,接通继电器,带动电机控制水泵工作;P1.3输出接LED,水泵工作时长亮,当出现故障时LED闪烁;P1.4输出接蜂鸣器,当出现故障时报警。

图2水塔水位控制系统电路原理图

两个水位信号由P1.0和P1.1输入,这两个信号共有四种组合状态。

如表3所示。

其中第三种组合(b=1、c=0)正常情况下是不能发生的,但在设计中还是应该考虑到,并作为一种故障状态。

 

表3水塔水位信号状态表

C(P1.1)

B(P1.0)

操作

0

0

电机运转

0

1

维持原状

1

0

故障报警

1

1

电机停转

六、流程图及程序编写

图3水塔水位控制流程图

水塔水位单片机控制程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbita=P1^0;

sbitb=P1^1;

sbitc=P1^2;

sbitd=P1^3;

sbite=P1^4;

voiddelay(uintx)

{

uchari;

for(i=0;i

}

voidmain()

{

a=0;

b=0;

c=0;

d=0;

e=0;

while

(1)

{

if(a==0)

{

if(b==0)

{

c=1;

d=0;

e=0;

}

else

{

c=0;

d=1;

e=1;

delay(10);

d=~d;

e=~e;

delay(10);

}

}

else

{

if(b==0)

{

;

}

else

{

c=0;

d=0;

e=0;

}

}

}

}

七、调试运行

1.软件测试

  运用proteus,先将整个电路在软件上画好,再在KEIL上编写好程序并生成.hex文件,一切准备好后,在proteus上进行仿真,结果可正常运行,且满足所需的设计要求。

说明程序与所设计的电路没有错误。

2.硬件调试

  在将元件按所画的电路连接好后,先将程序烧进单片机里,再用通过杜邦线将P1各口与电路相应的插针相连,再分别连接地与+5V、+12V,接通电源,再分别给P1.2,P1.3,P1.4接上高电平,即分别检测继电器与电机,发光二极管,和蜂鸣器。

发现只有发光二极管可以正常工作,而继电器与蜂鸣器不能正常工作。

由于软件仿真没有问题,说明电路是可以用,那就可能是硬件参数不对、硬件损坏或连接错误的问题,再在换了一个高电压的电源输入后,发现继电器没有损坏,但接上高电平后只响一次,即只工作一次,经检查电路后发现,有一条线接错,改正后再次测试时,继电器可正常工作。

而在跟其他同学交流后才得知蜂鸣器要再接上一个放大电路后才能正常工作,由于所发的元件不足以再构建一个放大电路,所以我的蜂鸣器无法正常使用。

八、结果及分析

   最后,除了蜂鸣器外,其他该电路能够正常工作且满足设计要求。

           图4 电路板(正面)

           图5 电路板(反面)

九、心得体会

    通过此次课程设计,让我获益良多。

首先,让我认识到自己在动手焊接上仍是个新手,有许多的不足,第一次焊出来的电路板可谓是惨不忍睹,十分难看,接线也错综复杂,焊点堆叠。

后来我全拆了再重新焊,尽管比不了班里那些“大神”的,但比起自己的第一次焊的已经有很大的进步了;第二,让我认知到我以前所学的一些知识并没有完全掌握,离开了书本接触实物就不懂了,如三极管的三极分布我就搞不清;第三,此次课程设计中,锻炼了我们解决问题的能力,细心仔细,认真才能发现问题甚至避免很多错误,同时也锻练了我们的动手实践能力,让我们体会到了“纸上得来终觉浅,为知此事须躬行”、

十、参考文献

[1]高玉良.电路与模拟电子技术[M].北京:

高等教育出版社,2011.10.

[2]龙治红,谭本军.数字电子技术[M].北京:

北京理工大学出版社,2010.7

[3]王静霞.单片机应用技术[M].北京:

电子工业出版社,2009.5

十一、致谢

此次单片机课程设计之所以我能够顺利完成,是多亏了得到许多人的帮助,首先感谢老师这两周的悉心指导,同时感谢在这过程中帮助过我的同学们,无论是焊接还是编程,都得到过他们的帮助,特别是这几位同学,在此我表示十分感激。

12、附录

1.数字时钟

(1)内容要求

A.用7段8位的LED数码管设计出一个数字时钟,要求显示分(2位)、秒(2位)及十分之一秒即0.1秒(1位)。

按下启动按钮启动数字时钟,按下停止按钮暂停计时,当再次按下启动按钮时,从当前值继续计时,当按下复位按钮时,时钟复位。

b.通过设定定时按键,对时钟的分钟进行设定,每按一次,分钟设定加1,开始时,LED灯D1处于熄灭状态,当启动计时后,计时到达设定时间,时钟复位,且LED灯D1处于一直亮的状态。

(2)仿真图

图6数字时钟仿真图

(3)数字时钟程序

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharshuzi[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//是数码管的段选,数组里边的分别表示:

0123456789

ucharweixuan[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//是数码管的位选

sbitk1=P3^0;//启动

sbitk2=P3^1;//复位

sbitk3=P3^2;//停止

sbitd1=P0^0;//LED灯

uinti,second,minute,n,x,b,c,a,flag1,flag2;

voiddelay(uchari);//延时函数

voidshizhong();//显示数字时钟

voiddingshi();//用于定时分钟函数

voiddelay5ms();//定时5MS用于按键的消抖

voidshizhong1();//时钟控制函数,包括对时钟的启动,复位,停止,设定设定的操作

voidmain()

{

TMOD=0x12;//定时器1工作方式1和定时器0工作方式2

TH1=(65536-50000)/256;//定时时间为50MS设初值

TL1=(65536-50000)%256;//

TR1=0;//开定时器1

EA=1;//开总中断

ET1=1;//开定时器T1允许位

EX1=1;//开放外部中断0允许位

IT1=1;//置外部中断为边沿(下降沿4)触发方式

P2=0x00;//P2口为段选

P1=0xff;

//P1口为位选

while

(1)

{

shizhong1();

shizhong();

}

}

voiddingshiqing1()interrupt3//用定时器1中断号为3

{

TH1=(65536-50000)/256;//定时时间为50MS

TL1=(65536-50000)%256;//

i++;//

if(i==2)//100ms到,即0.1秒,即0.1秒加1

{

i=0;

n++;

if(n==10)//1000ms到,即1秒,秒加1,后n要清零

{

n=0;

second++;

if(second==60)//60秒到,即分钟加1,后秒要清零

{

second=0;

minute++;

if(minute==60)//60分钟到,分钟要清零

minute=0;

}

}

}

}

voidweidu1()interrupt2//外部中断1

{

unsignedintz;

flag1=1;//

b=second;

c=n;

a++;

if(a==60)

a=0;

for(z=0;z<40;z++)

dingshi();

}

voiddelay(uchari)

{

unsignedcharj,k;

for(k=0;k

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

}

voidshizhong()

{

P1=weixuan[6];

P2=shuzi[n];//显示时钟的0.1秒位

delay

(2);

P1=weixuan[5];

P2=0x40;//"-"

delay

(2);

P1=weixuan[3];

P2=shuzi[second/10];//显示时钟的秒的十位

delay

(2);

P1=weixuan[4];

P2=shuzi[second%10];//显示时钟的秒的个位

delay

(2);

P1=weixuan[2];

P2=0x40;//"-"

delay

(2);

P1=weixuan[0];

P2=shuzi[minute/10];//显示时钟的分钟的十位

delay

(2);

P1=weixuan[1];

P2=shuzi[minute%10];//显示时钟的分钟的个位

delay

(2);

}

voiddingshi()

{

P1=weixuan[6];

P2=0x00;

delay

(2);

P1=weixuan[5];

P2=0x00;

delay

(2);

P1=weixuan[3];

P2=0x00;

delay

(2);

P1=weixuan[4];

P2=0x00;

delay

(2);

P1=weixuan[2];

P2=0x00;

delay

(2);

P1=weixuan[0];

P2=shuzi[a/10];//显示时钟的分钟的十位

delay

(2);

P1=weixuan[1];

P2=shuzi[a%10];//显示时钟的分钟的个位

delay

(2);

}

voidshizhong1()

{

if((a==minute)&&(b==second)&&(c==n))//判断是不是到了定时的时间

{

if(flag2==1)//flag2为标志位,是在按K1启动的时候启动定时的

{

flag2=0;

d1=0;//到了定时时间LED灯亮

minute=0;//时钟复位,即分钟,秒,0.1秒都清零

second=0;//

n=0;//

}

}

if(k1==0)//判断是不是要启动时钟

{

delay5ms();//延时消抖

if(k1==0)

{

TR1=1;//开定时器1

if(flag1==1)//设标志位,只有在按下定时按键才进入这个函数

{

flag1=0;

flag2=1;

}

}

}

if(k2==0)//判断是不是要对时钟进行复位

{

delay5ms();

if(k2==0)

{

n=0;

second=0;

minute=0;

}

}

if(k3==0)//判断是不是要对时钟进行停止

{

delay5ms();

if(k3==0)

{

TR1=0;//关定时器1

}

while(!

k3);//

}

}

voiddelay5ms()

{

uinty;

TH0=6;

TL0=6;

for(y=0;y<20;y++)

{

TR0=1;

while(!

TF0);}

}

2、整流仿真

 

图7protel仿真练习1

 

 

图8整流电路仿真

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1