完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx

上传人:b****6 文档编号:19441518 上传时间:2023-01-06 格式:DOCX 页数:12 大小:201.70KB
下载 相关 举报
完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx_第1页
第1页 / 共12页
完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx_第2页
第2页 / 共12页
完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx_第3页
第3页 / 共12页
完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx_第4页
第4页 / 共12页
完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx

《完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx》由会员分享,可在线阅读,更多相关《完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

完整版MCS51系列单片机毕业课程设计论文仅供参考Word下载.docx

通常ROM,RAM可分别扩展至64KB。

(2)可靠性高,因为芯片是按工业测控环境要求设计的,故抗干扰的能力优于PC机。

(3)系统软件(如:

程序指令,常数,表格)固化在ROM中,不易受病毒破坏。

许多信号的通道均在一个芯片内,故运作时系统稳定可靠。

(4)便于扩展:

片内具有计算机正常运行所必需的部件,片外有很多供扩展用的(总线,并行和串行的输入输出)管脚,很容易组成一定规模的计算机应用系统。

(5)控制功能强:

具有丰富的控制指令,如条件分支转移指令,IO口的逻辑操作指令,位处理指令。

(6)实用性好:

体积小,功耗低,价格便宜,易于产品化。

1.2MCS-51系列单片机的发展

MCS-51系列单片机的发展经过了三个阶段。

第1阶段(1971年—1978年),以MCS-48系列为代表,称4位单片机。

在片内:

CPU有4位或8位;

ROM有1KB或2KB;

RAM有64B或128B;

只有并行接口,无串行接口;

只有1个8位的定时计时器;

中断源只有2个。

在片外:

寻址范围只有4KB;

芯片引脚有40个。

第2阶段(1978年—1983年),以MCS-51系列为代表,称8位单片机。

CPU有8位;

ROM有4KB或8KB;

RAM有128B或256B;

有串并行接口;

有2个或3个16位的定时计时器;

中断源有5至7个。

寻址范围有64KB;

第3阶段(1983年以后),以MCS-96系列为代表,称16位单片机。

CPU有16位;

ROM有8KB;

RAM有232B;

有4个16位的定时计时器;

中断源有8个;

增加了DA和AD转换电路。

寻址范围有64KB;

芯片引脚有48个或68个。

1.3MCS-51系列单片机的应用

单片机主要有单机应用和多机应用。

单机应用即一个系统使用一块单片机也成为普通应用模式。

如家用电器,均用单片机做自动控制。

或用于智能设备,网络与通信的智能接口,在大型计算机控制的网络或通信电路与外围设备的接口电路中,用单片机来控制或管理,可大大提高系统的运行速度和接口的管理水平。

对工业设备(如机床,汽车,高档中西餐厨具,锅炉,供水系统,生产自动化,自动报警系统,卫星信号接收等)进行智能测控,大大地降低了劳动强度和生产成本,提高了产品质量的稳定性。

多机应用即一个系统使用多块单片机也称高科技应用模式。

一般用于功能弥散系统,并行多机处理系统或局域网络系统。

第2章MCS-51系列单片机的结构

2.1MCS-51系列单片机硬件结构

8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:

1.中央处理器

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出作用等操作。

2.数据存储器(RAM)

8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

3.程序存储器(ROM)

8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。

4.定时计数器(ROM)

8051有两个16位的可编程定时计数器,以实现定时或计数产生中断用于控制程序转向。

5.并行输入输出(IO)口

8051共有4组8位IO口(P0、P1、P2或P3),用于对外部数据的传输。

6.全双工串行口

8051内置一个全双工串行通信口,用于和其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

7.时钟电路

8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。

8.中断系统

8051具备较完善的中断作用,有两个外中断、两个定时计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。

9.外部总线

(1)地址总线(AB)宽度为16位,因此,对外接存储器可直接寻址范围64KB。

16位地址的高8位P2口直接输出,P0口输出低8位地址,在允许地址锁存信号ALE作用下,将低8位地址锁存到外部地址锁存器中,从而让P0口接受数据做准备。

P0是地址数据共用的端口。

(2)数据总线(DB)宽度为8位,有P0口提供。

(3)控制总线(CB)由上述4条控制线和P3口的第二功能状态组成。

2.2MCS-51系列单片机的定时器功能

定时器计数器实际是加1计数器,当它对外部事件计数时,由于频率不固定,此时称之为计数器,当它对内部固定频率的机器周期进行计数时称之为定时器。

T0或T1在做定时器使用时,输入的时钟脉冲由晶振的输出经12分频后得到,T0或T1在做计数器使用时,输入的时钟脉冲由外部的输入端P3.4(T0)和P3.5(T1)提供。

当加法计数器的初值被设置后,用指令改变特殊功能寄存器TMOD和TCON的内容,就会在下一条指令的第一个机器周期的S1P1时刻按照设定方式自动进行工作。

定时器计数器有四种工作模式,工作模式控制如表2-1所示:

定时器的方式寄存器TMOD:

表2-1定时器工作方式表

M1M0

方式

说明

00

13位定时器计数器

01

1

16位定时器计数器

10

2

自动装入时间常数的8位定时器计数器

11

3

对T0分为两个8位计数器,对T1置方式3时停止工作

第3章开发环境简介

3.1软件开发环境KEIL简介

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

3.2硬件开发环境LY-51S开发板简介

本开发板使用独立模块式结构,大部分模块都是完全独立的,仅有电源部分连接,信号接口部分默认悬空,需要用到该器件时,用杜邦线连接到对应的单片机端口,不使用时悬空即可。

这种方式大大提高了自由度,这些模块完全独立,可以自由配置端口,连接其他类型单片机的最小系统板就可以组成对应的开发板。

LED显示的秒表主要用到以下模块:

1、数码管模块:

数码管其实是由发光二极管组成,有共阴极和共阳极之分,对于共阳极来说,一位数码管由8个二极管组成,他们的阳极接在一起接+5v电源,而各个阴极与某个端口,如p1的8个引脚相连,当某个引脚输出低电平的时候数码管对应的二极管亮。

2、键盘模块:

键盘是由若干个按键组成的开关矩阵,由SL0-SL3输出键盘和显示器的扫描线,回复线RL0-RL7作为键盘的列线以搜索,闭合键将键盘数据送入FIFO存储器,有键闭合时数据进入FIFO存储器,使IRQ置位向CPU申请中断。

第4章系统硬件设计

4.1数码管显示的秒表原理

此次设计的数码管显示的秒表,主要是运用单片机的键盘模块对时间进行控制,并将结果显示在数码管上。

其系统框图如下:

4.2数码管显示原理图设计

锁存器就是把当前的状态锁存起来,使CPU送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定。

74hc573就是锁存器,锁存引脚高电平表示直通状态,为低电平表示锁存状态,可以通过控制锁存器,控制74hc573后端数据。

段码控制数码管显示的内容,位码控制选通哪个数码管。

如送位码0x7e,表示选通第一位数码管;

送段码0x3f,只有g和dp位不亮,表示显示数字0。

数码管可以静态显示数据,也可以动态扫描。

由于任一时刻只能显示一种数字,当需要多为数码管显示多位数据的时候就需要动态扫描。

动态扫描时间上执行的是动态显示,由于动态速度很快,人眼分辨不出,所以看上去是静态显示,这种效果正是我们所需要的。

4.3键盘的工作原理图设计

显示缓冲区(RAM)存放显示数据的段码,数据轮流从显示寄存器输出,在SL0-SL3的配合下,实现动态显示。

键盘使用时,必须消除键抖动:

检测到按键按下后,执行延时10ms子程序后再确认按键是否确实按下,消除抖动影响。

4.4单片机的连接这节不要,在前面两节里分别说明

此次设计的数码管显示的秒表,主要是运用单片机的定时器功能进行时间的控制,并将结果显示在数码管上。

单片机的连接如下:

(1)数码管D0~D7连接到P0^0~P0^7口;

(2)段码、位码连接到P2^2、P2^3口;

(3)独立按键K5~K8连接到P1^0~P1^3口。

第5章系统软件设计

5.1系统流程图

本设计使用硬件描述语言KeilC51进行设计开发,采用μVision2的综合软件设计程序。

主程序的主要功能是实现秒表的功能,并在数码管上显示。

系统流程图如下:

5.2按键模块程序设计

1、暂停开始按键:

实现启动秒表和暂停秒表的功能,代码如下:

if(key1==0)暂停和开始

{

delay(10);

if(key1==0)

{

key_num++;

if(key_num==2)key_num=0;

}

}

while(!

key1);

TR0=key_num;

if(display_flag==0){

display(min_1,min_2,second_1,second_2,msecond_1,msecond_2);

显示

}

2、存储按键:

实现存储多个时间记录的功能,代码如下:

if(key2==0)存储

{

if(key2==0)

amsecond_1[num_i]=msecond_1;

amsecond_2[num_i]=msecond_2;

amin_1[num_i]=min_1;

amin_2[num_i]=min_2;

asecond_1[num_i]=second_1;

asecond_2[num_i]=second_2;

}

if(num_i==10)num_i=0;

num_i++;

key2);

copy_num_i=num_i;

3、读取按键:

实现读取所存储的时间记录的功能,代码如下:

if(key3==0)读取

if(key3==0)

display_flag=1;

}

if(num_i==0)num_i=copy_num_i;

num_i--;

key3);

if(display_flag==1){

display(amin_1[num_i],amin_2[num_i],asecond_1[num_i],asecond_2[num_i],amsecond_1[num_i],amsecond_2[num_i]);

4、清零按键

实现秒表清零的功能,代码如下:

if(key4==0)清零

{

TR0=1;

number=0;

min_1=0;

min_2=0;

second_1=0;

second_2=0;

msecond_1=0;

msecond_2=0;

num_m=0;

num_s=0;

display_flag=0;

5.3显示模块程序设计

显示函数代码如下:

voiddisplay(uintmin_1,uintmin_2,uintsecond_1,uintsecond_2,uintmsecond_1,uintmsecond_2)

{

wela=1;

P0=0xff;

wela=0;

dula=1;

P0=duanma[min_1];

dula=0;

P0=0xfe;

delay

(2);

分的十位

P0=duanma[min_2];

P0=0xfd;

分的个位

P0=0x40;

P0=0xfb;

“-”

P0=duanma[second_1];

P0=0xf7;

秒的十位

P0=duanma[second_2];

P0=0xef;

秒的个位

P0=0xdf;

wela=1;

P0=duanma[msecond_1];

P0=0xbf;

毫秒的十位

P0=duanma[msecond_2];

P0=0x7f;

毫秒的个位

}

5.4计时模块程序设计

定义及初始化定时器代码如下:

voidinit()

TMOD=0x01;

TH0=()256;

TL0=()%256;

EA=1;

ET0=1;

TR0=1;

}初始化定时器

voidtimer0()interrupt1

aa++;

if(aa==1)

{

aa=0;

number++;

毫秒数

if(number==100)

num_s=num_s+1;

秒数

second_2=num_s%10;

second_1=num_s10;

if(num_s==59)

num_s=0;

num_m=num_m+1;

分数

min_2=num_m%10;

min_1=num_m10;

if(num_m==60)num_m=0;

msecond_2=number%10;

msecond_1=number10;

}

结论

通过本次单片机的课程设计,我不仅复习了以前学过的与单片机有关的知识,在遇到问题的过程中通过咨询老师和上网搜索解决了问题,同时也学习到了新的更深入的知识。

在这次设计中也遇到了很多麻烦,例如如何存取多个时间记录,不过经过反复的检查和排除,最终实现了这些功能。

通过这次对秒表的设计,让我了解了秒表的设计理念和原理,而要成功的设计出成果,则需要扎实的知识基础,熟练地掌握书本上的知识并加以运用。

通过这次课程设计,让我对单片机有了更深层次的理解,也对单片机产生了更浓厚的兴趣,在以后的学习工作中,我也会运用单片机来解决一些问题。

参考文献

[1]蔡美琴等.MCS-51系列单片机系统及其应用.高等教育出版社,2004.6

[2]张毅刚等.新编MCS-51单片机应用设计.哈尔滨工业大学出版社,2003.7

[3]求是科技编著.8051系列单片机C程序设计完全手册.人民邮电出版社,2006.4

[4]何立民编著.MCS-51系列单片机应用系统设计:

系统配置与接口技术.北京航空航天大学出版社,1990

[5]唐俊翟等.单片机原理与应用.冶金工业出版社,2003.9

[6]齐志才等.MCS-51系列单片机原理及接口技术.中国建筑工业出版社,2005.6

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

当前位置:首页 > 工作范文 > 制度规范

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

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