单片机定时器实验报告
- 格式:docx
- 大小:18.53 KB
- 文档页数:10
一、实验目的1. 理解单片机定时器的工作原理和功能。
2. 掌握单片机定时器的编程方法,包括初始化、设置定时时间、启动定时器等。
3. 学会使用定时器实现定时功能,并通过实验验证其效果。
二、实验器材1. 单片机实验板2. 连接线3. 51单片机4. 计时器5. 示波器6. 电脑7. Keil软件三、实验原理定时器是单片机的一种重要外设,用于实现定时功能。
51单片机内部有两个定时器,分别为定时器0和定时器1。
定时器的工作原理是通过定时器计数器对机器周期进行计数,当计数器达到设定值时,定时器溢出,并产生中断请求。
定时器0和定时器1都具有四种工作模式,分别为:1. 模式0:13位定时器/计数器2. 模式1:16位定时器/计数器3. 模式2:8位自动重装模式4. 模式3:两个8位计数器本实验采用定时器0工作在模式1,实现50ms的定时功能。
四、实验步骤1. 将单片机实验板连接到电脑,并启动Keil软件。
2. 创建一个新的项目,并添加51单片机头文件(reg51.h)。
3. 编写定时器初始化函数,设置定时器0工作在模式1,并设置定时时间为50ms。
4. 编写定时器中断服务函数,用于处理定时器溢出事件。
5. 编写主函数,设置定时器中断,并启动定时器。
6. 编译并下载程序到单片机实验板。
7. 使用示波器观察定时器0的溢出信号。
五、实验代码```c#include <reg51.h>#define TIMER0_MODE1 0x01// 定时器0初始化函数void Timer0_Init() {TMOD &= 0xF0; // 清除定时器0模式位TMOD |= TIMER0_MODE1; // 设置定时器0工作在模式1TH0 = 0xFC; // 设置定时器0高8位初值TL0 = 0x18; // 设置定时器0低8位初值ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}// 定时器0中断服务函数void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新加载定时器0高8位初值TL0 = 0x18; // 重新加载定时器0低8位初值// ... (其他处理)}void main() {Timer0_Init(); // 初始化定时器0while(1) {// ... (其他处理)}}```六、实验结果与分析1. 编译并下载程序到单片机实验板,使用示波器观察定时器0的溢出信号,可以看到定时器0每隔50ms产生一个溢出信号。
单片机定时器实验报告
单片机定时器实验报告
简介
•实验名称:单片机定时器实验
•实验目的:掌握单片机中定时器的工作原理及使用方法•实验设备:单片机开发板、电源等
实验内容
1.单片机定时器的基本概念和原理
2.单片机定时器的分类和特点
3.实验步骤和流程
–步骤1:搭建实验电路
–步骤2:编写单片机程序
–步骤3:下载程序到单片机
–步骤4:观察定时器的工作情况
4.实验结果和分析
实验结果
•在实验过程中,我们成功搭建了单片机定时器实验电路,并编写了相应的程序。
通过下载程序到单片机,观察到定时器按照预设
的时间间隔产生中断,并执行相应的任务。
•实验结果表明,我们掌握了单片机定时器的使用方法,可以实现定时功能。
实验分析
•单片机定时器是一种重要的计时和控制设备,广泛应用于各种电子设备中。
•通过本次实验,我们深入了解了单片机定时器的工作原理和使用方法,对于日后的电子设计和开发有着重要的意义。
实验总结
•通过本次实验,我们学习了单片机定时器的基本知识,掌握了单片机定时器的使用方法,并成功实现了定时功能。
•在实验过程中,我们发现了一些问题,并通过调试和修改程序进行了解决。
这对我们提高了动手实践和问题解决能力有很大帮助。
•通过本次实验,我们对于单片机定时器有了更深入的了解,为今后的学习和应用打下了坚实的基础。
参考资料
•《单片机原理与应用》
•单片机实验教材及课件。
单片机实习报告——定时器一、实习目的通过本次单片机实习,使我对单片机的工作原理和应用有更深入的了解,特别是定时器的工作原理和编程方法。
同时,培养我动手实践能力和团队协作能力,提高我在实际工程中的应用能力。
二、实习内容本次实习主要分为两个部分:定时器的原理学习和定时器的应用实践。
在原理学习部分,我通过阅读相关资料和教材,对定时器的工作原理、工作模式和编程方法有了深入的了解。
在应用实践部分,我参与了团队的项目,通过实际操作,对定时器的应用有了更直观的认识。
三、实习过程1. 定时器原理学习在定时器原理学习部分,我首先了解了定时器的基本概念,定时器是一种能够根据设定的时间间隔产生中断的硬件设备。
然后,我学习了定时器的工作原理,包括定时器的工作模式、计数器、控制寄存器等。
最后,我掌握了定时器的编程方法,通过编写程序实现定时器的定时功能。
2. 定时器应用实践在定时器应用实践部分,我参与了团队的项目。
我们选择了一个简单的应用场景,利用定时器实现一个周期性的信号输出。
我负责编写定时器的程序,设置定时器的工作模式和计数器值,实现定时器的定时功能。
同时,我还参与了团队的讨论,提出了改进意见和解决方案。
四、实习收获通过本次实习,我对定时器的工作原理和编程方法有了更深入的了解,掌握了定时器的应用方法。
同时,我在实际操作中培养了动手实践能力,提高了团队协作能力。
此外,我还学会了如何查阅相关资料和教材,提高了自己的自学能力。
五、实习总结本次实习让我对单片机的定时器功能有了更深入的了解,通过实际操作,使我对定时器的应用有了更直观的认识。
同时,本次实习培养了我的团队协作能力和动手实践能力,提高了我在实际工程中的应用能力。
在今后的学习和工作中,我将继续努力,不断提高自己的技能水平,为我国的电子科技事业做出贡献。
51单片机定时器实验实验内容:实验内容:(1)编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。
C语言程序#include<reg52.h>#define uint unsigned int#define ucahr unsigned charsbit FM=P0^0;void main(){TMOD=0x01;TH0=(65535-50000)/256;TH0=(65535-50000)%256;EA=1; //开总中断ET0=1; //开定时器0中断TR0=1;while(1);}void T0_time()interrupt 1 {TH0=(65535-50000)/256; TH0=(65535-50000)%256; FM=~FM;}汇编程序ORG 0000HJAMP MAINORG 000BHLJMP INT0_INTORG 0100HMIAN: SETB EASETB ET0AJMP $INT0_INT:MOV R2,#0FAHMOV R3,#0C8HDJNZ R3,$DJNZ R2,INT0_INTRETI(2)编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
#include<reg52.h>#define uint unsigned int#define ucahr unsigned charuint num,num1;sbit FM=P0^7;int shi,ge,a;void delay(uint);void shumaguan();unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; //共阳极数码管0-F编码表void main(){TMOD=0x01;TH0=(65535-50000)/256; TH0=(65535-50000)%256; EA=1; //开总中断ET0=1; //开定时器0中断TR0=1;while(1){shumaguan();}}void T0_time()interrupt 1 {TH0=(65535-50000)/256; TH0=(65535-50000)%256;num1++;if(num1==10) {num1=0;num++;shi=num/10;ge=num%10;if(num==100) {num=0;}}}void shumaguan() {P3=0x01;P2=table[shi];delay(5);P3=0x02;P2=table[ge]; delay(5);void zuoyi(){a=~P3;a=a<<1;P3=~a;if(P3==0xfb){P3=0xfe;}}void delay(uint x) {int i,j;for(i=0;i<x;i++)for(j=0;j<110;j++);}(3)编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms 使两位数码管从00、01、02……98、99每间隔500ms加1显示。
单片机定时器实验报告篇一:单片机实验报告——定时器实验四定时器实验自动化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,0x7f,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。
单片机定时器-计数器实验总结单片机定时器/计数器实验总结篇一:单片机实验之定时器计数器应用实验一一、实验目的1、掌握定时器/计数器定时功能的使用方法。
2、掌握定时器/计数器的中断、查询使用方法。
3、掌握Prteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、设计要求1、用Prteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P1.0口线上接示波器观察波形。
2、用Prteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P1.1口线上接示波器观察波形。
三、电路原理图六、实验总结通过这次实验,对定时器/计数器的查询工作方式有了比较深刻的理解,并能熟练运用。
掌握定时器/计数器的中断、查询使用方法。
对于思考题能够运用三种不同思路进行编程。
七、思考题1、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波。
答:程序见程序清单。
四、实验程序流程框图和程序清单1、以查询方式工作,在P1.0 RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #02H MV TH0, #9CH MV TL0, #9CH SETB TR0 LP: JNB TF0, LP CLR TF0 CPL P1.0 AJMP LP END2、以中断方式工作,在P1.1 RG 0000H START: LJMP MAIN RG 000BH LJMP TTC0 RG 0100H MAIN: MV TMD, #02H MV TH0, #88H MV TL0, #88H SETB EA SETB ET0 SETB TR0 HERE: LJMP HERE RG 0200H TTC0: CPL P1.1 RETI END3、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波 RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #20H MV TH1, #38H MV TL1, #38H MV TH0, #0F6H MV TL0, #14H LP1: SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CLR TR1 CPL P1.0 SETB TR0 LP3: JNB TF0, LP3 MV TH0, #0F6H MV TL0, #14H CLR TF0 CLR TR0 CPL P1.0 LJMP LP1 END RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #20H MV TH1, #38H MV TL1, #38H MV TH0, #0F0H MV TL0, #0CH SETB TR0 LP1: SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CLR TR1 CPL P1.0 SETB TR0 LP3: JNB TF0, LP3 CLR TF0 MV TH0, #0F0H MV TL0, #0CH CPL P1.0 LJMP LP1 END RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #00H LP1: MV TH1, #0F9H MV TL1, #18H SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CPL P1.0 MV TH1, #0F6H MV TL1, #14H LP3: JNB TF1, LP3 CLR TF1 CPL P1.0 LJMP LP1 END五、实验结果(波形图)篇二:单片机实验-定时器计数器应用实验一定时器/计数器应用实验一一、实验目的和要求1、掌握定时器/计数器定时功能的使用方法。
批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的1、掌握51单片机定时器/计数器的基本结构。
2、掌握定时器/计数器的原理及编程方法。
二、实验仪器1、装有keil软件的电脑2、单片机开发板三、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。
若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。
方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。
四、实验内容1、计算计数初值单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。
设待求计数初值为x,则:(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。
二进制表示为:00010101 10100000B。
十六进制为:高八位(15H),低八位(A0H)。
2、设置相关控制寄存器TMOD设置为xxxx0001B3、程序设计ORG 0000HAJMP MAINORG 30HMAIN: MOV P1,#0FFH ;关闭所有灯ANL TMOD,#0F0H ;置定时器0工作方式1ORL TMOD,#01H ;不影响T1的工作MOV TH0,#15H ;设置计数初始值MOV TL0,#0A0HSETB EA ;CPU开中断SETB ET0 ;定时器0开中断SETB TR0 ;定时器开始运行LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTPAJMP LOOP ;然跳转到LOOP处运行INTP: MOV TH0,#15H ;重新设置计数初值MOV TL0,#0A0HCPL P1.0 ;输出取反AJMP LOOPEND AJMP LOOPEND4、实验仿真新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。
一、实验目的1. 理解中断和定时器的基本概念及工作原理。
2. 掌握51单片机中断系统和定时器的配置方法。
3. 学会使用中断和定时器实现特定功能,如延时、计数等。
4. 培养动手实践能力和问题解决能力。
二、实验原理中断是计算机系统中的一种机制,允许CPU在执行程序过程中,暂停当前程序,转去执行另一个具有更高优先级的程序。
51单片机具有5个中断源,包括两个外部中断(INT0、INT1)、两个定时器中断(定时器0、定时器1)和一个串行口中断。
定时器是51单片机内部的一种计数器,可以用于产生定时中断或实现定时功能。
51单片机有两个定时器,即定时器0和定时器1。
定时器可以工作在模式0、模式1、模式2和模式3。
三、实验内容及步骤1. 实验内容一:外部中断实验(1)实验目的:掌握外部中断的使用方法,实现按键控制LED灯的亮灭。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置外部中断,实现按键控制LED灯的亮灭。
2. 实验内容二:定时器中断实验(1)实验目的:掌握定时器中断的使用方法,实现LED灯闪烁。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断,实现LED灯闪烁。
3. 实验内容三:定时器与外部中断结合实验(1)实验目的:掌握定时器与外部中断结合使用的方法,实现按键控制LED灯闪烁频率。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断和外部中断,实现按键控制LED灯闪烁频率。
四、实验结果与分析1. 外部中断实验:成功实现了按键控制LED灯的亮灭。
当按下按键时,LED灯亮;松开按键时,LED灯灭。
2. 定时器中断实验:成功实现了LED灯闪烁。
LED灯每隔一定时间闪烁一次,闪烁频率可调。
3. 定时器与外部中断结合实验:成功实现了按键控制LED灯闪烁频率。
实验三 定时器实验 ——循环彩灯实验1、 实验目的1. 学习8051内部计数器的使用和编程方法。
2. 进一步掌握中断处理程序的编写方法。
2、 实验原理1. 定时常数的确定定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。
比如实验中时钟频率为12MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.05秒产生一次中断,CPU响应中断后将RO中计数值减一,令RO=0AH,即可实现0.5秒延时。
初值=65536-500002. 初始化程序包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中。
3. 设计中断服务程序和主程序中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。
主程序则用来控制发光二极管按要求顺序燃灭。
3、 实验要求由8051内部定时器1按方式1工作,即作为16位定时器使用,每0.05秒钟T1溢出中断一次。
P1口的P1.0~P1.7分别接发光二极管的L1~L8。
要求编写程序模拟一循环彩灯。
彩灯变化花样可自行设计。
建议变化花样为:L1、L2、…L8依次点亮;L1、L2、…L8依次熄灭;L1、L2、…L8全亮、全灭。
各时序间隔为0.5秒。
让发光二极管按以上规律循环显示下去。
4、 实验连线P1.0~P1.7分别接发光二极管L1~L8即可。
5、 程序org 0000hLjmp mainorg 000BhLjmp INTTorg 0100hmain:mov sp,#60h /*设置堆栈指针mov TMOD,#01h /*设置TMOD,仅由TRx控制中断,定时器模式,工作方式1mov TH0,#3CHMOV TL0,#0B0H /*设置初值x=65536-50000 (12M晶振)SETB EA /*开中断SETB ET0 /*开定时器中断T0SETB TR0 /*启动定时器MOV R1,#8 /*中断子程序工作方式1的工作次数MOV R2,#8 /*中断子程序工作方式2的工作次数MOV R3,#1 /*中断子程序工作方式3的工作次数MOV R0,#0AH /*延时次数(产生中断的次数)MOV A,#0FFHWAIT1:AJMP WAIT1INTT:MOV TH0,#3CHMOV TL0,#0B0H /*计数器赋初值DJNZ R0,RETT /*R0减1后判断延时的次数是否足够,足够顺序执行,不足够跳中断返回CJNE R1,#0,INTT1 /*判断彩灯工作方式1工作是否完毕,完毕顺序执行下一种方式,未完毕跳转继续执行此种方式CJNE R2,#0,INTT2 /*判断彩灯工作方式2工作是否完毕,完毕顺序执行下一种方式,未完毕跳转继续执行此种方式CJNE R3,#0,INTT3 /*判断彩灯工作方式3工作是否完毕,完毕顺序执行下一种方式,未完毕跳转继续执行此种方式 JMP INTT4 /*跳转执行第4种方式INTT1:MOV R0,#0AH /*重新向延时次数计数器赋初值CLR C /*C清零RLC A /*带进位左循环移位,低位移入0,即LED相继点亮(低电平亮)DEC R1 /*工作次数减1JMP RETT /*跳中断返回INTT2:MOV R0,#0AHSETB C /*C置1RRC A /*带进位右循环移位,高位移入1,即LED相继熄灭(低电平灭)DEC R2JMP RETTINTT3:MOV R0,#0AHMOV A,#0 /*8位LED灯全部点亮DEC R3JMP RETTINTT4:MOV R0,#0AHMOV P1,#0FFH /*8位LED灯全部熄灭MOV R1,#8MOV R2,#8MOV R3,#1MOV R0,#0AHMOV A,#0FFH /*重新装入相应初值,循环执行彩灯的四种工作方式JMP INTTRETT:MOV P1,A /*输出彩灯的各种状态RETIEND6、 结论通过本次试验掌握了8051内部计数器的使用和编程方法。
单片机定时器的应用proteus仿真实验报告总结一、实验目的
本次实验旨在通过使用Proteus仿真软件,掌握单片机定时器的应用,了解定时器的工作原理和使用方法。
二、实验原理
单片机定时器是一种常用的计时和延时控制器,它可以在特定时间内
产生一个周期性的信号。
单片机定时器通常由一个计数器和一个比较
器组成。
计数器会不断计数,当计数值达到设定值后,比较器会发出
一个触发信号。
通过对比较器输出信号进行处理,可以实现各种延时
和周期性控制。
三、实验材料
1. Proteus仿真软件
2. 单片机模块
3. LED灯
4. 电阻
5. 电容
四、实验步骤
1. 打开Proteus软件,并新建一个电路图。
2. 在电路图中添加单片机模块、LED灯、电阻和电容等元件。
3. 连接电路图中各元件之间的线路。
4. 设置单片机定时器参数,并编写程序代码。
5. 进行仿真测试,并记录测试结果。
五、实验结果分析
在本次实验中,我们成功地使用了Proteus仿真软件进行了单片机定
时器的应用测试。
通过设置单片机定时器参数和编写程序代码,我们
成功地实现了对LED灯的周期性控制,达到了预期的效果。
六、实验总结
通过本次实验,我们深入了解了单片机定时器的工作原理和应用方法,并掌握了使用Proteus仿真软件进行单片机定时器测试的技能。
这对
于我们今后的学习和工作都具有很大的帮助。
单片机定时器实验报告
篇一:单片机实验报告——定时器
实验四定时器实验
自动化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单片机定时器/计数器实验
实例二----航标灯控制器
一、实验目的
1.掌握AT89C51单片机定时器/计数器工作方式的设定;
2.掌握AT89C51单片机定时器/计数器程序的编写方法;
3.熟知单片机在航标灯控制器中的应用;
4.进一步练习单片机仿真器的使用.
二、实验设备
1.PC机(WINDOWS操作系统);
2.HF-MC01实验实训开发综合装置
3、伟福6000软件模拟器。
4. 伟福硬件仿真器
三、实验内容
1.认识整个航标灯控制系统的组成及组成系统的器件;
2.编程程序:
具体要求是:AT89C51的P0口作为输出(P0.0--P0.7),连接8路发光二极管L0--L7;编写软件使L0--L7亮50ms, 灭1s;周而复始。
4.仿真运行
四、实验方法步骤
1.电路设计
系统原理图参见图
4-1.
整个系统由24个器件组成,单片机的型号为ATMEL公司生产的AT89C51,其片内集成有FLASE型程序存储器,完全兼
容51系列单片机;系统使用12M晶振;复位电路采用常规的上电.手动复位电路.由于只使用片内程序存储器,/EA接+5V;P0口作为输出(P0.0--P0.7),连接8路发光二极管L0--L7,低电平驱动.
2.运行WAVE
方法可参见实验一内容
3.仿真器设置
方法可参见实验一内容
4.编写程序
自己按本实验要求编写程序,并完成程序的录入(SY4.ASM)。
(注意:录入源程序必须使用西文输入法, 保存文件时必须加上扩展名“.ASM”,并记录保存的文件夹路径。
)
5.对录入的源程序SY4.ASM进行编译
编译步骤为:点击“项目———全部编译”
若编译完成,在左下角的“信息窗口”将显示生成两个文件SY4.HEX和SY4.BIN。
若源程序在格式上有错误,则在“信息窗口”中出现错误提示,请检查源程序,修改后再进行编译,直至编译成功。
6. 硬件仿真运行接线方法
(1).将仿真器的仿真插头插入A单元的AT89C51插座;
(2).将仿真器通过串行电缆与计算机相连;
(3).将A单元的+5V.GND分别与Z单元的+5V.GND相连;
(4).将仿真器电源接入并打开.
7.硬件仿真运行
点击“仿真器——仿真器设置”
仿真器设置:①点击“仿真器——仿真器设置——语言”,选择“伟福汇编器”“混合十、十六进制”;②点击仿真器设置下的“仿真器”,选择 S51/S、 POD8X5X、8751(或AT89C51);将“使用伟福软件模拟器”选项上的“√”去掉;
③并将“通信设置”下的“使用伟福软件模拟器”选项上的“√”去掉,在通讯设置中选择正确的串行端口;④按“好”确认
如果仿真器和仿真头设置正确,并且硬件连接没有错误,就会出现“硬件仿真”的对话框,并显示仿真器、仿真头的型号及仿真器的序列号。
表明仿真器初始化正确。
如果仿真器初始化过程中有错,软件就会再次出现仿真器设置对话框,这时应检查仿真器、仿着器的选择是否有错,硬件连接是否有错,检查纠正错误后,再次确认。
直至显示硬件仿真确认对话框。
观察A单元的八个发光二极管的发光情况,如果所观察到的现象不符合实验要求,则需检查并修改实验程序、检查硬件连接及仿真器设置是否正确。
五、实验报告要求
1.画出电路原理图
2.记录程序清单和执行结果。