怎样改555定时器刷新数码管,才能使数码管转速到999?

403 Forbidden
403 Forbidden增值税发票
无理由退货
我浏览过的
您现在的位置:&
555定时器引脚图及功能
555定时器引脚图及功能
集成时基电路又称为集成定时器或555电路,是一种数字、模拟混合型的中规模集成电路,应用十分广泛。它是一种产生时间延迟和多种脉冲信号的电路,由于内部电压标准使用了三个5K电阻,故取名555电路。
  电路类型有双极型和CMOS型两大类,二者的结构与工作原理类似。几乎所有的双极型产品型号最后的三位数码都是555或556;所有的CMOS产品型号最后四位数码都是,二者的逻辑功能和引脚排列完全相同,易于互换。555和7555是单定时器。556和7556是双定时器。双极型的电源电压VCC=+5V~+15V,输出的最大电流可达200mA,CMOS型的电源电压为+3~+18V。
  1、555定时器电路的工作原理
  555电路的内部电路方框图如图1所示。它含有两个电压比较器,一个基本RS触发器,一个放电开关管T,比较器的参考电压由三只 5KΩ的电阻器构成的分压器提供。它们分别使高电平比较器A1 的同相输入端和低电平比较器A2的反相输入端的参考电平为
。A1与A2的输出端控制RS触发器状态和放电管开关状态。当输入信号自6脚,即高电平触发输入并超过参考电平
时,触发器复位,555的输出端3脚输出低电平,同时放电开关管导通;当输入信号自2脚输入并低于
时,触发器置位,555的3脚输出高电平,同时放电开关管截止。
是复位端(4脚),当
=0,555输出低电平。平时
端开路或接VCC 。
  2.555定时器电路的电路组成
  图1是555 定时器的电路结构图,它由五个部分组成:
  (1)比较器:电压比较器A1和A2是两个结构完全相同的理想运算放大器。比较器有两个输入端,分别用U+和U-表示相应输入端上所加的电压,用uc表示比较器的比较结果。当U+&U-时,uc=1; 而U+
(a)                  (b)
图1 555定时器内部框图及引脚排列
更多猛料!欢迎扫描下方二维码关注土猫网官方微信( tumaowang )
&#165&127元
节省25.4元
&#165&239元
节省47.8元
&#165&19元
&#165&449元
节省89.8元
&#165&299元
节省59.8元
&#165&45元
&#165&159元
节省31.8元
&#165&35.3元
节省15.7元
&#165&6.9元
&#165&19.9元
&#165&10.9元
&#165&219元555定时器_电子课程设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
555定时器_电子课程设计
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩15页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢您的网站因未备案或涉及违规被禁止访问,请及时联系实际接入商办理备案.2320人阅读
单片机相关(34)
数码管是51单片机学习中比较基础的一个模块,为简化电路连接,提高系统可靠性,降低制造成本,多位数码管广泛采用动态扫描的方式进行显示。如果程序编写不当,数码管动态扫描容易出现亮度不均匀、亮度过低、重影等现象。很多初学者会在主函数中使用while(1)循环,结合delay函数不断扫描,但这样得不断调用display扫描,如果单片机还要执行别的程序时,就会由于扫描不及时,导致各种问题。此外,在控制段选位选的先后顺序上,如果程序不当,则会造成显示重影等问题。在此给出一个稳定可靠的程序方案。
电路连接:P1口通过两个74HC573分别连接到八位数码管的段选和片选,段选、位选由P3.4和P3.5控制,低电平锁存
#include &reg52.h&
#define DIGI_PORT P1 // 宏定义数码管端口,如果端口改变,只需修改这一句即可
#define DIGI_NUM 8 // 宏定义数码管个数
sbit DULA = P3^4;
sbit WELA = P3^5;
unsigned char digiBuf[DIGI_NUM]; //数码管缓冲区
unsigned char code DigiTable[] = {
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
0x00,/* */
初始化定时器0,方式1,11.0592MHz晶振时,每5ms进一次中断,
如果只有4位数码管,10ms即可,间隔长度根据实际情况调整,
在保证不闪烁的情况下,尽可能加长间距以减小对CPU资源的消耗
void initDigi()
TMOD = 0x01;
TH0 = 0xEE;
TL0 = 0x00;
void main()
digiBuf[0] = 10; // 为10则该位不显示
digiBuf[1] = 1;
digiBuf[2] = 2;
digiBuf[3] = 3;
digiBuf[4] = 4;
digiBuf[5] = 5;
digiBuf[6] = 6;
digiBuf[7] = 7;
initDigi();
// 定时器0函数每隔一段时间运行一次
void displayTimer0() interrupt 1
static unsigned char digiPos = 0; // 当前需要显示的数码管,此处使用静态局部变量,或者全局变量,不可使用默认局部变量
TH0 = 0xEE;
TL0 = 0x00;
// 位选关闭所有数码管,否则可能出现重影(下面段选改变之后,位选改变之前,上一次已经位选打开的数码会显示错误的信息)
DIGI_PORT = 0xFF; //这一句如果和下一句位置交换,可能产生重影,具体见http://blog.csdn.net/jzj1993/article/details/8563337
// 这里进行段选(此时所有数码管都已关闭,不会显示错误信息)
DIGI_PORT = DigiTable[digiBuf[digiPos]];
// 这里根据digiPos进行位选
switch(digiPos) {
case 0: DIGI_PORT = ~(1 && 0); // 打开第0个数码管
case 1: DIGI_PORT = ~(1 && 1); // 打开第1个数码管
case 2: DIGI_PORT = ~(1 && 2); // 打开第2个数码管
case 3: DIGI_PORT = ~(1 && 3); // 打开第3个数码管
case 4: DIGI_PORT = ~(1 && 4); // 打开第4个数码管
case 5: DIGI_PORT = ~(1 && 5); // 打开第5个数码管
case 6: DIGI_PORT = ~(1 && 6); // 打开第6个数码管
case 7: DIGI_PORT = ~(1 && 7); // 打开第7个数码管
// 改变digiPos值,为下一次进入此函数做准备
digiPos++;
if(digiPos == DIGI_NUM)
digiPos = 0;
Proteus仿真通过
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:148447次
积分:2806
积分:2806
排名:第9828名
原创:124篇
评论:69条
文章:25篇
阅读:30566
(1)(2)(3)(6)(12)(6)(14)(20)(41)(1)(4)(1)(1)(1)(2)(1)(14)(1)

我要回帖

更多关于 定时器中断扫描数码管 的文章

 

随机推荐