《单片机原理及接口技术》课程设计报告——多通道秒表定时器(DOC)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“电子秒表课程设计报告”。
《单片机原理及接口技术》
课程设计报告
课程设计名称:多通道秒表定时计数器设计
院 系:自动控制与机械工程学院
专业:电气工程及其自动化
班级:2012级电气二班
姓名:黄瑞
学号:201204170209
时间:2014年6月
目录
一、课程设计目的和要求.....................................................................................................31、设计的目的.................................................................................................................32、设计的要求.................................................................................................................3
(1)总体要求.........................................................................................................3(2)具体要求.........................................................................................................4(3)设计提示.........................................................................................................4
二、设计的步骤和思路.........................................................................................................51、设计的步骤.................................................................................................................52、设计的思路.................................................................................................................5
三、硬件的设计.......................................................................................................................61、信号输入电路.............................................................................................................72、数码管的驱动模块的电路.........................................................................................73、LED灯的驱动模块电路............................................................................................8
四、软件设计...........................................................................................................................81、单片机选择.................................................................................................................82、系统软件设计分析.....................................................................................................93、主要功能实现的程序...............................................................................................10(1)通道号的设置...............................................................................................10(2)定时值的设置...............................................................................................11
五、调试说明.........................................................................................................................121、未启动仿真时,初始状态:...................................................................................132、开始启动仿真后:...................................................................................................133、通过按下K2切换至一、二、三、四通道和定时值的设置:............................144、定时时间到后对应通道号LED灯点亮:.............................................................15 六
心得体会.........................................................................................................................16
七、致谢.................................................................................................................................17 八、参考文献.......................................................................................................................17
九、附录.................................................................................................................................18
一、课程设计目的和要求
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 Protuse仿真效果图
二、设计的步骤和思路
1、设计的步骤
(1)制定相应的设计方案;
(2)硬件的初步设计;
(3)选择设计所用元器件和参数;(4)在Proteus 7.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个按键的键盘、AT89C51单片机、数码管、4个LED灯。
根据硬件系统电路设计框图,对各部分模块的原理进行分析,编写个子模块程序,最终将其组合。
图3-1硬件电路设计框图
1、信号输入电路
独立式按键就是各按键相互独立,每个按键各接入一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键按下了。独立式按键电路配置灵活,软件简单。但每个按键需要占用一个输入口线,在按键数量较多时,需要较多的输入口线且电路结构复杂,故此种键盘适用于按键较少或操作速度较高的场合。
图3-2键控电路
消除键抖动。一般按键在按下的时候有抖动的问题,即键的簧片在按下时会有轻微的弹跳,需经过一个短暂的时间才会可靠地接触。若在簧片抖动时进行扫描就可能得出不正确的结果。因此,在程序中要考虑防抖动的问题。最简单的办法是在检测到有键按下时,等待(延迟)一段时间再进行“行扫描”,延迟时间为10~20ms。这可通过调用子程序来解决,当系统中有显示子程序时,调用几次显示子程序也能同时达到消除抖动的目的。
2、数码管的驱动模块的电路
图3-3数码管驱动模块电路
3、LED灯的驱动模块电路
图
3-4LED灯的驱动电路
四、软件设计
1、单片机选择
AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(ROM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。
功能强大AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。此设计中就采用AT89C51。单片机小系统的电路图如图所示:
图4-1信号输入电路
单片机AT89C51的主要特征:
①与 MCS-51 兼容,4K 字节可编程闪烁存储 ②灵活的在线系统编程,掉电标识和快速编程特性; ③寿命为 1000 次写/擦周期,数据保留时间可 10 年以上; ④全静态工作模式:0HZ33HZ; ⑤三级程序存储器锁定;
⑥128×8 位内部 RAM,32 位可编 I/O 线;
⑦两个 16 位定时器/计数器,5 个中断源,4 个 8 位并行的 I/O 接口,个全双工 I/O 接口。
2、系统软件设计分析
模块的划分:
(1)键盘的设置、启动、停止、加
一、减一;(2)数码管显示通道号和定时时间;
(3)定时时间到后对应通道号的LED灯点亮。程序流程图如下:
开始 初始化 Y扫描K2键按N Y扫描K2键按下? 通道号设定下? N 通道号加一 Y扫描K3键按扫描K3键按Y下?下? 定时时间加一 N N 通道号减一 Y扫描K4键按扫描K4键按Y下?下? 定时时间减一 N N扫描K1键按N下? Y数码管计时 定时时间N到? Y通道号对应的LED灯点亮 结束
图4-1程序流程图
3、主要功能实现的程序
1)通道号的设置
uchar set_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;
return a;}
2)定时值的设置
void set_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;}
}
}
(11
if(k4==0)
//K4减1
{
delay(30);
if(k4==0)
{
delay(300);
minu--;
if(minu==-1)
{
}
}
}
} }
五、调试说明
仿真结果和分析:
minu=99;121、未启动仿真时,初始状态:
图5-1未启动仿真时,初始状态
2、开始启动仿真后:
图5-2开始启动仿真后
3、通过按下K2切换至一、二、三、四通道和定时值的设置:
图5-3通过按下K2切换至一、二、三、四通道和定时值的设置
4、定时时间到后对应通道号LED灯点亮:
图5-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].北京:电子工业出版社
九、附录
#include #define uint unsigned int #define uchar unsigned char
sbit QB1=P2^0;sbit QB2=P2^1;sbit QB3=P2^2;sbit QB4=P2^3;sbit k1=P1^0;//k1按键, sbit k2=P1^1;//k2按键, sbit k3=P1^2;//k3按键,加1 sbit k4=P1^3;//k4按键,减1 sbit led4=P3^0;//LED灯 sbit led3=P3^1;sbit led2=P3^2;sbit led1=P3^3;sbit what=P0;uchar sec=1,minu,mstcnt;// 定义初始量 uchar set_2=1,set_1=1;uchar mis,mig,sg;uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴显示
uchar code tabl[]={0x3F,0x06,0x5B,0x4F,0x66};int a;
void delay(uint);//延时函数 void key_change();// 扫描K1 void key_set();//
扫描K2 void disp(uchar,uchar,uchar,uchar);//显示函数 void set_time();//设置时间函数 uchar set_thax();//设置通道函数 void timer0();void haap();
void main()//主函数 { 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,);} } key_change();
if(set_1 ==2)//启动条件
{
timer0();
} key_change();if(set_1==3){minu=0;} } }
void haap()
//设置显示函数{ 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();
} } }
void timer0()interrupt 1 using 0 //启动函数{
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)
}
}
}
else
{
minu--;
} } if(minu==0){ minu=0;
} } }
void key_change()//k1按键扫描 { if(k1==0){ delay(20);
{ led1=1;led2=1;led3=0;led4=1;
} else
if(a==4)
{
led1=1;
led2=1;
led3=1;
led4=0;
}
if(k1==0){ set_1++;while(k1!=1);if(set_1==4){set_1=1;} } } }
void key_set()//k2按键扫描 { if(k2==0){ delay(20);if(k2==0){ set_2++;while(k2!=1);if(set_2==3){set_2=1;} } } } void disp(uchar sg,uchar mis,uchar mig,uchar)//显示函数{ 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[];//第2个数码管不显示 delay(10);}
void set_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;
}
} } } }
uchar set_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;return a;}
void delay(uint k)//延时函数 { uint i,j;for(i=k;i>0;i--)for(j=80;j>0;j--);}
长 沙学院课程设计指导书(部)业级单片机原理及接口技术机电工程系机械设计制造及其自动化年月日 课程设计名称系专班课程名称:《单片机原理及接口技术》课程设计课程编号:JX010......
《单片机原理与接口技术》课程设计教学大纲课程编号:课程英文名称:Course Design of Micro-controller Principle and Interface Technology 学时数:18学分数:1 使用层次和专业......
青岛理工大学琴岛学院课程设计报告课题名称:单片机原理课程设计 学院:机电工程系专业班级:电气工程及其自动化103班 学号:201002学生:指导老师:青岛理工大学琴岛学院教务处2012年......
单片机课程设计报告题目:基于stc89c52rc的秒表设计学生:唐伟轩 11071339指导老师:日期:2013年12月8日基于stc89c52rc的秒表设计此设计中硬件部分由王华杲完成,软件由唐伟轩完成一......
《单片机原理与接口技术》教案班级:05电子(1)(2)日期:2007.3.8课题:单片机硬件系统 教学目的:使学生理解单片机的结构、硬件原理和工作特性等基础知识 重点难点:单片机硬件组成和数据......