彩灯毕业设计 - 图文

更新时间:2024-05-02 04:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计说明书(论文)

设计(论文)题目:__彩灯循环控制系统 专 业:____ 班 级:_____ _ _ 学 号:___ _____ ____ 姓 名:_ _ __ 指导教师: _ _

目录

摘要 ............................................................... 1 第1章 绪论 ....................................................... 2 1.1 单片机的简介 .................................................... 2 1.2 单片机的应用领域 ............................................... 2 1.3 单片机的发展趋势 ................................................ 2 第2章 彩灯硬件电路框架设计 ........................................ 3 2.1 彩灯功能描述 .................................................... 3 2.2 硬件电路设计框架 ................................................ 3 2.3 系统硬件单元电路设计及论证 ...................................... 4 2.3.1 晶振电路 ...................................................... 4 2.3.2 复位电路 ...................................................... 4 2.3.3 错误报警电路 .................................................. 4 2.3.4 开关电路 ...................................................... 5 2.3.5 发光电路 ...................................................... 5 第3章 彩灯系统软件设计 ............................................ 6 3.1 程序设计框图 .................................................... 6 3.2 子程序设计和功能介绍 ............................................ 6 3.2.1 延时程序 ...................................................... 6 3.2.2 初始化函数 .................................................... 7 3.2.3 彩灯循环方式控制程序 .......................................... 8 3.2.4 中断服务程序 ................................................. 10 第4章 系统调试 ................................................... 13 4.1 软件调试 ....................................................... 13 4.2 硬件调试 ....................................................... 13 第5章 毕业设计总结 ............................................... 15 参考文献 .......................................................... 15 附录1 彩灯电路总图及元器件清单 .................................... 16 附录2 彩灯整体程序 ................................................ 17

四川信息职业技术学院毕业设计说明书(论文)第1页

摘要

单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU)。随着单片机技术的飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平的重要标志。单片机可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。本毕业设计的课题是“彩灯循环控制系统的设计”。主要考核我们对单片机技术,编程能力等方面的情况。观察独立分析、设计单片机的能力,以及实际编程技能。

关键字: 单片机;彩灯;循环;控制

四川信息职业技术学院毕业设计说明书(论文)第2页

第1章 绪论

1.1 单片机的简介

单片机是单片微型计算机的简称,也就是把微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。

由此来看,单片机是可单独地完成现代工业控制所要求的智能化控制系统,这是单片机最大的特征。

1.2 单片机的应用领域

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:

1.在智能仪器仪表上的应用 2.在工业控制中的应用 3.在家用电器中的应用

4.在计算机网络和通信领域中的应用 5.单片机在医用设备领域中的应用

1.3 单片机的发展趋势

现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:

1.低功耗CMOS化 2.微型单片化 3.主流与多品种共存

四川信息职业技术学院毕业设计说明书(论文)第3页

第2章 彩灯硬件电路框架设计

2.1 彩灯功能描述

本次毕业设计主要完成功能有:

(1)当按下开关KEY1时,彩灯依次一个一个点亮。 (2)当按下开关KEY2时,彩灯每两个间隔点亮。 (3)当按下开关KEY3时,彩灯灯全部闪烁。

(4)当按下开关(顺序)时,以上3种点亮方式依次执行一次。 (5)当按下暂停开关时,保持彩灯当前状态,松开开关时,继续运行。 (6)当按下中断开关时,说明彩灯系统出错了,所有红灯亮,喇叭报警。(通过中断假设出故障)

(7)当按下复位开关时,彩灯系统恢复到最初状态。

2.2 硬件电路设计框架

根据设计要求,彩灯硬件电路框图设计如图2-1所示:

图2-1 彩灯设计框图

从框图中可以看出本次毕业设计单元电路包括了由32只不同颜色组成的发光电路、12MHz晶振组成的晶振电路、复位电路、错误报警电路、开关电路。

错误报警电路 晶振电路 复位电路 RST P1口 X1 p2口 X2 彩灯发光电路 单片机 P3.2P3.3 P0.1P0.4 开关电路 、—

四川信息职业技术学院毕业设计说明书(论文)第9页

}

设计的此段程序的功能是实现依次一个一个的被点亮。 2.循环方式2 void FUN2() { }

设计此段程序实现的功能是每隔两个间隔点亮一个灯。 3.循环方式3 void FUN3() {

temp1=0x0;

temp2=0x0; //将0赋给temp1、temp2,驱动彩灯发光 TR1=1; //启动定时器/计数器1

temp1=0xAA;

temp2=0xAA; //将二进制数10101010赋给temp1、temp2 TR0=1; //启动定时器/计数器0

while(TR0==1);//while循环,当TR0等于1时,进行循环 P1=0x0ff;

P2=0x0ff; //对p1口和p2口置1 }

P1=0x0ff;

P2=0x0ff; //分别对P1、p2口置1

delay(500);//调用延时子函数 P2=0xFF; //对p2口置1

P1=temp1; //将temp1的值赋给p1口

temp2=_crol_(temp2,1); //将temp2右移1位 delay(500);//调用延时子函数 P1=0xFF; //对p1口置1

P2=temp2; //将temp2的值赋给temp2

四川信息职业技术学院毕业设计说明书(论文)第10页

}

设计此段程序是为了实现彩灯的全部闪烁。

while(TR1==1); //while循环,若TR1等于1,进行循环 P1=0x0ff;

P2=0x0ff; //对p1口和p2口置1

3.2.4 中断服务程序

1.外部中断0服务程序 void _EX0_() interrupt 0 { }

此段程序定义了一个返回值为空的_EX0_函数,关键字interrupt后面的0表示终端号,即表示的外部中断0,中断向量地址为0003H。 2.定时器0中断服务程序 void _ET0_() interrupt 1 {

TH0=(65536-50000)/256;//将计算出的值赋给定时器0的高8位 TL0=(65536-50000)%6;// 将计算出的值赋给定时器0的低8位 aa++; //aa的值自加1

if(aa!=20)//判断aa的值是否等于20,若不得,则执行循环 {

P1=temp1;

P2=temp2;//将temp1、temp2的状态值赋给temp1、temp2 while(1) //while循环,条件真即为1,便循环 { }

P1=0x77;

P2=0xee; //对p1口和p2口赋值 beep=!beep;//对beep的值进行取反 delay(100);//调用延时函数

四川信息职业技术学院毕业设计说明书(论文)第11页

}

此段程序定义了一个返回值为空的_ET0_函数,关键字interrupt后面的1表示终端号,即表示定时器0,中断向量地址是000B H。 3.外部中断1服务程序 void _EX1_() interrupt 2 { }

此段程序定义了一个返回值为空的_EX1_函数,关键字interrupt后面的2表示终端号,即表示外部中断1,其中断向量地址为0013H。

PX1=0;

PX0=1;//设置外部中断1、外部中断0的优先级 temp_int1=key_int1;//将key_int1的值赋给temp_int1

while(temp_int1==0)//while循环,若temp_int1的值等于0,循环 { } PX0=0;

PX1=1;//设置外部中断0、外部中断1的优先级

temp_int1=key_int1;//将key_int1的值赋给temp_int1 }

else //当aa的值等于20时 { }

aa=0;//将0赋给aa

TR0=0;//停止定时器/计数器0 TH0=(65536-50000)/256; TL0=(65536-50000)%6; temp1=_cror_(temp1,1);

temp2=_cror_(temp2,1);//temp1、temp2右移1位 delay(500);

//调用延时函数

四川信息职业技术学院毕业设计说明书(论文)第12页

4.定时器1中断服务程序 void _ET1_() interrupt 3 { }

此段程序定义了一个返回值为空的_ET1_函数,关键字interrupt后面的3表示终端号,即表示定时器1,其中断向量地址为001BH。

TH1=(65536-50000)/256; TL1=(65536-50000)%6; bb++; if(bb!=20) { } else { }

bb=0; TR1=0;

TH1=(65536-50000)/256; TL1=(65536-50000)%6; P1=temp1; P2=temp2; temp1=~temp1; temp2=~temp2; delay(500);

四川信息职业技术学院毕业设计说明书(论文)第13页

第4章 系统调试

单片机硬件和软件调试的工具分别为:protues 和Keil C51调试软件。

4.1 软件调试

单片机软件调试主要是调试本次课程设计的主程序。其调试过程如下: (1)新建一个工程。单击Project菜单,在弹出的下拉菜单中选New Project。 (2)然后选择你要保存的路径,输入工程文件的名字,保存。

(3)新建一个工程后弹出一个对话框,根据你的需要选择你使用的单片机型号。然后点击确定。

(4)单击“File”,选择“New”,新建文件并在其中输入程序代码,然后保存为c语言文件。

(5)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”单击右键选择“Add File To Group ‘Source Group 1’”,选中Test.c文件。

(6)单击“Project”菜单,选中“Built Target”,完成程序的编译,在工程文件夹中找到*.hex文件即可。

4.2 硬件调试

单片机硬件调试是检测在设计电路时,电路中存在的一些缺陷,故硬件调试是必不可少的,其步骤大致如下:

(1)打开软件Protues,将设计好的单片机硬件电路打开。

(2)在确定电路已经连接完成后,双击AT89C51单片机加入*.hex文件。 (3)单击软件最左下方的Play按钮。

若无异常,当按下某一按键时,能完成以下功能时,则表示设计调试通过。 (1)当按下开关KEY1时,彩灯依次一个一个点亮。 (2)当按下开关KEY2时,彩灯每两个间隔点亮。 (3)当按下开关KEY3时,彩灯灯全部闪烁。

(4)当按下开关(顺序)时,以上3种点亮方式依次执行一次。 (5)当按下暂停开关时,保持彩灯当前状态,松开开关时,继续运行。 (6)当按下中断开关时,说明彩灯系统出错了,所有红灯亮,喇叭报警。

四川信息职业技术学院毕业设计说明书(论文)第14页

(通过中断假设出故障)

(7)当按下复位开关时,彩灯系统恢复到最初状态。

四川信息职业技术学院毕业设计说明书(论文)第15页

第5章 毕业设计总结

大学三年就会在这最后的毕业设计总结划上一个圆满的句号。我曾经以为时间是一个不快不慢的东西,但现在我感到时间过的是多么的飞快,三年了,感觉就在一眨眼之间结束了我的大学生涯。最能把理论知识运用到实践当中的过程就数毕业设计了。在整个毕业设计的过程中每一步都是自己亲自做过的,遇到的问题也非常多,在经过遇到问题,思索问题到解决问题的过程中,收获是最多的。以往没有注意到的问题,都在这一次的毕业设计中得以体现,这培养了我的细心,耐心和专心。我觉得能够在这次的毕业设计中学到很多的东西,以往不注意的细节,在这一次中是必须让自己去注意的。也是我这三年来所学到知识的一个体现。我深深知道,每一次的学习实践环节都是那么的来之不易,都是通过老师的深思熟虑后,才给我们定下目标。然后让我们在知识的海洋里翱翔,让我们随着年龄的增长不断的扩充自己的知识领域,也逐渐成熟,逐渐长大,老师同时也教导我们逐渐成为一个能够为身边的人,为家庭,为国家做出点点贡献的人,教导我们学会感恩。所以,我在这次的毕业设计中,认真对待每一个过程,希望自己的认真,自己最后的毕业设计的成果能够回报老师这么多年来的教导,这么多年的奉献。

最后,由于理论方面所学有限,理解又不好,再加之动手能力的匮乏,在这次毕业设计中难免会有错误,还望老师批评指正。

参考文献

四川信息职业技术学院毕业设计说明书(论文)第16页

[1] [2] [3] [4]

林志琦.单片机原理接口及应用.北京:中国水利水电出版社,2007 胡辉.单片机原理与应用.北京:中国水利水电出版社,2007 赵文博.单片机语言C51程序设计.北京:人民邮电出版社,2005 谭浩强.c程序设计.北京:清华大学出版社,1991

附录1 彩灯电路总图及元器件清单

四川信息职业技术学院毕业设计说明书(论文)第17页

元器件清单:

AT89C51一个、按键7个、发光二极管32只(不同色)、石英晶振器1个、电容2个、极性电容1个、电阻和导线若

附录2 彩灯整体程序

四川信息职业技术学院毕业设计说明书(论文)第18页

#include //将51单片机的寄存器包含在头文件中 #include //将内部函数包含在头文件中

#define uint unsigned int//宏定义,用uint代替unsigned int(无符号整型变量)

#define uchar unsigned char//宏定义,用uchar代替unsigned char(无符号字符变量)

uchar temp_int1; uchar temp1; uchar temp2; uchar temp_key1; uchar temp_key2; uchar temp_key3; uchar temp_key4;//定义无符号字符变量temp_int1、temp1、temp2、temp_key1、temp_key2、temp_key3、temp_key4 uint cnt; uint aa; uint bb;

uint flag;//定义无符号整型变量cnt、aa、bb、flag sbit key1=P0^2; sbit key2=P0^3; sbit key3=P0^4; sbit key4=P0^1;

sbit key_int1=P3^3;

sbit beep=P0^0;//用key1、key2、key3、key4、key_int1、beep代替P0^2、P0^3、P0^4、P0^1、P3^3、P0^0 //延时函数

void delay(uint z)//定义了一个返回值为空的delay函数,里含一个形参——无符号整型变量z {

uint x,y;//定义了无符号整型变量x、y for(x=z;x>0;x--)

for(y=120;y>0;y--);//二重for循环,外循环循环z(z的值在delay函数被调用时得到)次,内循环循环120次,其循环语句均为空操作,从而实现延时功能 }

//初始化函数

void init()//定义一个返回值为空的init函数 {

EA=1;//开放所有中断

EX0=1;//允许外部中断0中断

IT0=1;//外部中断0的中断触发方式控制位置1,即设置外部中0为边沿触发方式

ET0=1;//允许T0中断(定时器/计数器T0的输出中断允许位)

四川信息职业技术学院毕业设计说明书(论文)第19页

TR0=0;//停止定时器/计数器0 TH0=(65536-30000)/256; TL0=(65536-30000)%6; EX1=1;//允许外部中断1中断

IT1=0;//将外部中断1的中断触发方式控制位置0,即设置外部中断1为电平触发方式

PX1=1;//将外部中断1中断优先级控制位置1 ET1=1;//允许T1中断

TR1=0;//停止定时器/计数器1 TH1=(65536-50000)/256; TL1=(65536-50000)%6; P1=0xFF;

P2=0XFF;//将P1口和P2口置1,因为在P1口和P2口引脚时,应先向锁存器写\

temp1=0x7F; temp2=0x7F; cnt=8; aa=0; bb=0;

key_int1=1; key1=1; key2=1; key3=1; key4=1;

temp_int1=key_int1; temp_key1=key1; temp_key2=key2; temp_key3=key3; temp_key4=key4; beep=1;

flag=0;//分别对temp1、temp2、cnt、aa、bb、key_int1、key1、key2、key3、key4、temp_int1、temp_key1、temp_key2、temp_key3、temp_key4、beep、flag赋值 }

//彩灯方式1 void FUN1() {

cnt=8;

temp1=0X7F; temp2=0X7F; while(cnt!=0) {

cnt--;

temp1=_crol_(temp1,1);

四川信息职业技术学院毕业设计说明书(论文)第20页

delay(500); P2=0xFF; P1=temp1;

temp2=_crol_(temp2,1); delay(500); P1=0xFF; P2=temp2; }

P1=0x0ff; P2=0x0ff; }

//彩灯方式2 void FUN2() {

temp1=0xAA; temp2=0xAA; TR0=1;

while(TR0==1); P1=0x0ff; P2=0x0ff; }

//彩灯方式3 void FUN3() {

temp1=0x0; temp2=0x0; TR1=1;

while(TR1==1); P1=0x0ff; P2=0x0ff; }

//主函数 void main() { init(); while(1) {

temp_key1=key1; temp_key2=key2; temp_key3=key3; temp_key4=key4; if(temp_key4==0) {

delay(5);

四川信息职业技术学院毕业设计说明书(论文)第21页

temp_key4=key4; if(temp_key4==0) {

FUN1(); FUN2(); FUN3(); } }

if(temp_key1==0) {

delay(5);

temp_key1=key1; if(temp_key1==0) {

FUN1(); } }

if(temp_key2==0) {

delay(5);

temp_key2=key2; if(temp_key2==0) {

FUN2(); } }

if(temp_key3==0) {

delay(5);

temp_key3=key3; if(temp_key3==0) {

FUN3(); } }

} }

//外部中断0服务程序

void _EX0_() interrupt 0 {

while(1) {

P1=0x77;

//三种彩灯方式依次执行

//执行彩灯方式1

//执行彩灯方式2

//执行彩灯方式3

四川信息职业技术学院毕业设计说明书(论文)第22页

P2=0xee; beep=!beep; delay(100); } }

//定时器0中断服务程序 void _ET0_() interrupt 1 {

TH0=(65536-50000)/256; TL0=(65536-50000)%6; aa++;

if(aa!=20) {

P1=temp1; P2=temp2;

temp1=_cror_(temp1,1); temp2=_cror_(temp2,1); delay(500); } else {

aa=0; TR0=0;

TH0=(65536-50000)/256; TL0=(65536-50000)%6; } }

//外部中断1服务程序 void _EX1_() interrupt 2 {

PX1=0; PX0=1;

temp_int1=key_int1; while(temp_int1==0) {

temp_int1=key_int1; }

PX0=0; PX1=1; }

//定时器1中断服务程序 void _ET1_() interrupt 3 {

TH1=(65536-50000)/256;

四川信息职业技术学院毕业设计说明书(论文)第23页

}

TL1=(65536-50000)%6; bb++;

if(bb!=20) {

P1=temp1; P2=temp2;

temp1=~temp1; temp2=~temp2; delay(500); } else {

bb=0; TR1=0;

TH1=(65536-50000)/256; TL1=(65536-50000)%6; }

本文来源:https://www.bwwdw.com/article/wi4g.html

Top