单片机课程设计照明控制系统解读.docx

上传人:b****6 文档编号:12598845 上传时间:2023-06-06 格式:DOCX 页数:16 大小:121.06KB
下载 相关 举报
单片机课程设计照明控制系统解读.docx_第1页
第1页 / 共16页
单片机课程设计照明控制系统解读.docx_第2页
第2页 / 共16页
单片机课程设计照明控制系统解读.docx_第3页
第3页 / 共16页
单片机课程设计照明控制系统解读.docx_第4页
第4页 / 共16页
单片机课程设计照明控制系统解读.docx_第5页
第5页 / 共16页
单片机课程设计照明控制系统解读.docx_第6页
第6页 / 共16页
单片机课程设计照明控制系统解读.docx_第7页
第7页 / 共16页
单片机课程设计照明控制系统解读.docx_第8页
第8页 / 共16页
单片机课程设计照明控制系统解读.docx_第9页
第9页 / 共16页
单片机课程设计照明控制系统解读.docx_第10页
第10页 / 共16页
单片机课程设计照明控制系统解读.docx_第11页
第11页 / 共16页
单片机课程设计照明控制系统解读.docx_第12页
第12页 / 共16页
单片机课程设计照明控制系统解读.docx_第13页
第13页 / 共16页
单片机课程设计照明控制系统解读.docx_第14页
第14页 / 共16页
单片机课程设计照明控制系统解读.docx_第15页
第15页 / 共16页
单片机课程设计照明控制系统解读.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计照明控制系统解读.docx

《单片机课程设计照明控制系统解读.docx》由会员分享,可在线阅读,更多相关《单片机课程设计照明控制系统解读.docx(16页珍藏版)》请在冰点文库上搜索。

单片机课程设计照明控制系统解读.docx

单片机课程设计照明控制系统解读

河南理工大学

《单片机应用与仿真训练》设计报告

 

照明控制系统

 

姓名:

李兵

学号:

311208001611

专业班级:

自动化12-1班

指导老师:

王新

所在学院:

电气工程与自动化学院

 

2014年1月17日

摘要

 

本设计是一种新型智能控制仪表,它可以根据不同季节不同天亮天黑时间,按照人们不同的需要通过按键对路灯的点亮和熄灭时间进行设置。

在本系统设计中,综合各方面因素考虑,采用了STC公司生产的89C52单片机,利用单片机自身的定时计数器控制实时时间,通过程序设置,时间精度可以达到相关要求。

通过I/O口的按键可以调整实时时间,点亮路灯时间,熄灭路灯时间。

本设计硬件电路简单成本低,性能可靠,操作简单,实现了52单片机在在智能控制当中的应用。

利用52单片机本身的两个外部中断来设置调节路灯的点亮时间和熄灭时间,通过外部按键进入中断子程序,利用P2口的3个按键来改变路灯点亮与熄灭时间的时、分、秒。

用一个P3^5口的一个按键来出中断(时间设置完毕)。

利用P0口带上拉1K的电阻向八段共阴极码管输入段选码,利用P1的前面六个I/O口向六位数码管输入位选码。

51单片机的P0口当程序给其赋1的时候,I/O口显示的是高阻态而不是高电平。

另外单片机I/O口所能提供的电流只有几毫安,不足以点亮八段数码管。

所以利用P0口的高阻态和上拉电阻,在端口赋1的时候,电流从单片机外部输入,通过单片机位选端口流出,直接点亮数码管。

 

1概述………………………………………………………3

2系统总体方案及硬件设计………………………………………………4

2.1方案设计………………………………………………………………4

2.2设计原理................................................................................................4

2.3硬件设计…………………………………………………4

3软件设计…………………………………………………………………6

4Proteus软件仿真………………………………………………………7

 

5课程设计体会……………………………………………………………10

参考文献

附1:

源程序代码…………………………………………………………11

附2:

系统原理图…………………………………………………………16

 

1概述

 

本设计是基于AT89C52单片机的照明控制系统

该照在众多的单片机系列中,AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系列可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,也适用于常规编程。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超高效的解决方案。

AT89C52具有以下标准功能:

8K字节Flash,256字节RAM,32位I/O口线,3个16位定时器/计数器,一个响亮2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89C52可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。

故此选用AT89C52单片机。

该照明控制系统是一种新型智能控制仪表,它可以根据不同季节不同天亮天黑时间,按照人们不同的需要通过按键对路灯的点亮和熄灭时间进行设置。

在本系统设计中,综合各方面因素考虑,采用了STC公司生产的89C52单片机,利用单片机自身的定时计数器控制实时时间,通过程序设置,时间精度可以达到相关要求。

通过I/O口的按键可以调整实时时间,点亮路灯时间,熄灭路灯时间。

本设计硬件电路简单成本低,性能可靠,操作简单,实现了52单片机在在智能控制当中的应用。

 

2系统总体方案及硬件设计

2.1方案设计

利用52单片机本身的两个外部中断来设置调节路灯的点亮时间和熄灭时间,通过外部按键进入中断子程序,利用P2口的3个按键来改变路灯点亮与熄灭时间的时、分、秒。

用一个P3^5口的一个按键来出中断(时间设置完毕)。

利用P0口带上拉1K的电阻向八段共阴极码管输入段选码,利用P1的前面六个I/O口向六位数码管输入位选码。

51单片机的P0口当程序给其赋1的时候,I/O口显示的是高阻态而不是高电平。

另外单片机I/O口所能提供的电流只有几毫安,不足以点亮八段数码管。

所以利用P0口的高阻态和上拉电阻,在端口赋1的时候,电流从单片机外部输入,通过单片机位选端口流出,直接点亮数码管。

2.2设计原理

图1设计原理图

2.3硬件设计

硬件电路的设计主要包括单片机系统及显示电路、控制电路和调节电路三部分,单片机采用AT89C52。

采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差,利用P2^3,P2^4,P2^5的按键分别改变时间的时、分、秒。

通过3个按键改变实时时间,路灯点亮时间,路灯熄灭时间的小时,分钟秒数。

分别用两个按键进入点亮时间和熄灭时间设置模式,分别用两个LED灯显示两个不同的模式加以区别。

图2硬件设计电路图

 

3.软件设计

本设计采用了STC公司生产的89C52单片机,利用单片机自身的定时计数器控制实时时间,通过程序设置,时间精度可以达到相关要求。

通过I/O口的按键可以调整实时时间,点亮路灯时间,熄灭路灯时间。

本设计硬件电路简单成本低,性能可靠,操作简单,实现了52单片机在在智能控制当中的应用。

程序说明:

采用三组,每组三个全局变量分别来控制实时时间,点亮时间和熄灭时间的时、分、秒。

使用外部中断0和1来调整点亮时间和熄灭时间。

利用定时计数器0来计数当前时间。

主程序可改变实时时间的数值,比较三组时间的数值,判断是否点亮路灯。

 

4软件仿真

附图1未进入工作状态时的仿真图

附图2进入设置点亮时间状态时的仿真图

附图3到达设置时间路灯点亮时的仿真图

附图4进入设置熄灭时间状态时的仿真图

附图5到达设置时间路灯熄灭时的仿真图

 

5课程设计体会

我从这次的设计中还感受到坚持的重要性。

做事情不能轻言谈放弃,虽然过程不顺利,与想象中相去甚远。

但是只要我们能坚持,朝着自己既定的目标前进,就一定会走到终点。

一点小小的挫折实际上是在为最后的美景做铺垫,当我们守得云开见月明的时候,就会发现,沿途的曲折其实是在考验我们的目标是否坚定。

坚持下来,我们会收获丰硕的果实。

  电子课程设计,不仅让我们的知识更加牢固,还让我意识到我们所学的知识可以与生活紧密的联系起来。

这让我对自己有了更多的信心,因为我们在大学里面不是混日子,而是在学习真正对我们的生活有帮助的知识和能力。

一个小小的课程设计,却让我有了大大的希望。

我会更加珍惜现在这么好的学习环境,努力学习知识,让自己在激烈的社会竞争中立足,也把自己所学的知识运用到生活实际中来回报社会。

参考文献

[1]王思明.单片机原理及应用系统设计.北京:

科学出版社,2012.

 

附1源程序代码

#include

#defineucharunsignedchar

#defineuintunsignedint

charcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

charcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

sbita=P2^0;

sbitb=P2^1;

sbitshic=P2^5;

sbitfenc=P2^4;

sbitmiaoc=P2^3;

sbitoutin=P3^5;

sbitinlamp1=P1^0;

sbitinlamp2=P1^1;

sbitludeng=P2^7;

ucharhour=0,min=0,second,STH,STM,STS,LH,LM,LS;

uintaa=0;

voidyan(intv)

{

intx,j;

for(x=v;x>0;x--)

for(j=10;j>0;j--);}

voidxianshi(ucharh,ucharm,uchars)

{

ucharhhour,lhour,hmin,lmin,hsecond,lsecond;

hhour=h/10;

lhour=h%10;

hmin=m/10;

lmin=m%10;

hsecond=s/10;

lsecond=s%10;

b=1;

P0=0xfe;

b=0;

a=1;

P0=table[hhour];

a=0;

yan(5);

b=1;

P0=0xfd;

b=0;

a=1;

P0=table[lhour];

a=0;

yan(5);

b=1;

P0=0xfb;

b=0;

a=1;

P0=table[hmin];

a=0;

yan(5);

b=1;

P0=0xf7;

b=0;

a=1;

P0=table[lmin];

a=0;

yan(5);

b=1;

P0=0xef;

b=0;

a=1;

P0=table[hsecond];

a=0;

yan(5);

b=1;

P0=0xdf;

b=0;

a=1;

P0=table[lsecond];

a=0;

yan(5);

}

voidmain()

{ludeng=0;

EA=1;

TMOD=0x01;

TH0=0x4b;

TL0=0xfd;

TR0=1;

ET0=1;

EX0=1;EX1=1;IT0=1;IT1=1;

PX0=1;PX1=0;

while

(1)

{

if(shic==0)

{yan

(2);if(shic==0){hour++;}

if(hour==24)hour=0;

while(shic!

=1)xianshi(hour,min,second);}

if(fenc==0)

{yan

(2);if(fenc==0){min++;}

if(min==60)min=0;

while(fenc!

=1)xianshi(hour,min,second);}

if(miaoc==0)

{yan

(2);if(miaoc==0){second++;}

if(second==60)second=0;

while(miaoc!

=1)xianshi(hour,min,second);}

if(hour==STH)

{if(min==STM)

{if(second==STS)ludeng=1;}

}

if(hour==LH)

{if(min==LM)

{if(second==LS)ludeng=0;}

}

xianshi(hour,min,second);

}

}

voidtime0()interrupt1//定时器0用来控制实时时间

{

TH0=0x3c;

TL0=0xaf;

aa++;

if(aa==20)

{

aa=0;

second++;

if(second==60)

{

second=0;

min++;

if(min==60)

{

min=0;

hour++;

if(hour==24)

{

hour=0;

}

}

}

}

}

voidtimedot()interrupt0//设置点亮时间

{

inlamp1=0;

inlamp2=1;

while(outin==1)

{

if(shic==0)

{yan

(2);if(shic==0)STH++;

if(STH==24)STH=0;

while(shic!

=1)xianshi(STH,STM,STS);}

if(fenc==0)

{yan

(2);if(fenc==0)STM++;

if(STM==60)STM=0;

while(fenc!

=1)xianshi(STH,STM,STS);}

if(miaoc==0)

{yan

(2);if(miaoc==0)STS++;

if(STS==60)STS=0;

while(miaoc!

=1)xianshi(STH,STM,STS);}

xianshi(STH,STM,STS);

}

inlamp1=1;

}

voidtimelong()interrupt2//设置熄灭时间

{

inlamp2=0;

while(outin==1)

{

if(shic==0)

{yan

(2);if(shic==0)LH++;

if(LH==24)LH=0;

while(shic!

=1)xianshi(LH,LM,LS);}

if(fenc==0)

{yan

(2);if(fenc==0)LM++;

if(LM==60)LM=0;

while(fenc!

=1)xianshi(LH,LM,LS);}

if(miaoc==0)

{yan

(2);if(miaoc==0)LS++;

if(LS==60)LS=0;

while(miaoc!

=1)xianshi(LH,LM,LS);}

xianshi(LH,LM,LS);

}

inlamp2=1;

}

 

附2:

系统原理图

 

系统原理图

 

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

当前位置:首页 > 法律文书 > 调解书

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

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