答辩倒计时器单片机课程设计.docx

上传人:b****0 文档编号:9336251 上传时间:2023-05-18 格式:DOCX 页数:20 大小:887.43KB
下载 相关 举报
答辩倒计时器单片机课程设计.docx_第1页
第1页 / 共20页
答辩倒计时器单片机课程设计.docx_第2页
第2页 / 共20页
答辩倒计时器单片机课程设计.docx_第3页
第3页 / 共20页
答辩倒计时器单片机课程设计.docx_第4页
第4页 / 共20页
答辩倒计时器单片机课程设计.docx_第5页
第5页 / 共20页
答辩倒计时器单片机课程设计.docx_第6页
第6页 / 共20页
答辩倒计时器单片机课程设计.docx_第7页
第7页 / 共20页
答辩倒计时器单片机课程设计.docx_第8页
第8页 / 共20页
答辩倒计时器单片机课程设计.docx_第9页
第9页 / 共20页
答辩倒计时器单片机课程设计.docx_第10页
第10页 / 共20页
答辩倒计时器单片机课程设计.docx_第11页
第11页 / 共20页
答辩倒计时器单片机课程设计.docx_第12页
第12页 / 共20页
答辩倒计时器单片机课程设计.docx_第13页
第13页 / 共20页
答辩倒计时器单片机课程设计.docx_第14页
第14页 / 共20页
答辩倒计时器单片机课程设计.docx_第15页
第15页 / 共20页
答辩倒计时器单片机课程设计.docx_第16页
第16页 / 共20页
答辩倒计时器单片机课程设计.docx_第17页
第17页 / 共20页
答辩倒计时器单片机课程设计.docx_第18页
第18页 / 共20页
答辩倒计时器单片机课程设计.docx_第19页
第19页 / 共20页
答辩倒计时器单片机课程设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

答辩倒计时器单片机课程设计.docx

《答辩倒计时器单片机课程设计.docx》由会员分享,可在线阅读,更多相关《答辩倒计时器单片机课程设计.docx(20页珍藏版)》请在冰点文库上搜索。

答辩倒计时器单片机课程设计.docx

答辩倒计时器单片机课程设计

课程设计任务书

一、设计题目

答辩倒计时器

二、设计要求

设计一个答辩倒计时器,用2位数码管显示剩余分钟,2位数码管显示剩余秒,复位后显示10.00表示设定10分钟,并可加减修改,按开始/取消按钮开始倒计时,再次按开始/取消按钮则复位,时间到则蜂鸣音提示。

总体要求如下:

1、方案论证,确定总体电路原理图。

2、元器件选择,设计PCB图(或用万能电路实验板搭线)。

3、绘制程序流程图,编写汇编语言源程序(或C语言源程序)。

4、安装调试,实现倒计时器的基本功能。

三、设计报告内容

1、写出设计方案(包括方案对比,方案确定),给出完整的电路原理图和设计程序流程图。

2、对所设计方案的实现进行全面分析。

3、编程调试方法和程序清单。

4、安装调试过程,出现的各种现象,总结经验和体会。

5、进一步完善的设想。

 

一、设计题目

答辩倒计时器

二、设计目的

1、巩固和加深单片机原理课程知识的理解和运用。

2、进一步提高学生单片机应用系统的设计能力。

3、培养学生综合分析问题、发现问题和解决问题的能力。

三、设计要求

设计一个答辩倒计时器,用2位数码管显示剩余分钟,2位数码管显示剩余秒,复位后显示10.00表示设定10分钟,并可加减修改,按开始/取消按钮开始倒计时,再次按开始/取消按钮则复位,时间到则蜂鸣音提示。

总体要求如下:

1、方案论证,确定总体电路原理图。

2、元器件选择,设计PCB图(或用万能电路实验板搭线)。

3、绘制程序流程图,编写汇编语言源程序(或C语言源程序)。

4、安装调试,实现倒计时器的基本功能。

四、电路总原理图

根据设计要求,确定总体电路原理图,如下图1。

图1电路总原理图

五、元器件清单

元器件名称

规格/型号

单组数量

单片机

AT89S51DIP40

1块

集成电路

7407DIP14

1块

电阻

1K1/4W

1个

电阻

10K1/4W

5个

电阻排

200*8

1个

瓷片电容

30p

2个

独石电容

0.1uF/63V

2个

电解电容

10uF/16V

1个

三极管

9013

1个

蜂鸣器

F10直流5V

1个

石英晶振

6MHZ

1个

IC插座

40PINDIP

1个

IC插座

14PINDIP

1个

数码管

4位一体,红光,共阴

1块

接插件

IDC10(与ISP下载线接口)

1套

按键

3个

电路板

15cm*8cm

1块

表1元器件清单

六、设备及工具清单

名称

单组数量

备注

计算机

1台

内有Keil编程软件和ISP下载软件

数字万用表

1台

5V直流稳压电源

1台

ISP下载线

1套

电烙铁

1个

烙铁架

1个

吸锡枪

1把

剪线钳

1把

尖嘴钳

1把

镊子

1把

焊锡丝

1卷

松香

1盒

导线

1卷

0.3mm²单股导线

表2设备及工具清单

七、硬件介绍

1、AT89S51介绍

4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

AT89S51单片机如图2。

关于AT89S51的管脚说明:

VCC:

供电电压。

GND:

接地。

 

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。

 图2AT89S51

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为低八位地址接收。

  

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

  

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

  

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

 

XTAL2:

来自反向振荡器的输出。

  

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

2、LED数码管显示器概述

LED数码显示器是一种有LED发光二极管组合显示字符的显示器件。

它使用了8个LED发光二极管,其中7个用于显示字符,一个用于显示小数点,故通常称之为7段发光二极管数码器。

其内部结构如下图3所示。

LED数码显示器有两种连接方法如下:

图3数码器结构图

共阳极接法:

把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。

共阴极接法:

目的要求。

把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。

每个发光二极管的阳极通过电阻与输入端相连。

3、单片机最小系统

最小系统就是单片机在发挥具体测控功能时所必须的组成部

分。

如下图所示为最小系统方框图。

图4最小系统方框图

4、复位电路

复位电路产生复位信号,复位信号送入RST后还要送至片内的施密特触发器,由片内复位电路在每个机器周器的S5P2时刻对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号。

一般的复位电路可分为上电自动复位和按键复位,我们在此选用的是上电复位。

上电自动复位原理:

RST引脚是复位信号的输入端,只要高电平的复位信号持续两个机器周期以上的有效时间,就可以使单片机上电复位。

上电自动复位是通过电容充电实现的,上电瞬间,RST端

电位与Vcc相同,随充电电流的减少,RST的电位逐渐下降,直到复位信号无效。

按键复位在此不在作过多的介绍,其原理和上电复位是相同的。

但其采用的是脉冲复位电路和电平复位电路两种。

复位电路和单片机最小系统如右图5所示。

图5复位电路和单片机最小系统

 

5、晶振电路

晶振与单片机的脚XTAL0和脚XTAL1构成的振荡电路中会产生偕波(也就是不希望存在的其他频率的波),这个波对电路的影响不大,但会降低电路的时钟振荡器的稳定性。

为了电路的稳定性起见,ATMEL公司只是建议在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减偕波对电路的稳定性的影响,所以晶振所配的电容在10pf-50pf之间都可以的。

但是主流是接入两个33pf的瓷片电容,此次电路用33PF。

如图6所示。

图6晶振电路图

八、电路板的制作安装

根据电路总原理图和对单片机、各种原理电路的认识,以及购买的元器件清单,设备和工具清单,开始对电路板进行制作安装。

安装好的电路板如图7(正面)和图8(反面)。

图7设计电路板(正面)

 

九、程序设计

1、设计程序流程图

根据实验要求,设计程序流程图。

如图9。

图9设计程序流程图

2、设计程序

运用C语言根据程序流程图,一步一步进行编程,实现设计要求。

具体设计C语言程序见附件1。

 

十、软硬件调试

达到题目的实际要求,完成了硬件的设计、制作和软件编程后,要使系统能够按设计意图正常运作,必须进行系统调试。

系统调试包括软件调试和硬件调试。

不过,作为一个小计算机系统,其运行是软硬件相结合的,因此,软硬件的调试也是不可能绝对分开的,硬件的调试常常需要利用调试软件,软件的调试也可能需要对硬件的测试和控制来进行。

1、软件调试:

(1)、软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。

(2)、程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;调试的基本步骤如下,用到了KeilC软件,集成调试环境,集成了编辑器、译码器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。

本系统的程序的编写就是在KeilC软件中完成的,在程序中用到了两个定时器,为了使倒计时的时间准确,必须计算对定时器的初值,当程序完成之后,生成HEX文件。

再利用Proteus软件进行仿真。

经过仿真,程序符合题目的要求。

(3)、运行主程序调试时模块,不按下任何键,检查是否从由10.00开始正确计时,若不能正确计时则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运动而变化。

(4)、调试键盘模块扫描,先用延时10ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键号是否正确,然后恢复用显示子程序延时消抖,检验与显示模块能否正常连接。

(5)运行主程序联调,检查能否用键盘加减答辩倒计时器的分钟,能否开始,取消等。

(6)脱机运行。

软、硬件调试成功之后,可以将程序固化到AT89S51的FLASHROM中,插入AT89S51芯片,接上电源脱机运行。

2硬件调试

(1)、在硬件调试时,先有万用表检查印制电路的焊接情况,检查是否有虚焊,是否有短路。

在检查无误之后通电检查LED数码管的显示

(2)硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。

1、脱机检查。

用万用表逐步按照电路原理图检查印制电路中所有器件的各引脚,尤其是电源的连接是否正确:

检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正常;各限流电阻是否短路等内容。

2、联机调试。

暂时拔掉AT89S51芯片,将仿真器的40仿真插入AT89S51的芯片插座进行调试,检验键盘/显示接口电路是否满足要求设计。

可以通过一些简单的测软件来查看接口工作是否正常。

3、适当调整,装配工艺美观,已达更好效果。

我们组做好的作品运行如下图,设计要求的各种功能都能实现:

图10

图11

 

十一、设计报告总结

经过差不多两个星期的实验,此次课程设计告一段落,虽勉强的完成了实验所需要完成的任务,但途中也遇到了很多问题,就是在这样发现问题与解决问的同时,让我获益匪浅。

实验中让我映像深刻的是,在写代码所遇到的问题,首先根据看看实验要求。

具体就是怎样对51单片机编程,所幸的是之前看过一些资料,编过一些小型的代码,写起程序来也并不是太麻烦,数码管的显示,中断处理,按键消抖操作,函数精准延时等程序的各个模块,相继完成了,然后在进行protues仿真,途中出了一点小插曲,但还算顺利的仿真成功,但实验效果只能大概的了解,并且仿真的效果与现实还是有较大的不同。

然后问题开始焊接电路板,由于动手能力确实比较不给力,焊接花了我很长的时间,板子焊的面目全非,并且燒写程序没有反应,我悲催的一步一步的调试起来,发现芯片引脚接反了,自己真是太粗心大意了,这毛病真心要改…

又花了很长时间才总算调试成功,但与仿真效果确实有很大的区别,一接上电源蜂鸣器马上叫个不停,调了半天也没找到解决办法,想想了决定改改程序,程序改了改,让蜂鸣器一那个控制端口一开始就处于低电平,理论上应该是可以了,但结果接上电源还是不行,我纠结了,观察了好久,让板子运行了几遍发现它又不叫了,我想了想可能是运行不够稳定,于是了我有又改了下程序,让蜂鸣器处于低电平这条指令多写了几遍,果真出现了我想要的结果。

还有按键消抖的问题也是我比较纠结的,我本来全部按键都是用中断控制的。

但在处理消抖问题上,中断消抖对于我来说还是比较复杂的一直没有找到好点的解决方法,我最终放弃了这条思路,于是我用查询的方式来处理按键,这样一来,按键消抖就变得简单了,但在延迟那块我没有用参考时间,我是一步一步自己慢慢调试出来,有时延时长了,手要按很久,延时慢了,又没有所要的效果…自己调试的时间也几乎在参考的附近,更加验证了可靠性。

这次实验让我发现了很多问题,发现了自己知识的盲点,动手能力的不足,但总的来说,正是这样的发现问题与解决问题的同时,让我真正的将单片机这门课程有了真正的理解与提高。

 

参考文献

<<单片机原理及应用>>(第二版)张毅刚编著高等教育出版社

附件1

#include

inta,b,c,d,i,n=0;

unsignedchartable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*段选。

.共阴级数码管0-9*/

/*unsignedchartable[10]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f};

/*段选。

.共阳级数码管0-9*/

unsignedcharselect[4]={0x0e,0x0d,0x0b,0x07};/*位选地址高位到低位*/

sbitfmq=P1^0;

fmg=0;

voiddelay()/*动态显示缓冲时间*/

{intf;

for(f=0;f<20;f++);

}

voiddisplay()/*数码管动态扫描函数*/

{

P2=0x0e;

P0=table[a];

delay();

P2=0x0d;

P0=table[b]+0x80;

delay();

P2=0x0b;

P0=table[c];

delay();

P2=0x07;

P0=table[d];

delay();

}

voiddelay500us()

{

unsignedcharj;

for(j=0;j<57;j++)//500us基准延时程序

{

;

}

}

voiddelaynms(intn)//nms基准延时程序

{

unsignedcharj,i;

for(j=0;j<114;j++)

for(i=0;i

{

display();

}

}

main()

{

a=1;

b=c=d=0;

P0=0x00;

EA=1;

TMOD=0x61;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

TR0=0;

EX0=1;

IT0=1;

EX1=1;

IT1=1;

TH1=0xff;

TL1=0xff;

ET1=1;

TR1=1;

while

(1)

{

fmq=0;

display();

if(a==b&&b==c&&c==d&&d==0)

{

TR0=0;

fmq=1;

delaynms(100000);

fmq=0;

TR0=1;

}

}

}

voidT0_time0()interrupt1/*定时器0中断服务程序*/

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

i++;

if(i==10)

{

i=0;

d--;

}

if(d==-1)

{

d=9;

c--;

}

if(c==-1)

{

c=5;

b--;

if(b==-1)

{

b=9;

a++;

}

if(a>=1&&b||c||d)

{

a=0;

}

}

}

voidint0()interrupt0/*外中断0服务程序*/

{

b++;

if(b==10)

{b=0;a++;}

if(a>=1&&(b||c||d))

{

a=0;

}

}

voidint1()interrupt2/*外中断1服务程序*/

{

b--;

if(b==-1)

{b=9;a++;}

if(a>=1&&(b||c||d))

{

a=0;

}

}

voidtime1()interrupt3/*外中断3服务程序*/

{

n++;

if(n%2==1)

TR0=~TR0;

else

{

a=1;

b=c=d=0;

TR0=~TR0;

}

}

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

当前位置:首页 > 农林牧渔 > 林学

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

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