《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx

上传人:b****3 文档编号:4834637 上传时间:2022-12-10 格式:DOCX 页数:25 大小:732.17KB
下载 相关 举报
《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx_第1页
第1页 / 共25页
《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx_第2页
第2页 / 共25页
《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx_第3页
第3页 / 共25页
《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx_第4页
第4页 / 共25页
《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx

《《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx》由会员分享,可在线阅读,更多相关《《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx(25页珍藏版)》请在冰豆网上搜索。

《单片机原理及接口技术》课程设计报告多通道秒表定时器.docx

《单片机原理及接口技术》课程设计报告多通道秒表定时器

 

XX大学

《单片机原理及接口技术》

课程设计报告

 

课题名称

多通道秒表定时计数器设计

学院

专业

班级

姓名

学号

时间

 

一、课程设计目的和要求

1、设计的目的…………………………………………………………………………3

2、设计的要求…………………………………………………………………………3

(1)总体要求…………………………………………………………………………3

(2)具体要求…………………………………………………………………………3

二、设计的步骤和思路………………………………………………………………5

1、设计的步骤…………………………………………………………………………5

2、设计的思路…………………………………………………………………………5

三、硬件的设计………………………………………………………………………6

1、信号输入电路………………………………………………………………………6

2、数码管的驱动模块的电路……………………………………………………..…6

3、LED灯的驱动模块电路……………………………………………………………7

四、软件设计………………………………………………………………………….8

1、单片机选择…………………………………………………………………………8

2、系统软件设计分析…………………………………………………………………8

3、主要功能实现的程序………………………………………………………………9

(1)通道号的设置……………………………………………………………………9

(2)定时值的设置……………………………………………………………………9

五、调试说明…………………………………………………………………………11

六、心得体会…………………………………………………………………………14

七、致谢………………………………………………………………………………15

八、参考文献…………………………………………………………………………16

九、附录………………………………………………………………………………17

 

一、课程设计目的和要求

1、设计的目的

单片机课程作为独立的教学环节,是自动化及相关专业集中实践性环节系列之一,是学习完〈〈单片机原理及应用〉〉课程后,并在进行相关课程设计基础上进行的一次综合联系。

单片机课程设计过程中,我们通过查阅资料,接口设计、程序设计、安装调试等环节,完成一个基于MCS-51系列单片机,涉及多种资源应用,并具有综合应用功能的小应用课程设计,不但使我们能熟练掌握课堂上所学知识,而且还能使我们在设备和软件方面得到较全面的提高和锻炼,也提高了我们运用综合知识解决实际的能力。

课程设计以学生认知为主体,充分调动学生的积极性,重视学生自学能力的培养,根据具体课题安排时间确定课题的设计、编程和调试内容,分团队开展课程设计活动,按时完成每部分工作。

坚持独立完成,实现课题规定的各项指标,并写出设计报告。

要求学生自己查阅资料和充分利用所学知识,根据所要设计系统所要达到的功能,划分软硬件功能、选择器件、编写相关程序,用Proteus在计算机上绘图并用Keil进行程序边编写进行防真,再对整个系统做调试运行,培养学生在遇到问题时能进行独立、系统、认真的思考,并进一步培养学生在团队中的合作精神,不断调试修改,直至达到设计的要求和取得满意的效果,最后编写系统说明书,其内容包括系统的功能介绍,使用范围,主要性能指标,使用方法,注意事项等。

2、设计的要求

(1)总体要求

本次课程设计主要以软件仿真为主,在为期两周的工程实践中,将占据主要时间,要求完成的任务主要包括以下几点:

1)独立完成设计任务;

2)绘制系统硬件总框图;

3)绘制系统原理电路图;

4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;

5)制定编写调试方案,编写课程设计任务书;

6)写出设计工作小结。

(2)具体要求

该课程设计要求基于AT89C51设计一个4位的LED数码管作为“4通道的秒表定时器”。

1)设计使显示时间为0~99秒;

2)当各通道定时时间到时,点亮对应的LED灯;

3)设计一个具有4个按键的键盘:

K1:

“设置”/“定时启动”;

K2:

“通道”/“定时设置”;

K3:

“加一”;

K4:

“减一”;

4)@设计每到一秒钟有声音或LED提示提醒功能,可通过按钮打开及关闭该提醒功能。

(3)设计提示

1)用6为7段LED数码管作为显示设备,最高为显示通道号,低2位显示时间。

2)可采用定时器,定时时间100ms。

3)参考Protuse仿真效果图。

 

二、设计的步骤和思路

1、设计的步骤

(1)制定相应的设计方案;

(2)硬件的初步设计;

(3)选择设计所用元器件和参数;

(4)在Proteus7.5中设计和连接电路图;

(5)软件的初步设计;

(6)编写程序实现其功能;

(7)在keil_v4中进行调试运行;

(8)硬件和软件联合调试。

2、设计的思路

为使数码管同时显示通道号和定时值(0~99秒),选用4位7段LED数码管,当定时时间到时点亮对应的LED灯,课程中我们选用LED-BLUE灯,并设计有四位按键的键盘,分别为K1、K2、K3、K4来控制定时启动/停止、通道号和定时时间的切换设置、通道号/定时时间加一、通道号/定时时间减一。

通过这四个按键来控制整个电路的运行、LED灯的点亮和数码管的显示。

具体控制如下:

(1)通道号为1~4,对应LED灯为LED1~LED4,执行程序前可任意选择通道号;定时值可在0~99S内任意设置;

(2)当程序运行初始化化后,如果K2按下,则切换至通道号的设置,通过K3、K4来增加或减小通道号;当选择好通道号后如果按下K2则切换至定时值的设置,通过K3、K4来增加或减小定时值;当定时值设置好之后按下K1则程序执行所选通道的秒表定时;当定时时间到时,对应通道的LED灯点亮;

(3)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K3、K4来增加或减小定时值;当设置好之后按下K1后直接执行一通道的秒表定时;当定时时间到时,对应通道的LED灯点亮;

(4)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K3、K4来增加或减小定时值;当设置好之后按下K2则切换至通道号的设置,通过K3、K4来增加或减小通道号;当设置好后按下K1则执行对应通道的定时;当定时时间到时,对应通道的LED灯点亮;

(5)当程序运行初始化后直接按下K3、K4进行定时时间的设置,通过K3、K4来增加或减小定时值;当设置好之后按下K2则切换至通道号的设置,通过K3、K4来增加或减小通道号;当设置好后按下按下K2则又切换至定时时间的设置,通过K3、K4来增加或减小定时值;依次可不断循环通道号和定时时间的切换设置,直至达到自己所想要的定时时间,此时按下K1则执行对应通道的秒表定时,当定时时间到时点亮对应的LED灯。

 

三、硬件的设计

硬件电路设计框图如下图所示,主要由:

4个按键的键盘、单片机、数码管、4个LED灯。

根据硬件系统电路设计框图,对各部分模块的原理进行分析,编写个子模块程序,最终将其组合。

1、信号输入电路

独立式按键就是各按键相互独立,每个按键各接入一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。

因此,通过检测输入线的电平状态可以很容易判断哪个按键按下了。

独立式按键电路配置灵活,软件简单。

但每个按键需要占用一个输入口线,在按键数量较多时,需要较多的输入口线且电路结构复杂,故此种键盘适用于按键较少或操作速度较高的场合。

消除键抖动。

一般按键在按下的时候有抖动的问题,即键的簧片在按下时会有轻微的弹跳,需经过一个短暂的时间才会可靠地接触。

若在簧片抖动时进行扫描就可能得出不正确的结果。

因此,在程序中要考虑防抖动的问题。

最简单的办法是在检测到有键按下时,等待(延迟)一段时间再进行“行扫描”,延迟时间为10~20ms。

这可通过调用子程序来解决,当系统中有显示子程序时,调用几次显示子程序也能同时达到消除抖动的目的。

2、数码管的驱动模块的电路

3、LED灯的驱动模块电路

 

四、软件设计

1、单片机选择

AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(ROM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。

功能强大AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。

此设计中就采用AT89C51。

2、系统软件设计分析

模块的划分:

(1)键盘的设置、启动、停止、加一、减一;

(2)数码管显示通道号和定时时间;

(3)定时时间到后对应通道号的LED灯点亮。

程序流程图如下:

3、主要功能实现的程序

(1)通道号的设置

ucharset_thax()//设置通道函数

{

key_set();

if(set_2==2)

{

delay(10);

if(k3==0)//K3加1

{

delay(30);

if(k3==0)

{

delay(300);

sec++;

if(sec==5)

{sec=1;}

}

}

if(k4==0)//K4减1

{

delay(30);

if(k4==0)

{

delay(300);

sec--;

if(sec==0)

{sec=4;}

}

}

}

a=sec;

returna;

}

(2)定时值的设置

voidset_time()//设置时间函数

{

key_set();

if(set_2==1)

{

delay(10);

if(k3==0)//K3加1

{

delay(30);

if(k3==0)

{

delay(300);

minu++;

if(minu==100)

{minu=1;}

}

}

if(k4==0)//K4减1

{

delay(30);

if(k4==0)

{

delay(300);

minu--;

if(minu==-1)

{

minu=99;

}

}

}

}

}

 

五、调试说明

仿真结果和分析:

1、未启动仿真时,初始状态:

2、开始启动仿真后:

 

3、通过按下K2切换至一、二、三、四通道和定时值的设置:

 

4、定时时间到后对应通道号LED灯点亮:

 

六心得体会

在两个周的学习工作中,通过查阅相关资料了解了直流调速系统,加深了对直流电机调速控制系统的认识,熟悉了单片机在控制系统中的运用。

并且在所学知识的基础上,利用已有的直流调速系统设计,尝试了自己的一些研究。

并且使我将以前所学的知识系统化,理论化,实用化。

对如何使用已有知识及获取相关资料方面的能力又有了提高。

根据课题要求,利用所学的相关知识,查询相关的资料。

根据课程条件,找到适合的方案,找到需要的元器件。

根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。

然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。

除编写实现设计要求外的程序,还要根据课程设计的实际情况,添加些额外程序来使系统更加的稳定,如开关的去抖(采用延迟)。

程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。

该课程设计的程序可以参考MCS-51系列单片机,也可自己根据自己熟悉的方法来编程如单片机C语言或汇编语言。

在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。

这次的单片机课程设计重点是理论与实际的相结合。

该设计从头到尾都要自己参与,熟悉了整个设计的过程,更充分的锻炼了自己。

在此要感谢我的指导老师,感谢老师给我这样的机会锻炼。

在整个设计过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。

而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。

虽然这个设计还不是很完善,但是在设计过程中所学到的东西是这次设计的最大收获和财富,使我终身受益。

 

七、致谢

为期两个周的课程设计也接近了尾声。

此次课程设计的完成离不开老师和同学对我的帮助,使我对单片机的工作原理和使用更近了一步。

首先要感谢我敬爱的指导教师。

他们在学术上的精心指导和严格要求,在系统研究和调试过程中给予的及时帮助。

这些使我组的课程设计得以顺利完成,并激励着我们在今后的人生道路上不断开拓进取,勇往直前。

在此,我们再一次对诸位老师的培养和关怀表示诚挚的谢意!

同时我们也非常感谢所有教导过我的老师们,他们不但在课程设计中指导我们学习和生活,而且在完成论文期间给我许多帮助和建议,他们兢兢业业、对工作认真负责的态度为我们做出了好的表率,时刻鞭策着我们向他们学习。

非常感谢我的同学们,在与他们共同的学习、工作、生活过程中,他们给予了我及时的帮助和建议,开拓了我的思路。

这使我在学习和生活中受益匪浅。

最后,向所有帮助过我的老师和同学致以最诚挚的谢意。

 

八、参考文献

[1]陈伯石.电力拖动自动控制系统[M].北京:

机械工业出版社,2003.

[2]钟富昭.8051单片机典型模块设计与应用[M].北京:

人民邮电出版社,2007

[3]张靖武.单片机系统的PROTEUS设计与仿真[M].北京:

电子工业出版社,2007

[4]杨恢先.单片机原理及应用[M].北京:

人民邮电出版社,2006

[5]孟庆涛.图解电子控制电路[M].北京:

人民邮电出版社,2006

[6]谢维成.单片机原理与应用及C51程序设计[M].北京:

清华大学出版社,2006

[7]周润景.基于PROTEUS的电路及单片机系统设计与仿真[M].北京:

北京航空航天出版社,2006

[8]李光飞.单片机课程设计实例指导[M].北京:

北京航空航天出版社,2004

[9]杜坤梅.电机控制技术[M].哈尔滨:

哈尔滨工业大学出版社,2002

[10]李广第.单片机基础(修订版)[M].北京:

北京航空航天大学出版社,2001

[11]陈光东.单片微型计算机原理与接口技术(第二版)[M].武昌:

华中科技大学出版社,1999

[12]何耀三.电气传动的微机控制[M].重庆:

重庆大学出版社,1997

[13]薛钧义.MCS-51/96系列单片微型计算机及其应用[M].西安:

西安交通大学出版社,1997

 

九、附录

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitQB1=P2^0;//选择数码管

sbitQB2=P2^1;

sbitQB3=P2^2;

sbitQB4=P2^3;

sbitk1=P1^0;//k1按键,

sbitk2=P1^1;//k2按键,

sbitk3=P1^2;//k3按键,加1

sbitk4=P1^3;//k4按键,减1

sbitled4=P3^0;//LED灯

sbitled3=P3^1;

sbitled2=P3^2;

sbitled1=P3^3;

sbitwhat=P0;

ucharsec=1,minu,mstcnt;//定义初始量

ucharset_2=1,set_1=1;

ucharmis,mig,ss,sg;

ucharcodetable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴显示

ucharcodetabl[]={0x3F,0x06,0x5B,0x4F,0x66};

inta;

 

voiddelay(uint);//延时函数

voidkey_change();//扫描K1

voidkey_set();//扫描K2

voiddisp(uchar,uchar,uchar,uchar);//显示函数

voidset_time();//设置时间函数

ucharset_thax();//设置通道函数

voidtimer0();

voidhaap();

voidmain()//主函数

{

EA=1;//系统允许有开放的中断

ET0=1;//允许T0中断

TR0=1;//开启中断,启动定时器

TMOD=0x01;

TH0=0x00;

TL0=0x01;

while

(1)

{

sg=sec%10;//通道个位

mis=minu/10;//显示时间十位

mig=minu%10;

key_set();//扫描K2

key_change();//扫描K1

if(set_1==1)//设置显示条件

{haap();}

if(k1==1&&k2==1)//正常显示

{

delay(10);

if(k1==1&&k2==1)

{sg=sec;

disp(sg,mis,mig,ss);

}

}

key_change();

if(set_1==2)//启动条件

{

timer0();

}

key_change();

if(set_1==3)

{minu=0;}

}

}

voidhaap()//设置显示函数

{

if(set_1==1)

{

delay(10);

key_set();

if(set_2==1)

{

delay(10);

set_time();

}

key_set();

if(set_2==2)

{

delay(10);

set_thax();

}

}

}

voidtimer0()interrupt1using0//启动函数

{

TH0=0x01;

TMOD=0x01;

if(set_1==2)

{

delay(10);

mstcnt++;

if(mstcnt==20)

{

mstcnt=0;

if(minu==0)

{

minu=0;

set_thax();

if(a==1)

{

led1=0;

led2=1;

led3=1;

led4=1;

}

else

{

if(a==2)

{

led1=1;

led2=0;

led3=1;

led4=1;

}

else

{

if(a==3)

{

led1=1;

led2=1;

led3=0;

led4=1;

}

else

if(a==4)

{

led1=1;

led2=1;

led3=1;

led4=0;

}

}

}

}

else

{

minu--;

}

}

if(minu==0)

{

minu=0;

}

}

}

 

voidkey_change()//k1按键扫描

{

if(k1==0)

{

delay(20);

if(k1==0)

{

set_1++;

while(k1!

=1);

if(set_1==4)

{set_1=1;}

}

}

}

 

voidkey_set()//k2按键扫描

{

if(k2==0)

{

delay(20);

if(k2==0)

{

set_2++;

while(k2!

=1);

if(set_2==3)

{set_2=1;}

}

}

}

voiddisp(ucharsg,ucharmis,ucharmig,ucharss)//显示函数

{

QB1=0;

QB2=1;

QB3=1;

QB4=1;

P0=table[sg];//第1个数码管显示通道

delay(10);//延时一小会

QB1=1;

QB2=1;

QB3=0;

QB4=1;

P0=table[mis];//第3个数码管显示十位

delay(10);

QB1=1;

QB2=1;

QB3=1;

QB4=0;

P0=table[mig];//第4个数码管显示个位

delay(10);

QB1=1;

QB2=1;

QB3=1;

QB4=1;

P0=table[ss];//第2个数码管不显示

delay(10);

}

voidset_time()//设置时间函数

{

key_set();

if(set_2==1)

{

delay(10);

if(k3==0)//K3加1

{

delay(30);

if(k3==0)

{

delay(300);

minu++;

if(minu==100)

{minu=1;}

}

}

if(k4==0)//K4减1

{

delay(30);

if(k4==0)

{

delay(300);

minu--;

if(minu==-1)

{

minu=99;

}

}

}

}

}

ucharset_thax()//设置通道函数

{

key_set();

if(set_2==2)

{

delay(10);

if(k3==0)//K3加1

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

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

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

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