单片机定时器使用程序及实验

单片机定时器使用程序及实验
单片机定时器使用程序及实验

//实验一:定时器使用

//基本要求:

1.学会使用PROTEUS软件

2.学会单片机的定时器使用,验证定时器的功能

//较高要求

能用单片机完成一些较综合的程序编写,如:

1.二极管安设定的频率(1Hz)闪烁(用示波器观察)即输出方波

2.输出占空比为40%的方波。

3.改变波形占空比,通过按键实现。

//二极管安设定的频率(1KHz)闪烁(用示波器观察)即输出方波

//////////////////////////////////////定时1ms,晶振的频率为11.0592MHZ

#include

void main()

{

EA = 0;//EA=0 中断总禁止,禁止所有中断。

//EA=1 中断总允许,总允许后中断的禁止或允许由各中断源的中断允许控制位进行设里。

TMOD &= 0x0F;//

/*

TMOD的高四位对应定时器1,将高四位清零

1、GA TE 门控位

GATE=0以运行控制位TR启动定时器

GATE=1以外中断请求信号(/IMT0或/INT1)启动定时器

2、C/T 定时方式或计数方式选择位

C/T=0定时工作方式

C/T=l计数工作方式

3、M1、M0 工作方式选择位

M1、M0=00 方式0

M1、M0=01 方式1

M1、M0=10 方式2

M1、M0=11 方式3

*/

TMOD |= 0x10;

/*

TMOD的第五位置一

即选择工作方式一搞:16位定时器模式

M1、M0=01 方式1

*/

TH1 = 0xfc;//给定时器计数器的高八位赋值

TL1 = 0x66;//给定时器计数器的低八位赋值

/*

计算方法:

定时时间=(2exp16一计数初值)×晶振周期×12

*/

TR1 = 1;//定时器1开始计时

while(1)

{

while(TF1==1)

{

TF1=0;

TR1 = 0; //暂时停止定时器(在重新设置初值之前必须暂停)

TH1 = 0xfc;

TL1 = 0x66; //重新设置定时器初值,设置时间为1ms

TR1 = 1; //重新启动定时器

P3=~P3;

}

}

}

//二极管安设定的频率(1Hz)闪烁(用示波器观察)即输出方波

#include

void main()

{

unsigned int num=0;//

EA = 0;//EA=0 中断总禁止,禁止所有中断。

TMOD &= 0x0F;//

TMOD |= 0x10;/*

GATE=0以运行控制位TR启动定时器

C/T=0定时工作方式

M1、M0=01 方式1

*/

TH1 = 0xfc;//给定时器计数器的高八位赋值

TL1 = 0x66;//给定时器计数器的低八位赋值

/*

计算方法:

定时时间=(2exp16一计数初值)×晶振周期×12

采用11.0592MHz的晶振,定时时间1ms

*/

TR1 = 1;//定时器1开始计时

while(1)

{

while(TF1==1)

{

TF1=0;

TR1 = 0; //暂时停止定时器(在重新设置初值之前必须暂停)

TH1 = 0xfc;

TL1 = 0x66; //重新设置定时器初值,设置时间为1ms

TR1 = 1; //重新启动定时器

if(num==1000) //是否定时了1000次,1ms的时间

{

num=0;

P3=~P3; //P3取反

}

else

num++;

}

}

}

//2.输出占空比为40%的方波。

#include

void main()

{

unsigned int num=0;//

EA = 0;//EA=0 中断总禁止,禁止所有中断。

TMOD &= 0x0F;//

TMOD |= 0x10;/* GATE=0以运行控制位TR启动定时器

C/T=0定时工作方式

M1、M0=01 方式1 */

TH1 = 0xfc;//给定时器计数器的高八位赋值

TL1 = 0x66;//给定时器计数器的低八位赋值

/* 计算方法:

定时时间=(2exp16一计数初值)×晶振周期×12

采用11.0592MHz的晶振,定时时间1ms */

TR1 = 1;//定时器1开始计时

while(1)

{

while(TF1==1)

{

TF1=0;

TR1 = 0; //暂时停止定时器(在重新设置初值之前必须暂停)

TH1 = 0xfc;

TL1 = 0x66; //重新设置定时器初值,设置时间为1ms

TR1 = 1; //重新启动定时器

num++;

if(num<5) //是否定时了10次,10ms的时间

{

P3=1; //P3高电平

}

else

{

if(num==10)

{

num=0;

}

P3=0; //P3低电平

}

}

}

}

//改变波形占空比,通过按键实现。

#include

sbit key0 = P2^4;//减

sbit key1 = P2^5;//加

//////////////

void delay()

{

unsigned char i,j;

for(i=0;i<50;i++)

for(j=0;j<100;j++);//软件延时

}

////////////////////////////////////////////////

unsigned char key_scan()

{

unsigned char k=0;

k=P2&0X30;

if(k!=0x30)//是否有键按下?

{

delay(); //有键按下,延时一段时间

k=P2&0X30; ///检测按键引脚状态

if(k!=0x30)// 是否有键按下?

switch(k)//是那个键按下?

{

case 0X10: {while((P2&0X30)!=0X30); return(1);} break;//加键按下时,返回1

case 0X20: {while((P2&0X30)!=0X30); return(2);} break;//减键按下时,返回2

default: return(0); break;//其他情况,返回0

}

else

return(0);

}

else

return(0);

}

void main()

{

unsigned int num=0;//

unsigned char key;//键盘值

unsigned char total=0;

EA = 0;//EA=0 中断总禁止,禁止所有中断。

TMOD &= 0x0F;//

TMOD |= 0x10;/*

GATE=0以运行控制位TR启动定时器

C/T=0定时工作方式

M1、M0=01 方式1

*/

TH1 = 0xfc;//给定时器计数器的高八位赋值

TL1 = 0x66;//给定时器计数器的低八位赋值

/*

计算方法:

定时时间=(2exp16一计数初值)×晶振周期×12

采用11.0592MHz的晶振,定时时间1ms

*/

TR1 = 1;//定时器1开始计时

while(1)

{

key=key_scan();//调用键盘扫描程序,扫描那个键按下,并将返回值传给key.

switch(key)//判断是那个键按下

{

case 1: //当是加键按下时,

if(total==250)//

{

total=0;

}

else

total=total+10;

break;

case 2://当时减键按下时

if(total==0)

{

total=250;

}

else

total=total-10;

break;

default: break;

}

while(TF1==1)

{

TF1=0;

TR1 = 0; //暂时停止定时器(在重新设置初值之前必须暂停)

TH1 = 0xfc;

TL1 = 0x66; //重新设置定时器初值,设置时间为1ms

TR1 = 1; //重新启动定时器

num++;

P1=total;

if(num

{

P3=1; //P3高电平

}

else

{

if(num==255)

{

num=0;

}

P3=0; //P3低电平

}

}

}

}

STC89C52单片机定时器2的使用

STC89C52单片机定时器2的使用 实现定时和计数的方法一般有:软件定时、专用电路和可编程定时器/计数器三种方法。软件定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但会增加CPU 开销。专用硬件电路定时:可以实现请精确 的定时和计数,但参数调节不方波。可编程定时器/计数器:不占用CPU 时间,能与CPU 并行工作,实现精确的定时和计数,又可以通过变成设置其工作方 式和其他参数,使用方便。以下说明仅试用宏晶的STC89C52!!定时器 2:T2MOD,T2CON,TH2,TL2,RC2H,RC2L.T2MOD:0C9H(不可位寻址) 000000T2OEDCENT2OE:定时器输出使能位DECN:向上/向下计数使能位。定时器2 可配制成向上/向下计数器。0:向上计数(模式状态) 1:向下计数(尽量不使用)T2CON:0XC8H(可位寻址) TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2TF2:7 上/下溢出标志位,定时器2 溢出时置位,必须有用软件清零!当RCLK 或TCLK=1 时,TF2 将不会 置位。EXF2:6 定时器2 外部标志,当EXEN2=1 且T2EX 的负跳变产生捕获或重装时,EXF2 置位。定时器2 中断使能时,EXF2=1 将使CPU 从中断向量处执行定时器2 中断子程序。EXF2 位必须用软件清零。在递增/递减计数器 模式(DCEN=1)中,EXF2 位不会引起中断。RCLK:5 接收时钟标志。RCLK 置位时,定时器2 的溢出脉冲作为串口模式1 和模式3 的接收时钟。RCLK=0 时,将定时器1 的溢出脉冲作为串口模式1 和模式3 的接收时钟。TCLK:4 发送时钟标志位。TCLK 置位时,定时器2 的溢出脉冲作为串口模式1 和模式3 的发送时钟。TCLK=0 时,将定时器1 的溢出脉冲作为串口模 式1 和模式3 发送时钟。EXEN2:3 定时器2 外部使能标志。当其置位且定时器2 未作为串口时钟时,允许T2EX 的负跳变产生捕获或重装。

实验三单片机定时计数器实验

实验三单片机定时/计数器实验 1、实验目的 1、学习计数器的使用方法。 2、学习计数器程序的编写。 3、学习定时器的使用方法。 4、学习定时器程序的编写。 5、熟悉汇编语言 2、实验说明 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 3、实验仪器和条件 计算机 伟福实验箱(lab2000P) 4、实验内容 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 3、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 4、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD

用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 5、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 五、思考题 1、使用其他方式实现本实验功能; 2、改为门控方式外部启动计数; 3、如果改为定时间隔为200us,如何改动程序; 4、使用其他方式实现本实验功能,例如使用方式1,定时间隔为10ms,如何改动程序。 六、源程序修改原理及其仿真结果 思考题一:使用其他方式实现本实验功能 方法一: movTMOD, #00000100b;方式0,记数器 movTH0, #0 movTL0, #0 setbTR0;开始记数;由于方式0的特点是计数时使用TL0的低五位和八位 TH0,故用加法器a用“与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。 Loop: mova,TL0 anla,#1fh

实验4指导书 555定时器电路设计

实验4 555定时器电路设计 预习内容 阅读《电工电子实验教程》第6.5节中555集成定时器应用的内容。 预习实验的内容,自拟实验步骤和数据表格,完成理论设计,画出原理电路,选择所用元件名称、数量,熟悉元件引脚,手写预习报告。 一、实验目的 1.熟悉集成定时器555的工作原理及应用。 2.熟悉时钟信号产生电路的设计方法。 3.掌握使用定时器555设计多谐振荡器的方法。 二、知识要点 时钟信号在电子电路中有着非常重要的作用,而生成周期时钟信号的方法也有多种。比较常用的方法就是使用555定时器构成多谐振荡器。此电路广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。 555定时器是一种模拟和数字功能相结合的中规模集成器件。一般用双极性工艺制作的称为555,用CMOS工艺制作的称为7555。555定时器的电源电压范围宽,可在4.5V~16V 工作,7555可在3~18V工作,输出驱动电流约为200mA,因而其输出可与TTL、CMOS或者模拟电路电平兼容。555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。 图5-1 555定时器的结构图和引脚分布图 1脚-GND,接地脚; 2脚-Trigger,低电平触发端; 3脚-Output,输出端; 4脚-Reset,复位端,低电平有效; 5脚-Control V oltage,电压控制端; 6脚-Threshold,阈值输入端; 7脚-Discharge,放电端; 8脚-V CC,电源端。 三、实验内容 题目:时钟信号发生电路设计 设计一个电路,能够产生时钟信号,要求信号频率可调,设计范围不小于500Hz~1000Hz,

定时器实验报告

定时器实验报告 文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

电子信息工程学系实验报告课程名称:单片机原理及接口应用 实验项目名称:51定时器实验 实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。 MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP)

2 、51单片机的相关寄存器设置 方式控制寄存器TMOD: D7D6D5D4D3D2D1D0 GATE C/T M1 M0GATE C/T M1M0 TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。 TMOD各位的含义如下: 1. 工作方式选择位M1、M0 M1、M0的状态决定定时器的工作方式: M1M0功能说明 0 0 1 10 1 1 方式0,为13位的定时/计数器 方式1,为16位的定时/计数器 方式2,为常数自动重装入的8位定时/计数器 方式3,T0分为两个8位定时/计数器, T1在该方式时停止 3、51单片机定时器的工作过程(逻辑)方式一方式1:当M1M0=01时,定时器工作于方式1。

4实验四 单片机定时器的使用

姓名:学号:日期: 实验四单片机定时器的使用 一、实验名称:单片机定时器的使用 二、实验目的 1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法; 2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法; 3.掌握在Proteus环境下建立文件原理图的方法; 4.实现Proteus与Keil联调软件仿真。 三、使用仪器设备编号、部件及备件 1.实验室电脑; 2.单片机实验箱。 四、实验过程及数据、现象记录 1.在Proteus环境下建立如下仿真原理图,并保存为文件; 原理图中常用库元件的名称: 无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51 晶体振荡器:CRYSTAL 电阻:RES 按键:BUTTON 发光二极管:红色LED-RED 绿色LED-GREEN 蓝色LED-BLUE 黄色LED-YELLOW 2.在Keil环境下建立源程序并保存为.ASM文件,生成.HEX文件; 参考程序如下: ORG 0000H LJMP MAIN ORG H ;定时器T0的入口地址 LJMP TIMER0 MAIN: MOV TMOD,#01H

MOV R0,#05H MOV TH0,# H ;定时器的初值 MOV TL0,# H SETB ;开定时器T0的中断 SETB ;开CPU的中断 SETB ;启动定时器T0 MOV A,#01H LOOP: MOV P1,A RL A CJNE R0,#0,$ MOV R0,#05H SJMP LOOP TIMER0: DEC R0 MOV TH0,# H ;重装初值 MOV TL0,# H ;重装初值 RETI END 将以上程序补充完整,流水时间间隔为250ms。 3.将.HEX文件导入仿真图,运行并观察结果; 4.利用Keil软件将程序下载至实验箱,进行硬件仿真,观察实验结果。 五、实验数据分析、误差分析、现象分析 现象:实现流水灯,时间间隔250ms,由定时器实现定时250ms。 六、回答思考题 1.定时器由几种工作模式,各种模式的最大定时时间是多少? 2.各种模式下初值怎么计算?

单片机定时器实验程序

ORG 0000H LJMP START ORG 001BH ;定时器/计数器1中断程序入口地址 LJMP INT ORG 0100H START: MOV TMOD,#10H ;计数器置为方式1 MOV TL1,#0B0H ;装入时间常数 MOV TH1,#03CH SETB ET1 ;允许定时器T1中断 SETB EA ;允许总中断 SETB TR1 ;开始计数 MOV R0,#05H ;05是进入中断的次数LOOP: MOV R1,#00H MOV R2,#26H ;灯的状态循环次数LOOP1: MOV A,R1 ACALL TABLE MOV P1,A INC R1 LOOP2: CJNE R0,#00H,LOOP2 MOV R0,#05H DJNZ R2,LOOP1 LJMP LOOP TABLE: INC A ;从表中取显示码入累加器 MOVC A,@A+PC RET DB 0FFH,0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,0H DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,00H,0FFH,0FEH DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,0FFH,00H,0FFH,00H INT: CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#0B0H ;重置时间常数初值 MOV TH1,#03CH SETB TR1 ;开始计数 RETI ;中断返回 END

将T1改为T0,并且溢出间隔为0.05s ORG 0000H LJMP START ORG 001BH ;定时器/计数器1中断程序入口地址 LJMP INT ORG 0100H START: MOV TMOD,#01H ;计数器置为方式1 MOV TL1,#78H ;装入时间常数 MOV TH1,#0CH SETB ET0 ;允许定时器T1中断 SETB EA ;允许总中断 SETB TR0 ;开始计数 MOV R0,#05H ;05是进入中断的次数 LOOP: MOV R1,#00H MOV R2,#25H ;灯的状态循环次数 LOOP1: MOV A,R1 ACALL TABLE MOV P1,A INC R1 LOOP2: CJNE R0,#00H,LOOP2 MOV R0,#05H DJNZ R2,LOOP1 LJMP LOOP TABLE: INC A ;从表中取显示码入累加器 MOVC A,@A+PC RET DB 0FFH,07FH,3FH,1FH,0FH,07H,03H,01H,00H DB 80H,81H,0C1H,0C3H,0E3H,0E7H,0F7H,0FFH DB 00H,0FFH,00H,0FFH,0EFH,0E7H,0C7H,0C3H,83H,81H,01H,00H DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH INT: CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#78H ;重置时间常数初值 MOV TH1,#0CH SETB TR1 ;开始计数 RETI ;中断返回 END

实验三++555定时器的应用仿真实验

电子技术仿真实验报告实验题目: 3 555定时器的应用仿真实验 班级: 姓名: 学号: 实验日期: 实验成绩:

实验三 555定时器的应用仿真实验 一、实验目的: 1、熟悉555定时器的工作原理。 2、掌握555定时器的典型应用。 3、掌握基于multisim 10.0的555定时器应用仿真。 二、实验原理: 555定时器是一种常见的集数字与模拟功能于一体的集成电路。通常只要外接少量的外围元件就可以很方便地构成施密特触发器、单稳态触发器和多谐振荡器等多种电路。其中: (1) 构成施密特触发器,用于TTL 系统的接口,整形电路或脉冲鉴幅等; (2)构成多谐振荡器,组成信号产生电路; (3)构成单稳态触发器,用于定时延时整形及一些定时开关中。 555应用电路采用这3种方式中的1种或多种组合起来可以组成各种实用的电子电路。 U1 LM555CM GND 1DIS 7OUT 3 RST 4VCC 8THR 6CON 5 TRI 2 GND ——1脚,接地;TRI ——2脚,触发输入;OUT ——3脚,输出;RES ——4脚,复 位(低电平有效);CON ——5脚,控制电压(不用时一般通过一个0.01F 的电容接地);THR ——6脚,阈值输入;DIS ——7脚,放电端;VCC ——8脚,+电源

1、 由555定时器构成多谐振荡器 (1) 接通电源时,设电容的初始电压0=c V ,此时TR V \TH V 均小于1/3Vcc ,放电截止, 输出端电压为高电平,Vcc 通过1R 和2R 对C 充电,Vc 按照指数规律逐步上升。 (2) 当Vc 上升到2/3Vcc 时,放电管导通,输出端电压为低电平,电容C 通过2R 放电,Vc 按照指数规律逐步下降。 (3) 当Vc 下降到1/3Vcc 时,放电管截止,输出端电压由低电平翻转为高电平,电容C 又开始充电。当电容C 充到Vc=2/3Vcc 时,又开始放电,如此周而复始,在输出端即可产生矩形波信号。 矩形波信号的周期取决于电容器充、放电回路的时间常数,输出矩形脉冲信号的周期 C R R T )2(7.021+≈ 2、 施密特触发器是脉冲波形整形和变换电路中经常使用的一种电路。其具有两个稳定 状态,两个稳定状态的维持和相互转换取决于输入电压的高低和,属于电平触发,具有两个不同的触发电平,存在回差电压。由555定时器构成的施密特触发器将555定时器的THR 和TRI 两个输入端连在一起作为信号输入端即可得到施密特触发器。 (1) 当Vi<1/3Vcc 时,输出Vo 为高电平。随着Vi 的上升,只要Vi<2/3Vcc ,输出 信号将维持原状态不变,设此状态为第一稳定状态。 (2) 当Vi 上升到Vi ≥2/3Vcc 时,输出Vo 为低电平。电路由第一稳定状态翻转为第 二稳定状态,电路的正向阈值电压为+T V =2/3Vcc 。随着Vi 上升后又下降的情况,只要Vi 〉1/3Vcc ,电路将维持在第二稳定状态不变。 (3) 当Vi 下降到Vi ≤1/3Vcc 时,电路又翻转到第一稳态,电路的负向阈值电压为 -T V =1/3Vcc 。 三、实验内容: 1、555定时器构成多谐振荡器仿真实验

单片机定时器实验

单片机定时器实验

实验三单片机内部定时器应用 实验目的 1、理解单片机内部定时器的工作原理及使用方法 2、了解单片机定时中断程序的编写和调试方法 3、掌握定时器的基本使用方法 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 1、单片机定时器的工原理 MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。 工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为

图4-8 定时控制寄存器数据格式编写程序控制这两个寄存器就可以控制定时器的运行方式。 单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。 2、用定时器编写一个秒计时器 假设系统使用的晶振频率为12MH Z,即每个机器周期为1us。如使用方式1,则定时时间最长是216×1us=65536us=65.536ms,小于1s。故必须设置一个软件计数单元,即假设定时器定时中断时间为50ms,则必须定时中断20次才达到1s并对秒计时单元加1,20即为软件计数次数。最后再把秒计时单元的值转成显示数码送显示缓冲区。

51单片机定时器秒表设计程序

51单片机定时器秒表设计程序 #include typedef unsigned char UINT8; typedef unsigned int UINT16; code UINT8 SEGMENT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; code UINT8 SHU[10] ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; code UINT8 SELECT[8] ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; #define S1 0x0e #define S2 0x0d #define S3 0x0b #define S4 0x07 sbit SPEAK=P3^5; sbit P3_3=P3^3; UINT8 mSecond,Second; void Delay(UINT16 t) { UINT16 i,j; for(i=0;i

数字电路实验报告555定时器及应用

姓名:xxxxxxxxxxxxxxx学号:xxxxxxxxxx . 学院:计算机与电子信息学院专业:计算机类. 班级:xxxxxxxxxxxxxxxxxx时间:2019年10月18 日. 指导教师:xxxxxxxx . 实验名称:555定时器及应用. 一、实验目的 1、熟悉掌握555定时器的基本工作原理及功能; 2、掌握555定时器构成多谐震荡器的工作原理和使用方法; 3、熟悉数字系统的分析和应用。 二、实验原理 1、555定时器原理简介 555定时器是共仪器、仪表、自动化装置、各种民用电器的定时器、时间延时器等电子控制电路用的时间功能电路,也可以做自激多谐振荡器、脉冲调制电路、脉冲相位调谐电路、脉冲丢失指示器、报警器以及单稳态、双稳态等各种电路,应用范围十分广泛。 (1)555定时器的特点 ①外部连接几个阻容元件,可以方便的构成施密特触发器、多谐振荡器和单稳态 触发器等脉冲产生与整形回路。 ②具有一定的输出功率,因此可直接驱动微电机、指示灯和扬声器等。该器件有 双极型和COMS型两类产品,双极型产品型号最后三位为555,COMS型产品 型号最后四位为7555,它们的功能及外部引线排列完全相同。 ③电源电压范围宽(3~18V),双极型的电源电压为5~15V,COMS型的电源电 压为3~18V,能够提供与TTL及COMS型的数字电路兼容的逻辑电平。 (2)555定时器的电路结构及功能 图6-1是555定时器的电路结构图和管脚排列图,它的八个引脚的名称及作用如下: 1脚:芯片的地端2脚:芯片的触发输入端TR’(也叫低触发端)3脚:芯片的输出端4脚:芯片的复位端RD’ 5脚:芯片的控制电压输入Vco 6脚:芯片的阈值输入端TH(也叫高触发端)7脚:芯片的放电端DISC 8脚:芯片的电源Vcc

单片机实验报告

单片机原理及接口技术 学院:光电信息科学与技术学院班级:——实验报告册 083-1 实验一系统认识实验 1.1 实验目的 1. 学习keil c51集成开发环境的操作。 2. 熟悉td-51系统板的结构和使用。 1.2实验仪器 pc 机一台,td-nmc+教学实验系统。 1.3实验内容 1. 编写实验程序,将00h—0fh共16个数写入单片机内部 ram 的30h—3fh空间。 2.编写实验程序,将00h到0fh共16个数写入单片机外部ram的1000h到100fh空间。 1.4 源程序 https://www.360docs.net/doc/b93409068.html, 0000h mov r1,#30h mov r2, #10h mov a, #00h mov @r1, a inc r1 inc a djnz r2,loop sjmp $ end 2. org 0000h mov dptr, #1000h mov r2, #10h mov a, #00h movx @dptr, a inc dptr inc a djnz r2,loop sjmp $ end loop: loop: 1.5 实验步骤 1.创建 keil c51 应用程序 (1)运行 keil c51 软件,进入 keil c51 集成开发环境。 - 3 -(2)选择工具栏的 project 选项,弹出下拉菜单,选择 newproject 命令,建立一个新的μvision2 工程。选择工程目录并输入文件名 asm1 后,单击保存。 (3)工程建立完毕后,弹出器件选择窗口,选择 sst 公司的 sst89e554rc。(4)为工程添加程序文件。选择工具栏的 file 选项,在弹出的下拉菜单中选择 new 目录。 (5)输入程序,将 text1 保存成asm1.asm。 (6)将asm1.asm源程序添加到 asm1.uv2 工程中,构成一个完整的工程项目。 2.编译、链接程序文件(1)设置编译、链接环境 (2)点击编译、链接程序命令,此时会在 output window 信息输出窗口输出相关信息。 3.调试仿真程序 (1)将光标移到 sjmp $语句行,在此行设置断点。 (2)运行实验程序,当程序遇到断点后,停止运行,观察存储器中的内容,验证程序功能。 1.6 实验结果. 2. 4 实验二查表程序设计实验 2.1实验目的 学习查表程序的设计方法,熟悉 51 的指令系统。 2.2实验设备 pc 机一台,td-nmc+教学实验系统 2.3实验内容 1.通过查表的方法将 16 进制数转换为 ascii 码; 2.通过查表的方法实现y=x2,其中x为0—9的十进制数,以bcd码表示,结果仍以bcd 码形式输出。

单片机试验之定时器计数器应用试验二

一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图 六、实验总结 通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。 七、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 答:程序见程序清单。 . . . . 四、实验程序流程框图和程序清单。 1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计

满100个脉冲,则取反P1.0口线状态。 开始汇编程序开始 ORG 0000H START: LJMP MAIN TMO初始化 ORG 0100H 初始TMOD MAIN: MOV IE, #00H MOV TMOD, #60H计数初值初始计数初值初始化MOV TH1, #9CH MOV TL1, #9CH SETB TR1 中断初始中断初始化LOOP: JNB TF1, LOOP CLR TF1 CPL P1.0 启动定时器 AJMP LOOP 启动计数器 END

555定时器多谐波电路Multisim仿真

数字电子技术仿真实验报告 实验名称:555定时器 学生姓名:刘佳璇学号:20152523 指导教师:金丹 院系:电气工程学院班级:201502D 2017 年11 月29 日

555定时器 一、实验目的 1、学会使用 MULTISIM 软件进行数字电子实验仿真。 2、学习了解555定时器的工作原理。 二、实验内容 多谐振荡器 三、实验原理 555定时器的内部电路图及引脚排列见下图,功能表见下表。

555定时器的功能主要由两个比较器决定。两个比较器的输出电压控制RS 触发器和放电管的状态。在电源与地之间加上电压,当5脚悬空时,则电压比较器C1的同相输入端的电压为3/2CC V ,C2的反相输入端的电压为VCC 若触发输入端TR 的电压小于3/CC V ,则比较器C2的输出0,可使RS 触发器置1,使输出端OUT=1。如果阈值输入端TH 的电压大于3/2CC V ,同时TR 端的电压大于3/CC V ,则C1的输出为0,C2的输出为1,可将RS 触发器置0,使输出为0电平。

多谐振荡器又称为无稳态触发器,它没有稳定的输出状态,只有两个暂稳态。在电路处于某一暂稳态后,经过一段时间可以自行触发翻转到另一暂稳态。 两个暂稳态自行相互转换而输出一系列矩形波。多谐振荡器可用作方波发生器。电路如图。 四、 实验设计与仿真 构建仿真电路如图所示,其中Ω=k R 21,Ω=k R 12,F C μ1.0=。接通V 5电源,用示波器观察c u 和o u 的波形。

波形如下图: 仿真结果与实验结果一致。 五、实验小结

这次的仿真实验是 555 定时器(多谐振荡器)电路,实验连线较简单,但是原理并不简单,通过实验我更加深刻的理解了555定时器的工作原理。

定时器实验报告

电子信息工程学系实验报告 课程名称:单片机原理及接口应用Array实验项目名称:51定时器实验实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP) 2、51单片机的相关寄存器设置 方式控制寄存器TMOD: TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下: 1. 工作方式选择位M1、M0 3、51单片机定时器的工作过程(逻辑)方式一 方式1:当M1M0=01时,定时器工作于方式1。

T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216-a)μS。 4、51单片机的编程 使用MCS-51单片机的定时/计数器的步骤是: .设定TMOD,确定: 工作状态(用作定时器/计数器); 工作方式; 控制方式。 如:T1用于定时器、方式1,T0用于计数器、方式2,均用软件控制。则TMOD的值应为:0001 0110,即0x16。 .设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为fosc,则定时/计数器计数频率为fosc/12,定时/计数器的计数总次数T_all在方式0、方式1和方式2时分别为213 = 8192、216 = 65536和28 = 256,定时间隔为T,计数初值为a,则有 T = 12×(T_all – a)/fosc a = T_all – T×fosc/12 a = – T×fosc/12 (注意单位) THx = a / 256;TLx = a % 256; .确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1;EA = 1; 还需要编写中断服务函数: void T0_srv(void)interrupt 1 using 1 { TL0 = a % 256; TH0 = a / 256; 中断服务程序段} .启动定时器:TR0(TR1)= 1。 四、实验内容过程及结果分析: 利用protues仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位led数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1s。刚开始led数码管显示9,每过一秒数码管显示值减一,当显示到0时返回9,依此反复。然后设计00-59的两位秒表显示程序。 (1)实现个位秒表,9-0

单片机定时器2的使用

/*----------------------------------------------- 名称:定时器2 内容:通过定时让LED灯闪烁,数据口为:P0口 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sfr T2MOD=0xC9; //定时器2模式控制寄存器地址;可以在头文件中定义 /*------------------------------------------------ 定时器初始化子程序 ------------------------------------------------*/ void T2_init(void) { T2CON=0; //配置定时器2控制寄存器,这里其实不用配置,T2CON上电默认就是0,这里赋值只是为了演示这个寄存器的配置 T2MOD=0; //配置定时器2工作模式寄存器,这里其实不用配置,T2MOD 上电默认就是0,这里赋值只是为了演示这个寄存器的配置 RCAP2H = (65536-60000)/256;//晶振12M 60ms 16bit 自动重载 RCAP2L = (65536-6000)%256; ET2=1; //打开定时器中断 EA=1; //打开总中断 TR2=1; //打开定时器开关 } /*------------------------------------------------ 主程序 ------------------------------------------------*/ main() { T2_init(); while(1); } /*------------------------------------------------ 定时器中断子程序 ------------------------------------------------*/ void T2_ISR(void) interrupt 5 using 1//定时器2中断 { //自动重装,无需再次赋初值! TF2=0;//!!!注意!!! 定时器2必须由软件对溢出标志位清零,硬件不能清零,这里与定时器0和定时器1不同!!! P0=~P0; }

555定时器实验报告

一、实验目的 二、实验原理 555 定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。它也常作为定时器广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。555 定时器的内部电路框图和外引脚排列图分别如图 2.9.1 和图2.9.2 所示。它内部包括两个电压比较器,三个等值串联电阻,一个 RS 触发器,一个放电管T 及功率输出级。它提供两个基准电压VCC /3 和 2VCC /3 555 定时器的功能主要由两个比较器决定。两个比较器的输出电压控制RS 触发器和放电管的状态。在电源与地之间加上电压,当 5 脚悬空时,则电压比较器 C1 的同相输入端的电压为2VCC /3,C2 的反相输入端的电压为VCC /3。若触发输入端 TR 的电压小于VCC /3,则比较器 C2 的输出为0,可使RS 触发器置1,使输出端OUT=1。如果阈值输入端 TH 的电压大于2VCC/3,同时 TR 端的电压大于VCC /3,则C1 的输出为 0,C2 的输出为1,可将RS 触发器置 0,使输出为 0 电平。 它的各个引脚功能如下: 1脚:外接电源负端VSS或接地,一般情况下接地。

8脚:外接电源VCC,双极型时基电路VCC的范围是4.5 ~ 16V,CMOS 型时基电路VCC的范围为3 ~ 18V。一般用5V。 3脚:输出端Vo 2脚:低触发端 6脚:TH高触发端 4脚:是直接清零端。当端接低电平,则时基电路不工作,此时不论、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。 5脚:VC为控制电压端。若此端外接电压,则可改变内部两个比较器的基准电压,当该端不用时,应将该端串入一只0.01μF电容接地,以防引入干扰。 7脚:放电端。该端与放电管集电极相连,用做定时器时电容的放电。 在1脚接地,5脚未外接电压,两个比较器A1、A2基准电压分别为的情况下,555时基电路的功能表如表6—1示。 三、实验内容 四、思考题

单片机中断实验报告

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想 ------- 屠呦呦 实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1;

void timer1_init() { TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int sbit D1=P2^0; //将D1位定义为P2.0引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;//time=0;

STC89C52单片机定时器2的使用

52单片机有3个定时器,T2是一个16位自动重载的,像T0和T1的方式2一样,只不过它是16位重载,如果作为计数器或定时用,中断用的是5,就是interrupt 5,T2的引脚是P1.0口。P1.0作为I/O 口用了以后T2计数是不行了,不过定时或是作为串口时钟还是可以的。 T2CON(T2的控制寄存器),字节地址0C8H: 0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8H TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2 各位的定义如下: TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位。 EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。EXF2也是只能通过软件来清除的。RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器 TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器 EXEN2:T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许外部 时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获 或重装,并置位EXF2,申请中断。 TR2:T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2 C/T2:T2的定时方式或计数方式选择位。只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。CP/RT2:捕获/重装载标志,只能通过软件的置位或清除。CP/RT2=0时,选择重装载方式,这时若T2溢出(EXEN2=0时)或者T2EX引脚(P1.0)出现负跳变

555定时器电路数电实验报告

实验报告 课程名称:数字电子技术实验姓名: 学号: 专业: 开课学期: 指导教师:

实验课安全知识须知 1.须知1:规范着装。为保证实验操作过程安全、避免实验过程中意外发生,学生禁止穿拖 鞋进入实验室,女生尽量避免穿裙子参加实验。 2.须知2:实验前必须熟悉实验设备参数、掌握设备的技术性能以及操作规程。 3.须知3:实验时人体不可接触带电线路,接线或拆线都必须在切断电源的情况下进行。 4.须知4:学生独立完成接线或改接线路后必须经指导教师检查和允许,并使组内其他同学 引起注意后方可接通电源。实验中如设备发生故障,应立即切断电源,经查清问题和妥善处理故障后,才能继续进行实验。 5.须知5:接通电源前应先检查功率表及电流表的电流量程是否符合要求,有否短路回路存 在,以免损坏仪表或电源。 特别提醒:实验过程中违反以上任一须知,需再次进行预习后方可再来参加实验;课程中违反三次及以上,直接重修。 实验报告撰写要求 1.要求1:预习报告部分列出该次实验使用组件名称或者设备额定参数;绘制实验线路图, 并注明仪表量程、电阻器阻值、电源端编号等。绘制数据记录表格,并注明相关的实验环境参数与要求。 2.要求2:分析报告部分一方面参考思考题要求,对实验数据进行分析和整理,说明实验结 果与理论是否符合;另一方面根据实测数据和在实验中观察和发现的问题,经过自己研究或分析讨论后写出的心得体会。 3.要求3:在数据处理中,曲线的绘制必须用坐标纸画出曲线,曲线要用曲线尺或曲线板连 成光滑曲线,不在曲线上的点仍按实际数据标出其具体坐标。 4.要求4:本课程实验结束后,将各次的实验报告按要求装订,并在首页写上序号(实验课 上签到表对应的序号)。请班长按照序号排序,并在课程结束后按要求上交实验报告。 温馨提示:实验报告撰写过程中如遇预留空白不足,请在该页背面空白接续。

相关文档
最新文档