单片机定时器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机定时器实验报告
篇一:单片机实验报告——定时器
实验四定时器实验
自动化121班 36 张礼
一.实验目的
掌握定时器的工作原理及四种工作方式,掌握定时器计数初始值的计算,掌握如何对定时器进行初始化,以及程序中如何使用定时器进行定时。
二.实验仪器
单片机开发板一套,计算机一台。
三.实验任务
编写程序,使用单片机开发板上8位共阴极数码管的其中一位来显示0~9这九个字符,先从“0”开始显示,数字依次递增,当显示完“9”这个字符后,又从“0”开始显示,循环往复,每1秒钟变换一个字符,1秒钟的定时时间必须由定时器T0(或T1)提供。
开发板上的8位共阴极数码管与单片机的输入输出端口P1的硬件接线如图4-1所示,单片机P1口的8条数据线通过J3端子同时连接到 2片74HC573D锁存器的输入端,数码管的各个同名端分别连接后再与锁存器U2的8个输出端相连,每一位数码管的位选端分别与锁存器U3的8个输出端相连。两片锁存器的输出使能端OE都恒接地,使得锁存器
的内部数据保持器输出端与锁存器的输出端保持接通。而U2的锁存使能端LE由P2.1控制,所
以P2.1是段锁存;U3的锁存使能端LE由P2.0控制,所以P2.0是位锁存。当锁存使能端为“1”时,则锁存器输入端的数据传送到输出端;当锁存使能端为“0”时,锁存器输入端的数据则不能传送到输出端;因此段码和位码通过锁存器分时输出。
汇编语言程序流程如图4-2:
四.实验步骤:
1.数码管的0~9的字型码表如下:
2.参考图4-2所给的程序流程图编写实验程序。(注:以下程序为两位60秒计数程序)
#include sbit wei=P2^0; sbit duan=P2^1;
char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x
7f,0x6f};
int i,j,k,num,shi,ge; void delay(int a) {
for(i=0;i void display(int shi,int ge){wei=1;P1=0xfe;wei=0;
duan=1;P1=table[shi];duan=0;
wei=1; delay(5);
P1=0xfd;wei=0; duan=1;P1=table[ge];duan=0; }
void main() {
TMOD=0x01;
TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; num=0; while(1) {
delay(5);
display(shi,ge); } }
void T0_time() interrupt 1 {
TH0=(65536-45872)/256; TL0=(65536-45872)%256; k++; if(k==20) { k=0; num++;
if(num==60)num=0; shi=num/10; ge=num%10; } }
3.实验接线,如图4-1。
用一条8芯的杜邦线将单片机的P1与开发板的J3端子相连;用2条单芯杜邦线将单片机的P2.0、P2.1分别与开发板的位锁存(A)和段锁存(B)相连;用1个跳线将J50的两个端子连接,用于给数码管提供电源。 4.上机调试、运行程序。 5.记录实验程序。 6.分析实验中出现的问题。7.独立完成实验报告。
五.实验总结:
通过本实验,我对定时器有了更深刻的理解。更熟练的应用定时器中断。并且我还额外扩展了本实验,实现了两位计数。收获甚多。
篇二:51单片机定时器实验
单片机技术与应用
实验报告
实验名称:定时器实验
姓名:
学号:
班级:
指导老师:
完成时间:XX年4月25日
由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒钟L4,L6亮,第四秒钟L5,L7亮,第五秒L0,L2,L4,L6亮,第六秒钟L1,L3,L5,L7亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L0,L2亮,然后L1,L3亮......一直循环下去。
二.实验目的
1.学习8031内部计数器的使用和编程方法。
2. 进一步掌握中断处理程序的编程方法。
三.实验框图
程序框图:
#include
int aa,num;
char code table[]={0xfa,0xf5,0xaf,0x5F,0xAA,0x55,0x00,0xFF };
void main()
{
num=0;
aa=0;
TMOD=0x10;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET1=1;
TR1=1;
while(1)
{
if(aa==20)
{
aa=0;
if(num==8)
num=0;
P1=table[num];
num++;
}
}
}
void timer0() interrupt 3
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
五.实验总结
通过这次实验,加深了定时器的使用,以及定时器设置方法的应用,懂得了中断对于程序的作用和定时时间的设定。在这次实验之前,我对中断的概念总是很模糊,不太明白中断子程序该在什么时候执行,直到自己动手用汇编编程,翻书仔细把书中关于中断的部分看了一遍,在结合书上的例题终于对中断有了个大致的了解。
篇三:实验四 AT89C51单片机定时器
实验四 AT89C51单片机定时器/计数器实验
实例二----航标灯控制器
一、实验目的