微机原理课程设计.docx

上传人:b****7 文档编号:26022159 上传时间:2023-06-17 格式:DOCX 页数:13 大小:195.24KB
下载 相关 举报
微机原理课程设计.docx_第1页
第1页 / 共13页
微机原理课程设计.docx_第2页
第2页 / 共13页
微机原理课程设计.docx_第3页
第3页 / 共13页
微机原理课程设计.docx_第4页
第4页 / 共13页
微机原理课程设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机原理课程设计.docx

《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(13页珍藏版)》请在冰豆网上搜索。

微机原理课程设计.docx

微机原理课程设计

 

微机计算机原理及应用课程设计报告

——基于AT89S51的手动计数器

 

姓  名  

学  号  

班  级  电子

(1)班 

指导教师    

 

宿迁学院三系电工电子教研室

二○一○年十二月

 

第一章前言

1.1背景

课程设计的主要目的是提高实践能力,包括对硬件的理解分析能力和汇编语言的编程能力。

与其他课程不同的是,本课程对硬件有较高的依赖性,因此课程设计的灵活性受到了一定的限制,最好有相应的实验平台支持(尤其是硬件部分),本次课程设计主要是培养我们的动手解决问题的能力,编程语言可以使用会汇编或C语言。

1.2基本功能要求

利用AT89S51芯片来制作一个简易的手动计数器,在AT98S51的P3.7引脚接一个轻触开关,作为手动计数器的开关,用单片机的P2.0~P2.7接一个共阴极数码管作为00~99计数的各位,P0.0~P0.7接一个共阴极数码管作为00~99计数的十位。

引脚功能说明

●VCC:

电源电压

●GAD:

●P0口:

P0口是一组8位漏极开路型双向I/O口,也既地址/数据总线复用口。

作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作位高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

●P1口:

P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I)。

FLASH编程和程序校验期间,P1接收低8位地址。

端口引脚

第二功能

P1.5

MOSI(用于ISP编程)

P1.6

MISO(用于ISP编程)

P1.7

SCK(用于ISP编程)

●P2口:

P2是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I)。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。

FLASH编程或校验时,P2亦接收高位地址和其它控制信号。

●P3口:

P3是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作位输入端口。

作输入端时,被外部拉低的P3口将用上拉电阻输出电流。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表示:

P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。

端口引脚

第二功能

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

(外部中断0)

P3.3

(外部中断1)

P3.4

T0(定时/计数器0)

P3.5

T1(定时/计数器1)

P3.6

(外部数据存储器写选通)

P3.7

(外部数据存储器读选通)

RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

WDT溢出将使引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭功能。

DISRTO位缺省为RESET输出高电平打开状态。

ALE/

当访问外部程序存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

对FLASH存储器编程期间,该引脚还用于输入编程脉冲(

)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元D0位置位,可禁止ALE操作。

该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。

程序储存允许(

)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次

有效,即输出两个脉冲。

当访问外部数据存储器,没有两次有效的

信号。

EA/VPP:

外部访问允许。

欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

FLASH存储器编程时,该引脚加上+12V的编程电压Vpp。

XTAL1:

振荡器反相放大器及内部时钟发生器的输入端。

XTAL2:

振荡器反相放大器的输出端。

第二章程序设计

2.1题目基本内容

设计题目:

00~99手动计数器

利用AT89S51芯片来制作一个简易的手动计数器,在AT98S51的P3.7引脚接一个轻触开关,作为手动计数器的开关,用单片机的P2.0~P2.7接一个共阴极数码管作为00~99计数的各位,P0.0~P0.7接一个共阴极数码管作为00~99计数的十位。

单片机的共阴极数码管电路

单片机的复位电路

开关电路

2.2系统流程框图

 

 

 

2.3课程设计的具体内容说明

根据课题的要求,硬件部分主要完成一下几方面的设计:

1.把单片机系统区域中的P0.0-P0.7连接到共阴极七段数码管显示模块,A接P0.7,B接P0.6,C接P0.5,D接P0.4,E接P0.3,F接P0.2,G接P0.1,公阴极端CK接P0.0。

2.把单片机系统区域中的P2.0-P2.7连接到共阴极七段数码管显示模块,A接P2.7,B接P2.6,C接P2.5,D接P2.4,E接P2.3,F接P2.2,G接P2.1,公阴极端CK接P2.0。

3.单片机的P3.7口接一个轻触开关。

4.单片机的RST接口接一个复位电路。

5.单片机的XTAL2、XTAL1外接晶振。

根据课题的要求,软件部分主要完成一下几方面的设计:

1.对单片机按键的识别的过程处理

2.对单盘机正确识别的按键进行计数,计数满时又从零开始计数

3.对单片机的数值要进行数码显示,计得的数是十进制,含有十位和各位,我们要把十位和各位拆开分别送出到对应的数码管上显示。

 

2.4课程设计中关键内容的设计分析

此次课程设计的关键是程序和电路的连接,首先是对于七段数码管的连接,由于要使七段数码管显示0-9的数字,电路和程序要配合才能让数码管正确显示。

开始的时候编写的程序,仿真都出现了错误,七段数码管全部显示乱码(数字显示不完整,或者不显示),后来对程序中数组部分的数值的每位做了测试,如图连接七段数码管时,其对应关系:

七段数码管

芯片引脚

数位

显示

数位

显示

A

P0.7

0

1

B

P0.6

0

1

C

P0.5

0

1

D

P0.4

0

1

E

P0.3

0

1

F

P0.2

0

1

G

P0.1

0

1

CK

P0.0

0

 

由此推断出下表:

数码管显示数字

二进制表示

十六进制表示

0

00000010

0x02

1

10011110

0x9e

2

00100100

0x24

3

00001100

0x0c

4

10011000

0x98

5

01001000

0x48

6

01000000

0x40

7

00011110

0x1e

8

00000000

0x00

9

00001000

0x08

 

源程序代码:

#include

voidmain()

{

unsignedshortdisp[]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08};

unsignedintcounter=0;//定义变量counter计数

P0=0x02;//初始化数码管显示00

P2=0x02;

while

(1)

{

while

(1)//等待按钮的响应

{

if(1==P3_7)//判断按钮是否被按下

{

while

(1)

{

if(0==P3_7)//等待按钮的弹起

{

counter++;

gotoloop;

}

}

}

}

loop:

P2=disp[(counter%10)];

P0=disp[(counter/10)];

if(99==counter)

{

counter=-1;

}

}

}

 

使用说明

这次使用了KeilC51软件进行编程,Multisim软件进行了仿真。

由于Multisim中没有AT89S51芯片,所以选用了8051芯片进行了替代。

首先在KeilC51中建立一个新的工程,选择AT89S51芯片,然后新建一个*.c的文本,将程序输入,进行编译连接。

确定程序没有问题之后由程序生成*.hex文件。

之后打开Multisim,找到8051芯片连接电路图,把*.hex程序文件下载到8051芯片中进行仿真。

第三章心得体会

一星期的单片机实习很快结束了,从中学习到了很多,收获的东西也很多。

这次的51单片机实习,对于我们在电子电路的理解是很有帮助。

经过了这次的实习,对于电子信息工程这个专业有了一份新的理解,有了一份新的思考。

它将启发了我对将来的专业课的学习,需要理论联系实际,实际验证理论。

我们专业电子信息是一个工科的专业,强调动手的能力,一切的理论知识都是为了实际操作。

接下来,我将会带着理论和实践并重的想法去学习专业课。

首先,在这里我们也重新认识学习C语言,如何调试,如何解决一些基本的电路问题。

这些东西都是书本上学不到了。

理论上看起来理所当然的问题,到了实际的运用中,就会出现一些问题。

需要我们深入思考并且耐心解决。

其次,这个星期,我们从理论到实践,再由实践验证理论。

经过了一系列的深入思考和探讨。

对于书本的知识,不用说,加深了很多的理解。

对于动手的能力,也有了很大了提高,对于单片机的使用和操作更是多了一份理解。

最后,在实习过程中,同学之间的合作与讨论也是很重要的。

两外我们也要有积极进取的学习与实习态度。

一周的实习让我们对焊接技术有了就进一步的认识与学习。

使我们的焊接技术得到进一步的提高。

像以前经常遇到的问题,有如虚焊等一些问题,我们或多或少的避免了这些。

想相信在以后的工作当中,我们会更加认真,努力地完成每一件事。

 

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

当前位置:首页 > 自然科学 > 化学

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

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