重庆大学单片机实验报告

  • 格式:pdf
  • 大小:656.02 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

char code reserve [3] _at_ 0x3b; //保留0x3b开始的3个字节
/***延时函数***/
void delayms(unsigned int ms)
{
unsigned char k;
while(ms--)
{
for(k = 0; k < 114; k++);
}
}
/***主函数***/
1. 实验内容分析:这里用了一个比较简单的实验方案,第一次让最低位亮,这
里使亮度保持 300ms;第二次让第一位 LED 灯灭同时让第 2 位 LED 灯亮,保
持 300ms;依次类推,直到第 7 位 LED 灯亮起,这样就完成一个循环。
2. 通过 keil 软件进行编程,编写的程序如下:
#include <reg52.h>
五、实验体会:
这个实验中,主要是子程序的使用,这里由于每次让某一位 LED 灯点亮之后需要使其亮度 保持 300ms,如果每次都来写这个 300ms 的延时程序,那么程序将会很长且使程序的可读性降 低,使用子程序后,每次只需要调用这个程序,就会缩短写程序的时间。
-6-
实验名称
《单片机原理与接口技术》实验报告
实验中,用到了 89c51 单片机中的定时器和中断相关的知识,通过实际操作观察到 相关的现象,加深了对理论知识的学习,同时还锻炼了动手能力。
பைடு நூலகம்-9-
实验名称
《单片机原理与接口技术》实验报告
实验四: LED 数码管显示技术
实验时间
2014 年 12 月 16 日
姓名
学号
指导教师
一、实验目的: 1. 掌握7段数码显示管的工作原理及接口电路设计; 2. 进一步熟悉定时器、中断初始化的编程方法,了解定时器应用实时程序的设计与 调试技巧。
/***延时函数***/
void delayms(unsigned int ms)
{
unsigned char k;
while(ms--)
{
for(k = 0; k < 114; k++);
}
}
/***主函数***/
void main()
{
P0 = 0xff;
//是P0端口控制的LED灯全灭
delayms(800);
TF1位:T1的溢出中断标志位。当T1计数溢出时由硬件自动置1,并向CPU申请中断;
-8-
在CPU响应中断进入终端服务子程序时,有硬件自动清0,也可以用软件使TF1清0。TMOD
和TCON寄存器在复位时每一位均清零。
2. 上机实验内容
设89C51单片机的时钟频率为11.0592M,编程使P1.0所接的低电平发光二级管每
实验三:定时 /计数器及中断
实验时间
2014 年 12 月 16 日
姓名
学号
指导教师
一、实验目的: 1. 掌握定时器/计数器的工作原理及应用; 2. 掌握中断服务子程序的编写方法; 3. 学习用定时/计数器的初始化编程。
二、实验内容: 1. 实验原理
MCS-51系列中51子系列有两个16位的可编程定时/计数器T0和T1。定时/计数器T0、T1 的结构如下图所示:
//使第2位点亮,延时300ms
P2 = 0xf7;
-5-
delayms(300);
//使第3位点亮,延时300ms
P2 = 0xef;
delayms(300);
//使第4位点亮,延时300ms
P2 = 0xdf;
delayms(300);
//使第5位点亮,延时300ms
P2 = 0xbf;
delayms(300);
//使第6位点亮,延时300ms
P2 = 0x7f;
delayms(300);
//使第7位点亮,延时300ms
}
}
3. 编程完成之后生成.hex 文件,将这个文件导入到 MEFlash 中烧录,通过单
片机实验议观察现象
四、实验结果记录:
使用 MEFlash 烧录之后,在单片机实验仪上看到,由 P2 端口控制的 LED 灯低 位最先点亮,300ms 后,第 0 位 LED 熄灭同时第 1 位 LED 灯点亮,依此类推,直 到第 7 位 LED 亮起,这样完成一个循环,下一次循环又从最低位开始点亮。
void main()
{
P0 = 0xff;
//初始化端口
P2 = 0xff;
while(1)
{
//LED显示
P2 = 0xfe;
delayms(300);
//使第0位点亮,延时300ms;
P2 = 0xfd;
delayms(300);
//使第1位点亮,延时300ms
P2 = 0xfb;
delayms(300);
重庆大学 学生实验报告
实验课程名称 单片机原理与接口技术
开课实验室
A 新红楼 408
学院 XXXXXX 年级 XXXXX 专业班 XXXXXX
学生姓名 XXXXX 学号 XXXXXXXX
开课时间 2014 至 2015 学年第 一 学期
总成绩 教师签名
-1-
实验名称
《单片机原理与接口技术》实验报告
当定时/计数器用于定时时,加法计数器对内部机器周期Tcy(1个机器周期包含12个振 荡周期)进行计数。由于机器周期时间是定值,所以对Tcy的计数就是定时,如Tcy=1μs, 计数100,定时100μs。当定时/计数器用于计数时,加法计数器对单片机芯片引脚T0(P3.4) 或T1(P3.5)上的负跳变(1→0)脉冲信号进行计数。每来一个脉冲,加法计数器加1。当 由全1再加1变成全0时产生溢出,使溢出位TF0或TF1置位,如中断允许,则向CPU提出定时 /计数中断,如中断不允许,则只有通过查询方式使用溢出位。
0.4ms闪动一次,也就是每过0.2ms灭一次,再过0.2ms亮一次。
3. 实验过程
1) 利用keil软件编程如下:
#include<reg.52h>
void main()
{
P2=0xff;
TMOD=0x01;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
TR0=1;
数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。数码管显示 的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度 将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。若显示的时间间隔过长的话, 数码管显示时将产生闪烁现象。所以,在调整显示的时间间隔时,既要考虑到显示时数码 管的亮度,又要数码管显示时不产生闪烁现象。
时,是TF0置1,同时将TH0中的值装入TL0中,重新开始计数,初值X=28-N。 11:方式3,对T0分成TL0和TH0两个互相独立的8位计数器;T1停止工作。计数器的最
大计数值,初值的计算与方式2完全相同。 C/T位:C/T=1,为计数器方式;C/T=0,为定时器方式。 GATE:运行控制位,用于确定INT0和INT1管脚是否参与对T0和T1的计数与否控制。 GATE=0,只要TCON中的TR0(或TR1)=1,即允许开始计数。 GATE=1,不仅要TR0(或TR1)=1,还需要INT0和INT1管脚为高电平,才允许开始计
TF0位:T0的溢出中断标志位。当T0计数溢出时由硬件自动置1,并向CPU申请中断; 在CPU响应中断进入终端服务子程序时,有硬件自动清0,也可以用软件使TF0清0。
TR1位:T1的运行控制位。TR1=1,启动T1计数;TR1=0,停止T1计数。在程序中可用 指令“SETB TR1”使TR1位置1,定时器T1便开始计数。
1. 通过本实验掌握C语言子程序的编写、调试和调用方法; 2. 进一步掌握Keil C51软件的使用; 3. 掌握编程/ISP 下载功能的使用。
二、实验设备:
计算机、单片机开发实验议
三、实验内容:
编写程序,实现 P2 端口的 LED 灯上的流水灯实验设计,并烧录,观察和记录实 验现象。
三、实验过程:
二、实验内容: 1. 数码管动态扫描原理介绍 从数码管动态扫描显示电路的原理可知,对于8位数码动态扫描显示需要由
两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码; 另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此,在同 一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同的字符。若要 各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。即在某一时刻,只 让某一位的位选线处于导通状态,而其他各位的位选线处于关闭状态。同时,段线上输出 相应位要显示字2符的字型码。这样,在同一时刻,只有选通的那一位显示出字符,而其他 各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。 虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其他各位熄灭,但由 于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼 的视觉印象就会是连续稳定地显示。
1. 启动 Keil 软件,窗口如下图所示
2. 新建工程,选择单片机型号 89C2,并新建编辑源文件到工程中,如下 图所示:
-2-
3. 编写 LED 程序,先使得八个 LED 灯全灭,再使它们全部点亮,源程序
如下:
#include <reg52.h>
char code reserve [3] _at_ 0x3b; //保留0x3b开始的3个字节
1) 特殊功能寄存器TMOD 特殊功能寄存器TMOD用于设定定时/计数器T0和T1的工作方式,它的字节地址为89H, 如下如图所示:
-7-
其中: M1、M0的状态组合用于定时/计数器四种工作方式的选择: 00:方式0,由TH0的8位和TL0的低5位组成一个13位计数器。如计数值为N,则置入的
初值X=213-N。 01:方式1,16位计数器,初值X=216-N。 10:方式2,自动恢复初值(初始值自动重新恢复)的8位计数器。当TL0加1产生溢出
实验一:简单程序设计
实验时间
2014 年 12 月 15 日
姓名
学号
指导教师
一、实验目的:
1. 通过本实验学习简单的51系列单片机的C语言程序的编写和调试方法;
2. 初步掌握Keil C51软件的集成环境的使用方法。
二、实验内容:
编写关于 LED 灯的任意程序,熟悉 Keil 软件的使用方法。
三、实验过程:
利用 MEFlash 软件烧录后,在单片机实验议上看到,P2 控制的 LED 灯始终保持点 亮,而程序要求的是 0.4ms 闪动一次,这是由于人眼视觉暂留时间越位 0.02s~0.5s 之间, 而实验的是 0.4ms,远低于人眼视觉暂留时间,所有,人眼看不到 LED 闪动,而实际是 在闪动的。 五、实验体会:
//开定时器0
EA=1;
//开中断
ET0=1;
while(1);
}
void timer0()interupt 1
{
TH0=(65536-200)/256;
TL0=(65536-200)%256; //重新写计数初值
P2=!P2;
//P2取反,闪烁
}
2) 生成.hex,利用 MEFlash 进行烧录,连接单片机实验议,然后观察现象 四、实验结果记录:
它由加法计数器、方式寄存器TMOD、控制寄存器TCON等组成。其中T0由特殊功能寄 存器TH0和TL0构成;T1由特殊功能寄存器TH1和TL1构成;TH0、TL0是定时/计数器T0加 法计数器的高8位和低8位,TH1、TL1是定时/计数器T1加法计数器的高8位和低8位。方式寄 存器TMOD用于设定定时/计数器T0和T1的工作方式,控制寄存器TCON用于对定时/计数器 的启动、停止进行控制。
五、实验体会:
通过本次实验,我对 Keil 软件的使用和利用 MEFlash 进行编程有 了一定的了解,对以后的实验及理论课程的学习奠定了基础。
-4-
《单片机原理与接口技术》实验报告
实验二:子程序设计以及编程功能 实验名称
的使用
实验时间
2014 年 12 月 15 日
姓名
学号
指导教师
一、实验目的:
//延时800ms
while(1)
{
P0 = 0x00;
//再使P0端口控制的LED灯点亮
}
}
4. 编译、链接生成.hex 文件,利用 MEFlash 编程,再实验仪上观察 LED
灯亮灭现象。
-3-
四、实验结果记录:
在实验仪上观察到与 P0 端口相连的八个 LED 灯先灭掉,经过 800ms 后又重新点亮,之后一直保持点亮状态。
数。 2) 特殊功能寄存器TCON 特殊功能寄存器TCON寄存器用于定时器的计数控制和中断标志。它的位地址为(H),
字节地址为88H,如下图所示:
T R0位:T0的运行控制位。TR0=1,启动T0计数;TR0=0,停止T0计数。在程序中可 用指令“SETB TR0”使TR0位置1,定时器T0便开始计数。