单片机099加法计数器程序设计51单片机原理及应用Word格式.docx

上传人:b****7 文档编号:22573038 上传时间:2023-02-04 格式:DOCX 页数:22 大小:383.84KB
下载 相关 举报
单片机099加法计数器程序设计51单片机原理及应用Word格式.docx_第1页
第1页 / 共22页
单片机099加法计数器程序设计51单片机原理及应用Word格式.docx_第2页
第2页 / 共22页
单片机099加法计数器程序设计51单片机原理及应用Word格式.docx_第3页
第3页 / 共22页
单片机099加法计数器程序设计51单片机原理及应用Word格式.docx_第4页
第4页 / 共22页
单片机099加法计数器程序设计51单片机原理及应用Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机099加法计数器程序设计51单片机原理及应用Word格式.docx

《单片机099加法计数器程序设计51单片机原理及应用Word格式.docx》由会员分享,可在线阅读,更多相关《单片机099加法计数器程序设计51单片机原理及应用Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

单片机099加法计数器程序设计51单片机原理及应用Word格式.docx

上机时间安排

星期

周次

第14周-第17周

C51系统课程设计总学时:

16刘粉[1-2节]重型楼0411

16刘粉[5-6节]重型楼0411

指导时间地点

上机时间,多媒体技术实验室(重型楼0411)

前言

单片机全称叫单片微型运算机(SingleChipMicrocomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处置能力的中央处置器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、按时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上组成的一个小而完善的运算机系统。

 

目前单片机渗透到咱们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各类仪表的控制,运算机的网络通信与数据传输,工业自动化进程的实时控制和数据处置,普遍利用的各类智能IC卡,民用奢华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,和程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机械人、智能仪表、医疗器械和各类智能机械了。

单片机普遍应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及进程控制等领域,大致可分如下几个范围:

1.在智能仪器仪表上的应用,例如精密的测量设备 2.在工业控制中的应用  用单片性能够组成形式多样的控制系统、数据收集系统。

例如工厂流水线的智能化管理,电梯智能化控制、各类报警系统,与运算机联网组成二级控制系统等。

3.在家用电器中的应用可从电话,电话机、小型程控互换机、楼宇自动通信呼唤系统、列车无线通信、再到日常工作中处处可见的移动电话,集群移动通信,无线电对讲机等。

5.单片机在医用设备领域中的应用 例如医用呼吸机,各类分析仪,监护仪,超声诊断设备及病床呼唤系统等等。

6.在各类大型电器中的模块化应用 如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于运算机的原理。

另外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分普遍的用途。

一.单片机介绍

(一).AT89C51简介

AT89C51是一种带4KFLASH(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位,俗称。

AT89C2051是一种带2K闪存可编程可擦除的。

的可擦除能够反复擦除1000次。

该器件采用ATMEL高密度非易失制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪速组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51为很多提供了一种灵活性高且价廉的方案。

外形及排列如图所示。

此刻AT89S51/52已经取代了AT89C51/52。

(二).主要特性

·

与MCS-51兼容

4K字节可编程FLASH

寿命:

1000写/擦循环

数据保留时刻:

10年

全静态工作:

0Hz-24MHz

三级锁定

128×

8位内部RAM

32可编程I/O线

两个16位/计数器

5个

可编程串行通道

低功耗的闲置和掉电模式

片内振荡器和时钟电路

(三).特性概述

AT89C51提供以下标准功能:

4kFlash,128字节内部RAM,32个I/O口线,两个16位按时/计数器,一个5向量两级中断结构,一个全双工口,片内振荡器及。

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

空闲方式停止CPU的工作,但允许RAM,按时/计数器,口及继续工作。

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

(四).管脚说明

VCC:

供电电压。

GND:

接地。

P0口:

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

当P0口的管脚第一次写1时,被概念为输入。

P0能够用于外部程序数据,它能够被概念为数据/地址的低八位。

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

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)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚备选功能

RXD(串行输入口)

TXD(串行输出口)

/INT0(外部中断0)

/INT1(外部中断1)

T0(计时器0外部输入)

T1(计时器1外部输入)

/WR(写选通)

/RD(读选通)

P3口同时为闪烁编程和编程校验接收一些。

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应不接。

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

(五).芯片擦除

整个PEROM阵列和三个锁定位的电擦除可通过正确的组合,并维持ALE管脚处于低电平10ms来完成。

在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复以前,该操作必需被执行。

另外,AT89C51设有稳态逻辑,能够在低到零频率的条件下静态逻辑,支持两种可选的掉电模式。

在闲置模式下,CPU停止工作。

但RAM,,计数器,串口和仍在工作。

在掉电模式下,保留RAM的内容而且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

(六).

的结构和特殊寄放器,这是你编写的关键。

至于需要用到那些呢,它们是SCON,TCON,TMOD,SCON等,各代表什么含义呢?

这是一个能够直接寻址的专用。

有朋友如此问起过“为安在收发中,都只是利用到同一个寄放器?

而不是收发各用一个寄放器。

”实际上包括了两个独立的寄放器,一个是发送寄放,另一个是接收寄放器,但它们都一路利用同一个寻址地址-99H。

CPU在读时会指到接收寄放器,在写时会指到发送寄放器,而且接收寄放器是寄放器,如此能够避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。

发送器则不需要用到,一般情形下咱们在写发送程序时也没必要用到发送中断去外理发送数据。

操作寄放器的方式则很简单,只要把那个99H地址用关键字概念为一个就可以够对其进行读写操作了,如sfrSBUF=0x99;

固然你也能够用其它的名称。

通常在标准的或等头文件中已对其做了概念,只要用#include引用就可以够了。

SCON通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄放器。

SCON就是51芯片的。

它的地址是98H,是一个能够的寄放器,作用就是监视和控制51芯片的工作状态。

51芯片的串口能够工作在几个不同的工作模式下,其工作模式的设置就是利用SCON。

它的各个位的具体概念如下:

SM0SM1SM2RENTB8RB8TIRI

SM0、SM1为工作模式设置位,如此两位能够对应进行四种模式的设置。

工作模式设置。

SM0SM1模式功能率

000同步fosc/12

0118位UART可变

1029位UARTfosc/32或fosc/64

1139位UART可变

在这里只说明最常常利用的模式1,其它的模式也就一一略过,有兴趣的朋友能够找相关的硬件资料查看。

表中的fosc代表振荡器的频率,也就是晶振的频率。

UART为(UniversalAsynchronousReceiver)的英文缩写。

SM2在模式二、模式3中为通信使能位。

在模式0中要求该位为0。

REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。

REM是由置位或清零。

若是在一个电路中接收和发送,都和相连,在上有串口程序,当要求在处置某个时不允许串口被上位机来的产生中断,那么能够在那个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。

大家也能够用上面的实际源码加入REM=0来进行实验。

TB8发送8,在模式2和3是要发送的第9位。

该位能够用按照需要置位或清除,通常这位在中做奇偶位,在通信中这一名则用于表示是地址帧仍是。

RB8接收8,在模式2和3是已接收数据的第9位。

该位可能是奇偶位,地址/数据标识位。

在模式0中,RB8为保留位没有被利用。

在模式1中,当SM2=0,RB8是已接收数据的停止位。

TI发送中断标识位。

在模式0,发送完第8位数据时,由硬件置位。

其它模式中则是在发送停止位之初,由硬件置位。

TI置位后,申请中断,CPU响应中断后,发送下一帧数据。

在任何模式下,TI都必需由来清除,也就是说在数据写入到后,硬件发送数据,(如中断打开),这时TI=1,表明发送已完成,TI不会由硬件清除,所以这时必需用软件对其清零。

RI接收中断标识位。

在模式0,接收第8位结束时,由硬件置位。

其它模式中则是在接收停止位的半中间,由硬件置位。

RI=1,申请中断,要求CPU取走数据。

但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。

一样RI也必需要靠清除。

常常利用的串口模式1是传输10个位的,1位起始位为0,8位,低位在先,1位停止位为1。

它的率是可变的,其速度是取决于1或按时器2的按时值(溢出速度)。

AT89C51和AT89C2051等51系列芯片只有两个,按时器0和按时器1,而按时器2是系列芯片才有的。

在利用串口做通信时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才能够进行正常通信。

是指每秒内能够传输的波特位数。

有一些初学的朋友以为是指每秒传输的数,如标准9600会被误以为每秒种能够传送9600个字节,而实际上它是指每秒能够传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每一个数据字节就要占用10个二进位,9600用模式1传输时,每秒传输的字节数是9600÷

10=960字节。

51芯片的串口工作模式0的是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率能够达到1M。

模式2的是固定在fosc/64或fosc/32,具体用那一种就取决于PCON中的SMOD位,如SMOD为0,波特率为focs/64,SMOD为1,波特率为focs/32。

模式1和模式3的是可变的,取决于1或2(52芯片)的溢出速度。

那么咱们怎么去计算这两个模式的设置时相关的的值呢?

能够用以下的公式去计算。

=(2SMOD÷

32)×

1溢出速度

上式中如设置了PCON中的SMOD位为1时就可以够把提升2倍。

通常会利用1工作在按时器工作模式1下,这时按时值中的TL1做为计数,TH1做为自动重装值,那个按时模式下,按时器溢出后,TH1的值会自动装载到TL1,再次开始计数,如此能够不用去干与,使得按时更准确。

在那个按时模式1下1溢出速度的计算公式如下:

溢出速度=(计数速度)/(256-TH1)

上式中的“计数速度”与所利用的晶体振荡器频率有关,在51芯片中启动后会在每一个使按时寄放器TH的值增加一,一个机械周期等于十二个振荡周期,所以能够得知51芯片的计数速度为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速度就为1M。

通常常利用晶体是为了取得标准的无误差的,那么为何呢?

计算一下就明白了。

如咱们要取得9600的,晶振为和12M,1为模式2,SMOD设为1,别离看看那所要求的TH1为何值。

代入公式:

9600=(2÷

(12)/(256-TH1))

TH1=250

12M

((12M/12)/(256-TH1))

TH1≈

上面的计算能够看出利用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,如此它就会有必然的误差存在不能产生精准的9600波特率。

固然必然的误差是能够在利用中被同意的,就算利用的晶体振荡器也会因晶体本身所存在的误差使产生误差,但晶体本身的误差对波特率的影响是十分之小的,能够忽略不计。

二.课程设计的目的和要求

(一).设计目的

1.学习大体理论在实践中综合运用的初步经验,掌握电路设计的大体方式、设计步骤,培育综合设计与调试能力。

2.掌握汇编语言程序设计方式。

3.培育实践技术,提高分析和解决实际问题的能力。

(二).课程设计题目

00-99加法数器

(三).设计任务及要求

1.上电时,数码管显示为00。

2.利用单片机来制作一个手动计数器,在单片机的管脚上接一个轻触开关,作为手动计数的按钮,用单片机的I/O口接数码管,作为计数器,进行加计数显示。

3.计数器计数到99后,再按计数按钮,则数码管从00从头开始计数。

三.整体设计思路

(一).硬件设计思路及系统框图

1.硬件设计思路:

00-99加计数器硬件系统主要由AT89S51单片机,数码管,电容,电源等元件组成,利用单片机的P0口、P1口作为输出端,来控制数码管的显示,通过单片中烧入程序,然后利用口作为输入端,通过点动控制实现开关量的控制和计数,然后再通过数码显示器显示出来。

通过调试仿真从而实现00-99加计数。

2.原器件清单

元件名称

型号

数量/个

用途

单片机

AT89C51

1

控制核心

晶振

12MHZ

晶振电路

电容

30uF

2

排阻

Respack8

上位电阻

电阻

10k

复位电路

电源

+5v

提供电源

拨码开关

BUTTON_1

发出信号

数码管

7SEG-MPX1-CC

显示电路

3.系统框图

(二).软件设计思路:

实现00-99计数功能,子程序实现将高低电位转化为数码管的十进制数字,实现手动开关计数。

通过手动给脉冲信号,实现计数,再加到99时,在手动给脉冲时,回到初始状态00,从而实现00到99加计数。

(三).对照表

“0”

3FH

“8”

7FH

“1”

06H

“9”

6FH

“2”

5BH

“A”

77H

“3”

4FH

“b”

7CH

“4”

66H

“C”

39H

“5”

6DH

“d”

5EH

“6”

7DH

“E”

79H

“7”

07H

“F”

71H

(四).程序流程图

程序框图

四.硬件设计

(一).芯片主要特性

与MCS-51兼容

4K字节可编程闪烁存储器

0Hz—24Hz

三级程序存储器锁定

128*8位内部RAM

两个16位按时器/计数器

5个中断源

片内震荡器和时钟电路

(二).管脚说明:

①电源引脚

Vcc(40脚):

典型值+5V。

Vss(20脚):

接低电平。

②外部晶振

XTAL1、XTAL2分别与晶振两端相连接。

③输入输出口引脚:

I/O双向口。

作输入口时,应先软件置“1”。

④控制引脚:

RST、ALE/-PROG、-PSEN、-EA/Vpp组成了MSC-51的控制总线。

RST(9脚):

复位信号输入端(高电平有效)。

ALE/-PROG(30脚):

地址锁存信号输出端。

第二功能:

编程脉冲输入。

-PSEN(29脚):

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

-EA/Vpp(31脚):

外部程序存储器使能端。

编程电压输入端(+21V)。

AT89C51单片机的P口特点:

是一个8位漏极开路输出型双向I/O端口。

作为输出端口时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。

在访问外部程序或数据存储器时,它是时分多路转换的地址(低8位)/数据总线,在访问期间将激活内部的上拉电阻。

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

P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。

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

P2口作输入口使历时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。

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

P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。

在访问外部程序存储器时和16位外部地址的外部数据存储器(如执行MOVX@DPTR)时,P2口送出高8位地址。

在访问8位地址的外部数据存储器(如执行MOVX@RI)时,P2口引脚上的内容(就是专用寄放器(SFR)区中的P2寄放器的内容),在整个访问期间不会改变。

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

P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。

P3口作输入口使历时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。

(三).排阻的作用

所谓排阻就是若干个参数完全相同的电阻,它们的一个引脚都连到一路,作为公共引脚。

其余引脚正常引出。

所以若是一个排阻是由n个电阻组成的,那么它就有n+1只引脚,一般来讲,最左侧的那个是公共引脚。

它在排阻上一般用一个色点标出来。

排阻一般应用在数字电路上,比如:

作为某个并行口的上拉或下拉电阻用。

利用排阻比用若干只固定电阻更方便。

排阻有a型和b型的区别:

a型排阻的引脚总是奇数的。

它的左端有一个公共端(用白色的圆点表示),常见的排阻有4、7、8个电阻,所以引脚共有5或8或9个。

b型排阻的引脚老是偶数的。

它没有公共端,常见的排阻有4个电阻,所以引脚共有8个。

排阻的阻值读法如下:

“103”表示:

10kΩ,“510”表示:

51Ω。

以此类推常常利用于显示数码管。

(四).电路图说明

1.添加晶振和复位

充当加法计时器的作用

2.添加P0和P2两个按键

按下按键P0,系统执行Count自加,Count初始值为0,当Count=100时返回Count=0,循环计算。

按下按键P2,系统执行z加法,z的初始值为0,当z=100时返回Count=0,循环计算。

按键P0,P2能够同时按下。

3.数码管动态显示

显示“0~99”加法计算的数值

五.软件设计说明

voiddelay()

{

unsignedchari,j;

for(i=20;

i>

0;

i--)

for(j=248;

j>

j--);

}得和体会:

通过一周的单片机课程设计

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

当前位置:首页 > 高中教育 > 英语

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

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