河北工程大学课程设计厨房提醒器.docx

上传人:b****4 文档编号:24535138 上传时间:2023-05-28 格式:DOCX 页数:23 大小:353.27KB
下载 相关 举报
河北工程大学课程设计厨房提醒器.docx_第1页
第1页 / 共23页
河北工程大学课程设计厨房提醒器.docx_第2页
第2页 / 共23页
河北工程大学课程设计厨房提醒器.docx_第3页
第3页 / 共23页
河北工程大学课程设计厨房提醒器.docx_第4页
第4页 / 共23页
河北工程大学课程设计厨房提醒器.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

河北工程大学课程设计厨房提醒器.docx

《河北工程大学课程设计厨房提醒器.docx》由会员分享,可在线阅读,更多相关《河北工程大学课程设计厨房提醒器.docx(23页珍藏版)》请在冰豆网上搜索。

河北工程大学课程设计厨房提醒器.docx

河北工程大学课程设计厨房提醒器

河北工程大学课程设计厨房提醒器

信息与电气工程学院

课程设计说明书

(2010/2011学年第二学期)

 

课程名称:

单片机应用

题目:

数字钟设计

专业班级:

电气08级3班

学生姓名:

李海忠

学号:

080060303

指导教师:

岑毅南等

设计周数:

两周

设计成绩:

2011年7月8日

 

一、课程设计目的........................................................1

二、课程设计正文........................................................2

1.任务要求说明.......................................................2

1.1、主要任务......................................................2

1.2、技术要求......................................................2

1.3、设计思路......................................................2

1.4、所需器件......................................................3

1.5、硬件设计......................................................3

1.5.1.STC90C52AD说明.............................................3

1.5.2.数码管说明.................................................4

1.5.3.74LS245说明................................................5

2.单元模块设计.......................................................5

2.1时间显示模块..................................................5

2.2按键调时模块.................................................6

2.3显示驱动模块.................................................7

3.原理简介...........................................................73.1电路原理图....................................................7

3.2、原理介绍....................................................8

4.参数计算...........................................................8

5.系统软件设计.......................................................8

5.1开发软件KeilC51uVision3简介................................8

5.2单片机程序烧写软件............................................9

5.3参考程序.....................................................10

6、软硬件调试........................................................18

三、课程设计总结........................................................18

四、参考文献............................................................19

附录一、系统原理图

附录二、PCB图

 

1、课程设计目的

1.进一步熟悉和掌握单片机的结构及工作原理。

2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。

4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。

2、课程设计正文

1任务及要求说明

1.1主要任务

用STC90C52AD作为控制单元,实现数字钟的设计。

1)设计键盘输入电路

2)设计显示电路

3)合理分配地址,编写系统程序

4)利用Protel设计硬件电路原理图并进行软硬件联机调试

1.2技术要求

技术要求

1、用P1口控制4只段码管,用2位数码管进行分针时间显示,用2位数码管进行秒针时间显示。

2、可以调整时间,且调整位闪烁提示。

3、设置调节切换键、确认键、加1键和减1键。

1.3设计思路

1、时间的显示:

单片机P0.0—P0.3控制位选,可分别选通四只共阴数码管。

P2.6控制段选,可点亮选通的数码管。

P1.0—P1.6控制段码管,将数据送给74LS245驱动数码管显示时间。

2、时间的调整:

设置4个按钮,分别由P2.0—P2.3控制,其编号分别是1到4。

1为调节切换键,2为加1键,3为减1键,4为确认开始键。

1.4设计所需器材

电阻:

1K(4个)10K(8个)3.3k(4个)300(8个)

按键开关:

4个

瓷石电容:

22pF(2个)

独石电容:

0.22μF(5个)

电解电容:

10μF(3个)1.0μF(2个)47μF(4个)

晶振:

12MHZ(1个)

三极管:

NPN(3个)

共阴极数码管:

4个

底座:

DIP40(1个)DIP16(1个)

万能电路板:

1个

芯片:

STC90C52(1片)MAX232(1片)

发光二极管:

3个

接线端子:

1个

1.5硬件设计

1.5.1.STC90C52AD说明

 

AT89C51的引说明和功能说明如下:

XTAL1:

接外部晶振的一个引脚。

在单片机内部,它是一反相放大器输入端,这个放大器构成了片内振荡器。

它采用外部振荡器时,些引脚应接地。

XTAL2:

接外部晶振的一个引脚。

在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。

当采用外部振荡器时,则此引脚接外部振荡信号的输入。

RST:

STC90C52AD的复位信号输入引脚,高电位工作,当要对芯片又时,只要将此引脚电位提升到高电位,并持续两个机器周期以上的时间,AT89C51便能完成系统复位的各项工作,使得内部特殊功能寄存器的内容均被设成已知状态。

P0口(P0.0~P0.7)是一个8位漏极开路双向输入输出端口,当访问外部数据时,它是地址总线(低8位)和数据总线复用。

外部不扩展而单片应用时,则作一般双向I/O口用。

P0口每一个引脚可以推动8个LSTTL负载。

P2口(P2.0~P2.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),当访问外部程序存储器时,它是高8位地址。

外部不扩展而单片应用时,则作一般双向I/O口用。

每一个引脚可以推动4个LSTL负载。

P1口(P1.0~P1.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),其输出可以推动4个LSTTL负载。

仅供用户作为输入输出用的端口。

P3口(P3.0~P3.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),它还提供特殊功能,包括串行通信、外部中断控制、计时计数控制及外部随机存储器内容的读取或写入控制等功能。

1.5.274LS245说明

74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。

  74LS245还具有双向三态功能,既可以输出,也可以输入数据。

  当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。

  当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)  DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。

  由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。

P0口与74LS245输入端相连,E端接地,保证数据线畅通。

8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。

1.5.3数码管

LED显示器由8段发光二极管组成,排列成8字形状,称为8段LED显示器,器件内部接线图如图所示:

为了显示数字或符号,要为LED显示器提供代码,即字形代码。

七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。

简易计算器用到的数字0~9的共阴极字形代码如下表:

 

显示字符

0

1

2

3

4

5

6

7

8

9

段码

0x7b

0x11

0x67

0x57

0x1d

0x5e

0x7e

0x13

0x7f

0x5f

共阴数码管段码表

 

2.单元模块设计

2.1、时间显示模块

时间显示模块

 

2.2按键调时模块

 

按键调时模块

 

2.3显示驱动模块

 

显示驱动模块

 

3.原理简介

3.1电路原理图

 

电路原理图

 

3.2、原理介绍

(1)初始时,4个数码管显示全为0,并且秒显示数码管最后一位每秒钟加1.此时,单片机内部定时器0计时,每100ms溢出一次,十次中断秒显加一。

单片机P1口不断向245送数据驱动数码管显示。

(2)按下S1时,系统进入调节切换模式,定时器0关闭,计时停止。

按S1一下调分,按S1两下条秒。

S2、S3分别为加数和减数。

S4为确认开始键,按下后系统计时开始。

(3)进入调整时间模式时,数码管闪烁显示提示。

 

4.参数计算

1、定时器初值计算

定时器0设为16位定时器。

外部为6兆的晶体振荡器,故而可知一个机器周期是2微秒。

定时器0高八位和第八位分别装入初值TH0=(65536-50000)/256;TL0=(65536-50000)%256。

每100ms定时器溢出一次,中断十次刚好1s,秒显示加1.

5.系统软件设计

5.1开发软件KeilC51uVision3简介

KeiluVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS-51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持、PLM、汇编和C语言的程序设计,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

KeilC51集成开发环境主要由菜单栏、工具栏、源文件编辑窗口、工程窗口和输出窗口五部分组成。

工具栏为一组快捷工具图标,主要包括基本文件工具栏、建造工具栏和调试工具栏,基本文件工具栏包括新建、打开、拷贝、粘贴等基本操作。

建造工具栏主要包括文件编译、目标文件编译连接、所有目标文件编译连接、目标选项和一个目标选择窗口。

调试工具栏位于最后,主要包括一些仿真调试源程序的基本操作,如单步、复位、全速运行等。

在工具栏下面,默认有三个窗口。

左边的工程窗口包含一个工程的目标(target)、组(group)和项目文件。

右边为源文件编辑窗口,编辑窗口实质上就是一个文件编辑器,我们可在这里对源文件进行编辑、修改、粘贴等。

下边的为输出窗口,源文件编译之后的结果显示在输出窗口中,会出现通过或错误(包括错误类型及行号)的提示。

如果通过则会生成“HEX”格式的目标文件,用于仿真或烧录芯片。

基本环境如图2-1所示:

MCS-51单片机软件KeilC51开发过程为:

①建立一个工程项目,选择芯片,确定选项。

②建立汇编源文件或C源文件。

③用项目管理器生成各种应用文件。

④检查并修改源文件中的错误。

⑤编译连接通过后进行软件模拟仿真或硬件在线仿真。

KeilC51软件的运行界面

5.2单片机程序烧写软件

STC90C52AD系列单片机大部分具有在系统可编程特性,单片机在用户系统上即可在线

烧录用户程序,而无需将单片机从已经生产好的产品上拆下,在用通用编程器进行烧写程序。

大部分STC90C50AD系列单片机在销售给用户之前已经在单片机系统内部固化了ISP系统引导程序配合PC端得控制程序即可将用户的程序代码下载进单片机内部,故无需编程器烧写程序。

5.3参考程序

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitS1=P2^0;

sbitS2=P2^1;

sbitS3=P2^2;

sbitS4=P2^3;

sbitDULA=P2^6;

voiddelay(uintt);

voiddisplay(uintk,m,n,p,q);

voidfenjia();

voidmiaojia();

voidfenjian();

voidmiaojian();

voidtiaozheng();

voidtiaobiao();

voidinit_t0();

uintNUM;

uintSEC;

uintflag1=0;

uinti=0;

ucharcodeseg_table1[]={0x7b,0x11,0x67,0x57,0x1d,0x5e,0x7e,0x13,0x7f,0x5f};

voidmain()

{

NUM=0;

SEC=0;

init_t0();

while

(1)

{

while(!

flag1)

{

display(SEC,0x01,0X02,0X04,0X08);

if(S4==0)

{

delay(30);

if(S4==0)

flag1=1;

}

if(S1==0)

{

delay(30);

if(S1==0)

TR0=1;

}

}

if(flag1)

{

while(flag1)

{

tiaobiao();

}

}

}

}

voiddelay(uintt)

{

uintx,y;

for(x=t;x>0;x--)

{

for(y=120;y>0;y--)

{

}

}

}

voiddisplay(uintk,m,n,p,q)//秒显示最低位0x01,第二位0x02,第三位0x04,第四位0x08

{

ucharmiao,shimiao,fen,shifen;

shifen=k/600;

fen=k%600/60;

shimiao=k%60/10;

miao=k%10;

P0=m;//把最低为数码管选中

DULA=1;

P1=seg_table1[miao];

DULA=0;

delay

(1);

P0=n;//选中第二个数码管

DULA=1;

P1=seg_table1[shimiao];

DULA=0;

delay

(1);

P0=p;//选中第三个数码管

DULA=1;

P1=seg_table1[fen];

DULA=0;

delay

(1);

P0=q;//选中第四个数码管

DULA=1;

P1=seg_table1[shifen];

DULA=0;

delay

(1);

}

voidinit_t0()

{

TMOD=0x01;//00000001T0设为16为定时器

TH0=(65536-50000)/256;//100ms溢出

TL0=(65536-50000)%256;

EA=1;//开总中断

ET0=1;

TR0=1;

}

voidt0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

NUM++;//每100ms加1

if(NUM==10)

{

NUM=0;

SEC++;

if(SEC==3600)

{

SEC=0;

}

}

}

/******************************************************************************

调时函数

******************************************************************************/

voidfenjia()

{

if((S3==0)&&(SEC/600<=5)&&(SEC%600/60<=9))

SEC=SEC+60;

if(SEC/600==6)

SEC=0;

}

voidmiaojia()

{

if((S3==0)&&(SEC%60/10<=5)&&(SEC%10<=9))

SEC++;

if(SEC%60/10==6)

SEC=0;

}

voidfenjian()

{

if((S2==0)&&(SEC%600/60>0)|(SEC/600>0))

SEC=SEC-60;

}

voidmiaojian()

{

if((S2==0)&&(SEC%10>0)|(SEC%60/10>0))

SEC--;

}

/******************************************************************************

按键调时

******************************************************************************/

voidtiaozheng()

{

if(S4==0)

{

if(i<=4)

i++;

if(i==4)

i=0;

while(!

S4);

}

}

voidtiaobiao()

{

if(S4==0)

{

delay(30);

if(S4==0)

TR0=0;

tiaozheng();

while(!

S4);

}

if(i==1)

{

if(S3==0)

{

delay(30);

if(S3==0)

fenjia();

while(!

S3);

}

if(S2==0)

{

delay(30);

if(S2==0)

fenjian();

while(!

S2);

}

display(SEC,0,0,0X04,0X08);

delay(5);

display(SEC,0,0,0,0);

delay(10);

display(SEC,0,0,0X04,0X08);

}

if(i==2)

{

if(S3==0)

{

delay(30);

if(S3==0)

miaojia();

while(!

S3);

}

if(S2==0)

{

delay(30);

if(S2==0)

miaojian();

while(!

S2);

}

display(SEC,0X01,0X02,0,0);

delay(5);

display(SEC,0,0,0,0);

delay(10);

display(SEC,0X01,0X02,0,0);

}

if(i==3)

{

flag1=0;

}

}

6.软硬件调试

系统调试:

根据系统设计方案,本系统的调试共分为两大部分:

硬件调试,软件调试。

(1)硬件调试

对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。

首先用数字万用表对实物板上的各元器件进行测试,在测试过程中,检验出一些错误,如数码管的两个引脚短接了,导致数码管显示不正确,将两引脚分开后,数码管正常工作。

(2)软件调试

软件调试采用单片机仿真器keiluVision及protus,将编好的程序进行调试,主要是检查语法错误。

再进行仿真,检验各个子程序是否正确执行,和硬件模块的协调性。

 

三、课程设计总结

课设心得

时间飞快,两个星期的课程设计已接近尾声。

两个星期的课程设计让我学到了很多。

学到的不仅仅是如何查找资料,画原理图、pcb,写程序及调试电路板,更有贯穿课程设计始终的团队精神。

一项工程一个人很难完成,而必须依靠团队的力量。

有了团结的队伍才能做出完美的设计,才能完成伟大的工程。

在设计之前,我翻阅了上课时做的笔记,看了下老师上课时用的课件,又去图书馆查阅了一些资料。

这样对单片机应用课程设计有了大体思路:

首先,研读课程设计任务书,定制设计方案。

其次,根据定制的方案绘制原理图并生成pcb。

再次,根据原理图及pcb焊制电路板,写程序并进行软硬件调试。

最后,撰写报告。

课程设计第一天,班长把各组的设计题目发到各组手中,我们的课设的题目是“数字钟设计”。

看到题目后我很高兴,因为在创新实验室我曾经做过比这个复杂得多的数字钟。

看完设计要求后,我就开始着手绘制原理图。

不过绘图的时候问题出现了。

我不知到老师那到底有什么器件,单片机最小系统好说,数码管驱动用什么器件就要看老师那有什么了。

当时考虑了下驱动数码管用74HC245可以,用573可以,用三极管也行。

于是我就大概画了个原理图。

当时用的是两片74HC573,因为看到课设任务书上的要求是用P1口控制4只段码管。

有了两片573单用P1口就能驱动数码管显示。

天气很热,我们的工作也很累,汗水打湿了我们的衣衫,但我们却很开心。

因为我们收获的不仅仅是一张原理图还有团队合作精神。

实验课上我把画好的原理图给老师审查了一下,后来得知实验室没有573,于是我快速回实验室把两片573

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

当前位置:首页 > 高等教育 > 历史学

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

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