答辩倒计时器单片机课程设计Word格式文档下载.docx
- 文档编号:18669513
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:17
- 大小:887.48KB
答辩倒计时器单片机课程设计Word格式文档下载.docx
《答辩倒计时器单片机课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《答辩倒计时器单片机课程设计Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
1个
10K1/4W
5个
电阻排
200*8
瓷片电容
30p
2个
独石电容
0.1uF/63V
电解电容
10uF/16V
三极管
9013
蜂鸣器
F10直流5V
石英晶振
6MHZ
IC插座
40PINDIP
14PINDIP
数码管
4位一体,红光,共阴
接插件
IDC10(与ISP下载线接口)
1套
按键
3个
电路板
15cm*8cm
表1元器件清单
六、设备及工具清单
名称
备注
计算机
1台
内有Keil编程软件和ISP下载软件
数字万用表
5V直流稳压电源
ISP下载线
电烙铁
烙铁架
吸锡枪
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<
reg51.h>
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;
P2=0x0b;
P0=table[c];
P2=0x07;
P0=table[d];
}
voiddelay500us()
{
unsignedcharj;
for(j=0;
j<
57;
j++)//500us基准延时程序
{
;
}
}
voiddelaynms(intn)//nms基准延时程序
unsignedcharj,i;
for(j=0;
114;
j++)
for(i=0;
i<
n;
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)
fmq=1;
delaynms(100000);
fmq=0;
TR0=1;
}
}
voidT0_time0()interrupt1/*定时器0中断服务程序*/
TH0=(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>
(b||c||d))
voidint1()interrupt2/*外中断1服务程序*/
b--;
if(b==-1)
{b=9;
a++;
voidtime1()interrupt3/*外中断3服务程序*/
n++;
if(n%2==1)
TR0=~TR0;
else
{
a=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 答辩 计时器 单片机 课程设计