51单片机:计数器 方式2 外部开关按5次LED灯状态发生改变

51单片机:计数器 方式2 外部开关按5次LED灯状态发生改变

最近一段时间在准备单片机考试,复习过程中发现自己在平时写作业的过程中很少用到计数器,大部分情况下都是在用定时器,因此复习看到有关定时器的内容时很是吃力,后来好好温习了一下课本,才对计数器有了一点了解。单片机课程虽然结束了,课设也搞完了,但是在这一过程中暴露了很多的问题还是应该引起重视的,很有必要记录一下。

问题描述

Supposing:

The oscillator frequency is 12 MHZ, a LED is connected to P2.0 in the sink current mode. The LED is turned off after power.Write the program which can change the state of the LED when the button is pressed five times. Use the counter 0 and let it work at mode 2.

(哈哈哈,看到的题确实是英文描述的,我的单片机老师是位特别负责任的老师,对于我们的要求也比较严格,有时课上带我们学习新的芯片就直接给我们看英文的,可怜我这个英语渣,听说考试也是全英文卷子,有点怂啊)

电路图设计

在这里插入图片描述
电路图的解释
题目要求LED灯接P2.0,且使用灌电流的接法。在关于计数器的那部分,要求采用计数器0,方式2的方式。在关于计时器的内容中提到,当使用计数器时需要在外部引脚T0(P3.4)或T1(P3.5)提供一个能够进行负跳变的设备。在该电路图中,按键开关起到提供负跳变的角色。

代码实现:

//-----------------------------------------------------
//          计数器  方式2  
//          开关按5次LED灯状态转换一次
//-----------------------------------------------------
#include<reg51.h>
sbit LED = P2^0;
sbit KEY = P3^4;
void main()
{
	TMOD = 0x06;   //计数模式,方式2
	TL0 = TH0 = (256-5); //计数5次;
	TR0 = 1;	  //启动T0
	IT0 = 1;      //外部中断请求0,中断请求信号从高电平到低电平负跳变有效
	ET0 = 1;      //允许T0中断
	EA  = 1;      //开启中断
	LED = 1;      //初上电时灯熄灭
	while(1);
}

void EX0_INT(void) interrupt 1
{
	LED = !LED;
	
}

关于TMOD设置可以参考我的另一篇博客定时器|计数器TMOD设置

仿真结果

在这里插入图片描述
这个GIF录制好烦,有好用的额吗?求推荐

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
单片机课程设计 目 录 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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值