微计算机应用及计控技术实训实训报告

更新时间:2023-09-03 15:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理课程设计书,c51单片机实训

信息工程学院实训报告

题目:

项目一 脉冲计数器

项目二 电脑时钟(定时器、中断器综合应用)

微机原理课程设计书,c51单片机实训

内蒙古科技大学实训任务书

微机原理课程设计书,c51单片机实训

摘要

单片机是在一个芯片上集成了中央处理机、存储器、各种I\O接口的微型计算机,主要面向控制性应用领域,因此又称为嵌入式微控制器。本次实训便是应用单片机控制实现预想功能。项目一设计的是脉冲计数器,通过MCS-51单片机编程,当脉冲输入时,实现计数功能并显示到数码管上。项目二设计的是电脑时钟,应用MCS-51中定时/计数功能,同时应用中断实现时钟功能。

关键字:单片机 定时器 计数器 中断 编程 寄存器

微机原理课程设计书,c51单片机实训

目 录

项目一 脉冲计数器

第1章 实训简介………………………………………………………………………..6

1.1实训要求……………………………………………………………………………6 1.2 实训目的…………………………………………………………………………..6 1.3 实训说明………………………………………………………………………….. 6

第2章 硬件设计…………………………………………………………………………6

2.1 硬件电路图……………………………………………………………….............6 2.2实训内容……………………………………………………………………….........7

2.2.1实验连线………………………………………………………………….........7 2.2.2 PC环境…………………………………………………………………..…. .…7 2.2.3观察运行结果……………………………………………………………….….7

第3章 软件设计………………………………………………………………………….7

3.1中断源及中断源入口地址 …………………………………………………….…..7

3.1.1 中断源……………………………………………………….…. .……8

3.1.2 中断源入口地址…………………………………………. .….……8

3.2 MCS-51的定时器/计数器…………………………………………….….……9

3.2.1定时器/计数器的结构………………………………………….……….……9

3.2.1.1工作方式控制寄存器TMOD………………………………………10

微机原理课程设计书,c51单片机实训

3.2.1.2定时器/计数器控制寄存器TCON…………………………11 3.2.1.3计时寄存器…………………………………………………….…11 3.2.2定时器/计数器的工作……………………………….……….…….…12 3.2.2.1定时器/计数器工作步骤与初值计算………….……. . . .. .…. . . . . . . . .…12

3.2.2.2工作方式…………………………………………………………13 3.3 LED显示字形表和字位表……………………………………………………15 3.4程序设计流程图 ………………………………………………………….……15 3.5软件程序 …………………………………………………………………….…..16 3.6运行结果…………………………………………………………………….……20 第4章 实训心得及参考文献…………………………………………………………20 4.1实训体会……………………………………………………………………..……20 4.2实训建议…………………………………………………………….…….………20 4.3实训总结………………………………………………………………….….……20 4.4参考文献………………………………………………………………….….……21

项目二 电脑时钟(定时器、中断器综合应用)

第1章 实训简介………………………………………………………………….……..22

1.1实训目的……………………………………………………………………. .……22 1.2 实训内容 …………………………………………………………………. .……22

微机原理课程设计书,c51单片机实训

第2章 硬件设计…………………………………………………………………. .……22

2.1实训步骤………………………………………………………………………. .…22

第3章 软件设计 …………………………………………………………………. .…22

3.1程序设计流程图…………………………………………………………….……22 3.2编程提示(键盘) …………………………………………………………………23

3.2.1工作原理………………………………………………………………………23 3.2.2扫描子程序设计………………………………………………………. .……23

3.3软件程序 ………………………………………………………………….………25 3.4运行结果 …………………………………………………………………….……29 第4章 实训心得及参考文献……………………………………………………..……29 4.1实训体会……………………………………………………..………………. …....29 4.2实训建议 ……………………………………………………………………….…30 4.3实训总结… …………………………………………………………………….…30 4.4参考文献…………………………………………………..………………………30

微机原理课程设计书,c51单片机实训

正文:

项目一 脉冲计数器

第1章 实训简介

1.1实训要求

本课程的任务是使学生通过“脉冲计数器”的设计过程,综合所学课程,掌握目前自动化仪表的一般设计要求,工程设计方法,开发及设计工具的使用方法,通过这一设计实践过程,锻炼学生的动手能力和分析,解决问题的能力;积累经验,培养按部就班,一丝不苟的工作个对所学知识的综合应用能力。

1.2实训目的

熟悉MCS-51单片机的定时/计数功能,掌握初始化编程显示方法。

1.3实训内容

把定时器0外部输入的脉冲进行计数,并送显示器显示。

第2章 硬件设计

2.1 硬件电路图

微机原理课程设计书,c51单片机实训

2.2实训内容

2.2.1实验连线

P3.4依次接T0~T7或单步脉冲输出孔。 2.2.2 PC环境

在与PC联机状态下,编辑、编译、连接、下载并连续运行所编程序。 2.2.3观察运行结果

(1)在单步运行时每走一步可观察其运行结果。

(2)在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后观察数码管上计数脉冲的速度及个数。

(3)修改程序或用键盘输入显示初值,使显示器上可显示到999999个脉冲个数。

第3章 软件设计

3.1 中断源及中断源入口地址

用C语言编写程序。

微机原理课程设计书,c51单片机实训

3.1.1中断源

增强型MCS51是一个多中断的单片机,共有3类6个中断源,分别是两个外部中断、三个定时器中断和一个串行中断,如表1.1所列。P0口功能 :P0口具有两种功能:第一,P0口可以作为通用I/O接口使用,P0.7—P0.0用于传送CPU的输入/输出数据。输出数据时可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲。第二,P0.7—P0.0在CPU访问片外存储器时用于传送片外存储器de低8位地址,然后传送CPU对片外存储器的读写

P1口 功能 :P1口的功能和P0口de第一功能相同,仅用于传递I/O输入/输出数据。

P2口的功能 :P2口的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O使用。它的第二功能和P0口引脚的第二功能相配合,作为地址总线用于输出片外存储器的高8位地址。

P3口功能 :P3口有两个功能:第一功能与其余三个端口的第一功能相同;第二功能作控制用,每个引脚都不同。 3.1.2 中断源入口地址

每一个中断源都有一个固定的中断处理入口地址,它们的地址如表1.2所示。 表1.2 中断源入口地址

微机原理课程设计书,c51单片机实训

3.2 MCS-51的定时器/计数器

在工业检测、控制中,许多场合都要用到计数或定时功能。MCS-51单片机内有两个可编程的定时器/计数器,以满足这方面的需要。它们都具有两种工作模式:计数器模式和定时器模式。

1. 计数工作模式

计数功能是对外来脉冲进行计数。外部输入引脚T0(P3.4脚)和T1(P3.5脚),分别是这两个计数器的计数脉冲输入端。每当外部输入的脉冲发生负跳变时,计数器加1,允许最高计数频率为晶振频率的1/24。

2. 定时器工作模式

定时功能也是通过计数器的计数来实现的,不过计数脉冲来自单片机的内部,也就是每经过1个机器周期的时间,计数器加1。即内部计数器对晶振脉冲12分频后的脉冲计数,该脉冲的周期等于机器周期,即对机器周期进行计数。若选择12MHz晶振,则计数频率为1MHz,即每过1uS的时间计数器加1。从计数值便可求得定时时间,也可根据定时时间的要求计算出计数器的初值。

MCS-51单片机的定时器/计数器具有4种工作方式(方式0、方式l、方式2和方式3),其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编程,用户可方便地选择适当的工作模式和工作方式。 3.2.1定时器/计数器的结构

MCS-51单片机的定时器/汁数器T0由特殊功能寄存器TH0、TL0构成,定时器/计数器T1由特殊功能寄存器TH1、TL1构成。

特殊功能寄存器TMOD用于控制和确定定时器/计数器T0、T1的工作模式和工作方式。特殊功能寄存据TC0N用于控制T0、T1的启动和停止计数,同时包含T0、T1的状态。TMOD、TCON这两个寄存器的内容由软件设置。系统复位时,两个寄存器的所有位都被清0。

微机原理课程设计书,c51单片机实训

3.2.1.1工作方式控制寄存器TMOD

TMOD用于控制定时器/计数器的工作模式及工作方式,它的字节地址为89H,共格式如下表5.1TMOD控制寄存器所示:

表5.1TMOD控制寄存器

TMOD的8位分为两组,高4位控制T1,低4位控制T0。

GATE:计数器工作的门控位。当GATE=0,定时器/计数器在TR0=1或TR1=1时会工作;GATE=l时,且TR0=1或TR1=1,计数器要在INT0或INT1引脚成为高电平时才会工作,用于测量在INT0或INT1引脚出现的正脉冲的宽度。

C/T位:计数器模式和定时器模式的选择位。C/T=0,为定时器模式;C/T=1,设置为计数器模式。

M1、M0位:4种工作方式选择位。共有4种编码,对应于4种工作方式。对应关系如表5.2所示。

表5.2工作方式选择

微机原理课程设计书,c51单片机实训

3.2.1.2定时器/计数器控制寄存器TCON

TCON的字节地址为88H,位地址为88H-8FH,TCON的格式如下表5.3:

表5.3 TCON中的中断请求标志位

低4位与外部中断有关,上章中已介绍,高4位的功能如下:

TF0:MCS-51片内定时器/计数器T1溢出中断申请标志位。当启动T0计数后,定时器/计数器T0从初值开始加1计数,当最高位产生溢出时,TF0由硬件置“1”,向CPU申请中断,CPU响应T0中断时,TF0由硬件清“0”,TF0也可由软件清0(查询方式)。

TFl:MCS-51片内的定时器所数器T1的溢出中断申请标志位,功能和TF0类同。 TR1:T1

计数启动控制位。由软件置l或清0。TR1=1时,允许T1计数;当TR1=0禁止T1计数。

TR0:T0计数启动控制位。由软件置l或清0。TR0=1时,允许T0计数;当TR0=0时,禁止T0计数。

3.2.1.3计时寄存器

定时器/计数器的计数初值写入计时寄存器,计时寄存器如下表5.4:

表5.4计时寄存器

定时器/计数器0的计数初值写入TH0、TL0来控制计数长度;同理定时器/计数器1

微机原理课程设计书,c51单片机实训

的计数初值写入TH1、TL1来控制计数长度。

3.2.2定时器/计数器的工作

3.2.2.1定时器/计数器工作步骤与初值计算 1) 定时器/计数器工作步骤

定时器/计数器四种工作方式的初始化的步骤一样,如下: 1. 确定工作方式、操作模式、启动控制方式--写入TMOD寄存器。

2. 设置定时或计数器初值--可直接将初值写入TH0、TL0或TH1、TL1中。16位计

数初值必须分两次写入对应的计数器。

3. 根据要求是否采用中断方式--直接对IE位赋值。开放中断时,对应位置1;采

取程序查询方式IE位应清0进行中断屏蔽。

4. 启动定时器工作--可使用Tri=1启动。若第一步设置为软启动,即GATE设置为

0时,以上指令执行后,定时器即可开始工作。若GATE设置为1时,还必须由外部中断引脚INTi共同控制,只有当INTi引脚为高电平时,以上指令执行后定时器方可启动工作。定时器一旦启动就按规定的方式定时或计数。

2) 计数初值的计算

不同的工作方式其计数初值均不相同,若设最大计数值为M,各工作方式下的M值为:

方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:M=28=256

因为MCS51单片机的两个定时器均为加1计数器,当加到最大值时(00H或0000H)时产生溢出,将TF位置1,可发出溢出中断,因此计数器初值的计算式为:

微机原理课程设计书,c51单片机实训

X=M-计数值

计数工作方式时,计数脉冲由外部引入,是对外部脉冲进行计数,因此计数值根据要求确定。其计数初值:X=M-计数值

定时器工作方式时,因计数脉冲由内部供给,是对机器周期进行计数,故计数脉冲频率为:fcont=fosc*1/12,计数周期T=1/fcont=12/fosc ,定时工作方式的计数初值X等于:X=M-计数值=M-t/T=M-(fosc*t)/12

fosc为振荡器振荡频率,t为要求定时的时间。 3.2.2.2工作方式 1) 工作方式0

当M1、MO为00时,定时器/计数器被选为工作方式0。在模式0,计数器0及计数器1做13位的计时,其内含有两个8位的计时寄存器,分别为TL0及TH0(计数器0),TLl及THl(计数器1),这两组计时寄存器特性及使用方法一样,以下我们以计数器0为例来做说明。

方式0由TL1的低5位和TH1的8位构成13位计数器(TL1的高3位无效)。 在一般的应用中,通常使GATE=0,从而由TR0的状态控制T0的开闭:TR0=1,打开T0;TR0=0,关闭T0。在特殊的应用场合,例如利用定时器测量接于INT0引脚上的外部脉冲高电平的宽度时,可使GATE=1,TR0=1。当外部脉冲出现上升沿,亦即INT0由0变1电平时,启动T0定时,测量开始;一旦外部脉冲出现下降沿,亦即INT0由l变O时就关闭了T0。

定时器启动后,定时或计数脉冲加到TL0的低5位,从预先设置的初值(时间常数)开始不断增1。TL0计满后,向TH0进位。当TL0和TH0都计满之后,置位T0的定时器回零标志TF0,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。如需进一步定时/计数,需用指令重置时间常数。

微机原理课程设计书,c51单片机实训

在方式0下,当为计数工作方式时,计数值的范围是: 1~8192(213) 。当某单片机系统的外接晶振频率为6MHz,该系统的最小定时时间为:2 s;最大定时时间为:16384 s。 2) 工作方式1:

方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成。与工作方式0基本相同,区别仅在于工作方式1的计数器是16位计数器,从而比工作方式0有更宽的定时/计数范围。

当为计数工作方式时,计数值的范围是:1~65536(216);当为定时工作方式时,当某单片机系统的外部晶振频率为6MHz,则最小定时时间为: 2 s;最大定时时间为:131072 s≈131ms 3) 工作方式2

8位自动重装入时间常数方式。当计数溢出后,不是像前两种工作方式那样通过软件方法,而是由预置寄存器TH以硬件方法自动给计数器TL重新加载。变软件加载为硬件加载。

初始化时,8位计数初值同时装入TL0和TH0中。当TL0计数溢出时,置位TF0,同时把保存在预置寄存器TH0中的计数初值自动加载TL0,然后TL0重新计数。如此重复不止。这不但省去了用户程序中的重装指令,而且也有利于提高定时精度。但这种工作方式下是8位计数结构,计数值有限,最大只能到256。

这种自动重新加载工作方式非常适用于循环定时或循环计数应用,例如用于产生固定脉宽的脉冲,此外还可以作串行数据通信的波特率发送器使用。

由于方式2具有自动重装载功能,因此计数初值只需设置一次,以后不再需要软件重置。 4) 工作方式3

2个8位方式。工作方式3只适用于定时器0。如果使定时器1为工作方式3,则定时器1将处于关闭状态。

当T0为工作方式3时,TH0和TL0分成2个独立的8位计数器。其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零标志和中断源。TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源,

通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器(见1.4),TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。

微机原理课程设计书,c51单片机实训

3.3 LED显示字形表和字位表 字形表

字位表 3.4程序设计流程图

图1.1 图1.2

微机原理课程设计书,c51单片机实训

3.5软件程序:

#include<reg52.h> #include<absacc.h>

#define uchar unsigned char #define uint unsigned int #define led_zx XBYTE[0xffdc] #define led_zw XBYTE[0xffdd] uchar code

SEG_TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar Count = 0; uchar Round=0; uint i = 0;

void Delay(int y) {

uint i,j;

for(i=0; i<y; i++) for(j=0; j<20; j++); }

void Time0_Init() {

TMOD = 0x05;

TH0 = (65536-65535)/256; TL0 = (65536-65535)%256; TR0 = 1; //IE =0x82; }

void Time0_Int() interrupt 1 {

微机原理课程设计书,c51单片机实训

TH0 =(65536-65535)/256; // 65ms定时 TL0 =(65536-65535)%256; //TR0=1; Count++; if (i>10000) {

i=i/10; Round++; } }

void Main(void) {

uint j;

Time0_Init(); IE = 0x82; while(1) {

if(Count == 1) {

Count = 0; i=i+1; }

if((i>0)&&(i<10)&&(Round==0)) {

led_zx=SEG_TAB[i%10]; led_zw=0x01; }

if((i>9)&&(i<100)&&(Round==0)) {

led_zx=SEG_TAB[i%10]; led_zw=1; Delay(1);

led_zx=SEG_TAB[(i/10)%10]; led_zw=2;

微机原理课程设计书,c51单片机实训

Delay(1); }

if((i>99)&&(i<1000)&&(Round==0)) {

led_zx=SEG_TAB[i%10]; led_zw=1; Delay(1);

led_zx=SEG_TAB[(i/10)%10]; led_zw=2; Delay(1);

led_zx=SEG_TAB[(i/100)%10]; led_zw=4; Delay(1); }

if((i>999)&&(i<10000)&&(Round==0)) {

led_zx=SEG_TAB[i%10]; led_zw=0x01; Delay(2);

led_zx=SEG_TAB[(i/10)%10]; led_zw=0x02; Delay(2);

led_zx=SEG_TAB[(i/100)%10]; led_zw=0x04; Delay(2);

led_zx=SEG_TAB[(i/10/10/10)%10]; led_zw=0x08; Delay(2); }

if((0<Round)&&(Round<10)) {

led_zx=SEG_TAB[i%10]; led_zw=0x01; Delay(2);

led_zx=SEG_TAB[(i/10)%10];

本文来源:https://www.bwwdw.com/article/4kpi.html

Top