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

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

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

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

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

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

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

课程设计报告

 

 

姓名

学号

院系自动控制与机械工程学院

班级2011级

指导教师

 

2013年7月

 

目录

一、课程设计目的和要求

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

2、课程设计要求……………………………………………………………………3

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

1、总体要求…………………………………………………………………………3

2、设计的步骤…………………………………………………………………………4

3、设计的思路………………………………………………………………………4

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

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

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

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

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

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

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

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

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

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

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

六、报告总结…………………………………………………………………………12

七、参考文献…………………………………………………………………………12

八、附录………………………………………………………………………………12

 

一、课程设计目的和要求

1、设计的目的

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

单片机课程设计过程中,我们通过查阅资料,接口设计、程序设计、安装调试等环节,完成一个基于MCS-51系列单片机,涉及多种资源应用,并具有综合应用功能的小应用课程设计,不但使我们能熟练掌握课堂上所学知识,而且还能够对电子电路、电子元件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。

使学生增进对单片机的感性认识,加深对单片机理论方面的理解,加深单片机内部功能模块的应用,如定时器/计数器、中断、片内外存储器、I/O接口、串行口等。

使学生了解和掌握单片机应用系统的软硬件设计过程、方法及实现,强化单片机应用电路的设计与分析能力。

提高学生在单片机应用方面的实践技能和科学作风,培育学生综合应用知识理解问题的能力。

2.课程设计要求

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

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

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

二、设计的步骤和思路

1、总体要求

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

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

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

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

K1:

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

K2:

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

K3:

“加一”;

K4:

“减一”;

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

(5)设计提示

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

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

3)参考ProteusPro仿真效果图:

2、设计的步骤

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

(2)硬件的初步设计;

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

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

(5)软件的初步设计;

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

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

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

3、设计的思路

为使数码管同时显示通道号和定时值(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、AT89C51简介

AT89C51作为秒表计时系统的核心器件。

该器件是INTEL公司生产的MCS-51系列单片机的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51的CMOS产品。

不仅结合了HMOS的高速和高密度技术及HMOS的低功耗特征,而且继承和扩展了MCS-48单片机的体系结构和指令系统。

单片机小系统的电路图如图所示:

图1.3AT89C51

单片机AT89C51的主要特征:

与MCS-51兼容,4K字节可编程闪烁存储

灵活的在线系统编程,掉电标识和快速编程特性;

寿命为1000次写/擦周期,数据保留时间可10年以上;

全静态工作模式:

0HZ33HZ;

三级程序存储器锁定;

128×8位内部RAM,32位可编I/O线;

两个16位定时器/计数器,5个中断源,4个8位并行的I/O接口,1个全双工I/O接口。

2、信号输入电路

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

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

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

消除键抖动。

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

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

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

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

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

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

4、LED灯的驱动模块电路

每当计时到时,对应的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切换至一、二、三、四通道和定时值的设置,定时时间到后对应通道号LED灯点亮:

六报告总结

在将近一周的学习工作中,我们进行了keil和proteus的学习,并且熟练的用这两个软件进行了这次的课程设计,在这期间,我从开始的一无所知到基本清楚,从不熟练到熟练,通过查阅资料、问老师、问同学,最终完成了这次的课程设计。

通过这次单片机课程设计,我不仅加深了对单片机理论的理解,而且我还学会了如何去培养我们的创新精神,独立自主的去完成一个设计。

这次设计也让我深深的感到仅在课堂上的学到的知识是远远不够的,课下我们应该多到图书馆或网上多了解一下其它的东西,同时更应该加强我们的动手能力的训练,因为学习就是为了将知识应用到生活中,造福人类。

同时,更重要的是,在这一次设计中,我学会了坚持不懈,不轻易言弃。

在设计过程中我也遇到国很多的问题,比如图形看上去大体对了,但是运行起来还是出错了,最为要命的是编写程序,首先要搞清楚是做一件什么事情,然后是基本结构,最后才是细心编写,其中编写程序的时候,只要有一小点不小心,整个过程就不能实现。

所以这次课程设计不仅仅然我增长巩固了知识,还很好的培养了我的细心与耐心的性格,同时还更清楚的认识了解和应用了MCS-51单片机。

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

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

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

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

七、参考文献

(1)《单片机原理与接口技术》吴亦峰陈德为冯维杰曹双贵许艳编造出版社电子工业出版社

(2)《MCS-51单片机原理及应用实例》南建辉熊鸣王军茹编著出版社北京清华大学出版社版次2004年3月第1版2006年2月第3版次印刷

八、附录

#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

{

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;

}

voiddelay(uintk)//延时函数

{

uinti,j;

for(i=k;i>0;i--)

for(j=80;j>0;j--);

}

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

当前位置:首页 > 医药卫生 > 基础医学

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

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