使用计数器T0,工作在方式0,对外部脉冲进行计数,当外部脉冲数量累计达到1000后LED显示值加1。其实验电路如图所示
分析: 使用计数器与使用定时器类似,只是计数脉冲由系统时钟脉冲改为外部脉冲。也可以使用中断查询的方式进行编程,就是先给定时器寄存器赋初值,当计满后就清掉溢出标志TF0.再进入下一轮中断,当然也可以不使用中断查询,而直接使用数值比较完成要求,数值比较其实就是每次都将TH0和TL0与预设的Hight和Lower进行比较,当比较的结果都为真时,进行计数到后的服务程序。下面依次给出其程序清单。
(1)使用中断查询方式的程序清单如下:
sfr data_buf=0xA0; //显示数据端口
unsigned char conter; //全局变量,用于保存计数值
void main(void)
{
conter=0;
Conter_Init();
while(1)
{
Conter0();
disply(conter);
}
}
void Conter_Init(void)
{
TMOD=0x04; //工作方式设置
/*计数器初值设置*/
TH0=0xe0; //初始值设置,7192转为13位后的高8位
TL0=0x18; //初始值设置,7192转为13位后的低5位
/*关闭计数器中断*/
EA=0 ; //关中断
ET0=0 ; //关T0中断
/*启动计数器*/
TR0=1 ; //启动T0
}
void Conter0(void)
{
if(TF0==1)
{
TF0=0;
/*计数器初值设置*/
TH0=0xe0; // 初始值设置
TL0=0x18;
conter++;
if(conter >=99)
conter=0;
}
}
void disply(unsigned char BCD) //显示函数
{
unsigned char x,y; //定义x,y两个变量
x=BCD%10; //取i的个位字符BCD编码放于x中
y=BCD/10; //取i的十位字符BCD编码放于y中
y< <=4; //x左移4位
data_buf=y|x; //返回个位与十位的组合BCD编码并送P2口显示
}
通过上面案例可以看出使用定时器/计数器的基本步骤如下。
1 写TMOD,设置定时器/计数器的工作方式。
2 计算定时器/计数器的初值,并将初值写入TH0/TH1、TL0/TL1。
3 设置IE、IP,以开放或关闭相应的中断和设定中断优先级。
4 启动定时/计数器。
5 根据条件调用定时器/计数器服务函数。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
寄存器
+关注
关注
30文章
5030浏览量
117733 -
计数器
+关注
关注
32文章
2123浏览量
92985 -
中断
+关注
关注
5文章
884浏览量
41025 -
定时器
+关注
关注
23文章
3147浏览量
112040 -
CD4511
+关注
关注
3文章
24浏览量
29233
发布评论请先 登录
相关推荐
大学生电子设计—脉冲宽度测量与显示
CD4511(7段锁存/译码/驱动器)驱动4个数码管。要求:测量出脉冲宽度(考虑正脉冲宽度),分辨力10us,最大测量脉冲宽度99.99ms
发表于 04-22 21:31
简易计数器的设计与制作资料分享
该计数器可实现按键计数、增减控制、手/自动清零等功能。需要准备下列元件:共阴极7段数码管、按键开关、CD4511(BCD锁存/7段译码/驱动器)、C
发表于 05-07 07:38
CD4511 pdf datasheet
The CD4511 - CMOS BCD-TO-7-SEGMENT LATCH DECODER DRIVERS - Texas Instruments
发表于 12-01 16:19
•123次下载
CD4511应用电路
CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点:具有BCD转换、消隐和锁存控制、七段译码
发表于 09-27 13:20
•1.8w次阅读
cd4511工作原理_cd4511锁存、译码和消隐功能
CD4511是一片CMOSBCD锁存/7段译码/驱动器,用于驱动共阴极LED(数码管)显示器的BCD码-七段码译码器。具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大
发表于 11-22 19:54
•6.2w次阅读
利用ATmega328P和4位7段显示器制作两位数加减计数器
电子发烧友网站提供《利用ATmega328P和4位7段显示器制作两位数加减计数器.zip》资料免费下载
发表于 12-27 10:00
•1次下载
评论