实验5 基于51单片机的定时计数器控制系统设计

一、实验项目: 

定时计数器控制系统设计

二、实验目的:

本系统设计的目的是使学生掌握单片机的定时器技术。深刻理解单片机定时计数器系统的功能和运行原理,掌握单片机软硬件系统开发的技巧。具体要求用单片机的定时计数器0控制外接LED的闪烁,同时会灵活调节闪烁频率。要求在Proteus中设计出仿真硬件电路,在keil uvision中分别设计出汇编语言和C语言的源程序,然后用Proteus来进行整体系统仿真运行。

三、实验原理:

实验主要涉及单片机的定时器技术。单片机的定时器是一个重要的外设,可以用来计算时间,产生周期性的中断信号,实现精确定时等功能。定时器由定时器计数器、控制寄存器、预分频器等组成。

在本实验中,我们使用单片机的定时计数器0来控制外接LED的闪烁。定时计数器0的工作原理是通过定时器计数器来计数,当计数值达到设定值时,就会产生中断信号,通过中断处理程序来控制LED的亮灭。

具体的实现步骤如下:

1. 初始化定时器0,设置计数器初值、计数器自动重载值和预分频器值。

2. 启动定时器0,开始计数。

3. 等待定时器0计数器的值达到设定值,产生中断信号。

4. 中断处理程序中改变LED的状态,实现LED的闪烁效果。

5. 回到主程序,等待下一次中断信号的产生。

通过这样的实现方式,就可以控制外接LED的闪烁,并且可以灵活调节闪烁频率。同时,也可以通过设计不同的定时器计数器初值、计数器自动重载值和预分频器值来实现不同的闪烁频率。

四、硬件电路图:

五、C语言代码:

#include <reg51.h>	  //包含51单片机的头文件,用于定义AT89C51单片机的寄存器和端口 
#define uchar unsigned char   //定义两个无符号的字符型和整数型常量
#define uint unsigned int    //uchar代表unsigned char,uint代表unsigned int
sbit led = P0^0;		   //选择引脚P0.0
uchar number = 0;		 //初始化number为0
void main()
{
	TMOD = 0x00;		    //T0工作方式设置为0
	TH0 = (8192-5000)/32;		//5ms定时,设定初值
	TL0 = (8192-5000)%32;
	IE = 0x82;		        //允许T0中断
	TR0 = 1;			   //启动T0定时器
	while(1);	           //进入无限循环
}
void led_zhongduan() interrupt 1
{
	TH0 = (8192-5000)/32;	      // 回复初值
	TL0 = (8192-5000)%32;
	number++;	           //number自增1
	if(number == 200)	     //当number达到200时,间隔时间5ms*200=1s,将led状态取反,number重置为0
	{						  //1s开关一次led
     	led = ~led;	  
     	number=0;	
	}
}

六、汇编代码:

     ORG 0000H
     LJMP START   ;转主程序
     ORG 000BH	 ;T0的中断服务程序入口
	 LJMP TIME	 
	 ORG 0030H	
START:MOV SP,#60H	; 设置堆栈的指针
	  MOV P0,#0FEH	  ;	关led
	  MOV R1,#00H		;软件计数器清零
	  MOV TMOD,#01H		;T0采用工作方式1
	  MOV TH0,#3CH		;设置初始值:2^16-50ms/1μs=65536-50000=15536=3CB0H
	  MOV TL0,#0B0H		
	  SETB EA		   ; 开总中断允许
	  SETB ET0		  ;	开T0中断允许
	  SETB TR0			; 启动T0
LOOP:
     AJMP LOOP		;循环等待
TIME:
     PUSH PSW		   ;将PSW压入堆栈保护
	 INC R1			   ;软件计数器加1
	 CJNE R1,#20,TIME_JMP	
	 ;软件计数器中的值是否为20,若是,继续执行,P0.0取反
	 ;否则,转TIME_JMP。软件计数器定时50μm二十次 ,时间间隔20*50=1s
	 CPL P0.0		   ;P0.0取反
	 MOV R1,#00H		;清空软件计数器
TIME_JMP:
     MOV TH0,#3CH  ;  重置计数器初值
	MOV TL0,#0B0H	
	SETB TR0	   
	POP PSW	  ;	恢复PSW
	RETI		  ;中断返回
	END		

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
单片机课程设计 目 录 1 课程设计的目的 1 2 设计思路 1 3 设计过程 2 3.1 方案论证 2 3.2 电路的设计 5 4 应用程序 6 5 系统调试与焊接 8 5.1电路的安装与焊接 8 5.2 系统试调 9 6 结论 10 7 心得体会 10 参考文献 13 附录1:总体电路原理图 14 附录2:实物图 15 附录3:元器件清单 16 1 课程设计的目的 1.利用单片机定时器/计数器中断设计计数器,0到99的累加。 2.综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解 ,具备设计单片机应用系统的能力。 3.通过本次课程设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识 复习和掌握,对单片机实际的应用作进一步的了解。 4.通过本次试验,增强自己的动手能力。认识单片机在日常生活中的应用的广泛性 ,实用性。 明确学习目的,端正学习态度,提高对课程设计重要性的认识,以积极认真的态度参加 课程设计工作,按要求完成规定的设计任务。 2 设计思路 本实验利用单片机定时器/计数器定时计数的原理,通过采用仿真软件来模拟实 现。模拟利用AT89C2052单片机、LED数码管以及各种控制器件来控制表的计数以及计数 的开启/计数与复位等。利用单片机AT89S51单片机来制作一个手动计数器,在AT89S51单 片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0- P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0- P0.7接一个共阴数码管,作为00-99计数的十位数显示,用单片机P1.0- P1.6接一个并排的7个LED灯,作为00-99计数的二进制显示。设计总图如图2-1所示 图2-1 设计总图 3 设计过程 3.1 方案论证 AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的 单片机单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易 失存储器制造技术制造,与工业标准的MCS- 51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,AT MEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为 很多嵌入式控制系统提供了一种灵活性高并且价廉的方案。 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所 有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公 共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时 ,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片 机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位 就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端, 就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点 亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数 码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据, 不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功 耗更低。 用单片机技术来实现双显计数器的控制。多功能定时计数器控制系统的原理。它主要 由单片机、发光二极管、晶振和双位数码管等部分组成。 A.单片机采用STC89C51型。 B.数据显示电路:七段四位共阴极数码管,P1口接7个LED二极管,用二进制显示数 据;P0和P2口分别接两个数码管,用十进制显示数据。 C.数据输入电路:有触发按键完成输入,一次按键LED显示和数码管显示分别加1, LED满二进位,数码显示满十进位。 D.电源指示电路:电路接通电源后电源指示灯亮起,表示电源接通。 设计总体框架图如图3-1所示 图3-1总体框架图 最小控制系统设计,STC89C51单片机最小系统包括晶体振荡电路、复位开关和电源 部分。STC89C51单片机的最小系统图如图3-2所示 图3-2 单片机最小控制系统 当RST引脚有一个高电平并维持两个机器周期,则 CPU就可以响应并将系统复位。需要100欧,10k电阻各一个,22pf电容一个,按键一个。 时钟电路需要在XTAL1,2,两个端口跨接石英晶体及两个电容,电容一般取10uF左右。 3.2 电路的设计 1.指示电路如图3-3所示 图3-3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三小只程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值