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