//用LED数码管显示计数器T0的计数值
#include //包含51单片机寄存器定义的头文件
sbit S=P3^2 ; //将S位定义为P3.2引脚
unsigned char Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //段码表
unsigned char x;
/******************************************************************
函数功能: 延时约0.6ms
********************************************************************/
void delay(void)
{
unsigned char j;
for(j=0;j<200;j++)
;
}
/******************************************************************
函数功能:显示计数次数的子程序
入口参数:x
********************************************************************/
void Display(unsigned char x)
{
P2=0xbf; //P3.6引脚输出低电平,DS6点亮
P0=Tab[x/10]; //显示十位
delay();
delay();
delay();
delay();
P2=0x7f; //P3.7引脚输出低电平,DS7点亮
P0=Tab[x%10]; //显示个位
delay();
delay();
delay();
delay();
P2=0xff;
P0=0xff;
delay();
delay();
delay();
delay();
}
/*******************************************
函数功能:主函数
******************************************/
void main(void)
{
EA=1; //开放总中断
EX0=1; //允许使用外中断
IT0=1; //选择负跳变来触发外中断
x=0;
while(1)
Display(x);
}
/**************************************************************
函数功能:外中断T0的中断服务程序
**************************************************************/
void int0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
x++;
if(x==100)
x=0;
}
关键字:外中断 计数 数码管显示
引用地址:
外中断计数2位数码管显示
推荐阅读最新更新时间:2024-03-16 15:17
ADC0832数字电压表数码管显示(示例程序)
;******************************************************************************** 描述: ADC0832数字电压表数码管显示 调节ADC0832旁边的电位器,数码管显示 ADC0832 转换值的大小 ;******************************************************************************* *************************************
[单片机]
51单片机对8位数码管依次显示0-7的设计
共阳极数组0~9:display[]={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90} 共阳极数组A~F:display[]={0x88,0x83,0xA6,0xC1,0x86,0x8E} 共阴极数组0~9:display[]={0x3F,0x06,0x5B,0x4F,0x6E,0x6D,0x7D,0x07,0x7F,0x6F} 共阴极数组A~F:display[]={0x77,0x7C,0x59,0x3E,0x79,0x71} 共阴、两组四位一体数码管,位选接74LS138译码器,输入(位选)CBA接P20,P21,P22。段选通过74573后接P1口。 若不使用译码器,可直
[单片机]
51单片机(二十一)—— 定时器计数功能
在本文,我们对51单片机定时器的计数功能进行测试,采用定时器0通过方式2产生10KHz的方波,并通过单片机的P1.0口输出。定时器1采用方式1的计数功能,即对外部输入的脉冲进行计数。T1与P3.5引脚复用。实验时,需要用杜邦线将单片机的P1.0引脚,与P3.5引脚连接在一起。T0输出的脉冲又通过P3.5引脚输入给定时器1的计数器。定时器1对脉冲进行计数,设置为5000个脉冲溢出一次。脉冲的周期为0.1ms,即定时器1的溢出周期为500ms,所以LED1以1秒一次的频率闪烁。 定时器0和定时器1的初始化代码如下所示 void init_T0_T1(void) { TMOD= 0x52; //定时器0使用方式2,8位自
[单片机]
STM32 外部计数ETR计算频率
STM32 外部计数ETR计算频率,测量100K频率,用定时器2定时250ms,定时器3PD2(TIM3_ETR)计数,计算公式f=n*t; void Tim3_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Prescaler = 0x00; TIM_TimeBaseStructure.TIM_Period = 0xFFFF; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStr
[单片机]
单片机定时/计数工作方式
单片机中的定时/计数器都能有多种用途,要通过定时/计数器的方式控制字来设置,需要的用途。 在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。,TMOD和TCON是名称,我们在写程序时就能直接用这个名称来指定它们,当然也能直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。 iframe id="iframe_0.48663783678784966" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://www.51hei.com/UpFiles/Pic/2007-
[单片机]
C51单片机的定时器计数器怎么用?
方法有很多的,给你一个,你可以调试一下,你可以通过不同的晶振去计算定时器初值,如果你懂定时器这部分很好调通的 #include sbit p1_0=P1^0; int i; //全局变量 void timing(void) //晶振为3.6864M { TMOD|=0x01; //定时器T0,工作方式1 TH0=0xC3; TL0=0xC7; //这两个寄存器存的是计数器的计数开始的值,这两个值累加至溢出后正好是50ms ET0=1; //使T0中断可以溢出 EA=1; //开启总中断 TF0=0; //溢出位清零 TR0=1; //开启T0 } /********定时中断
[单片机]
计数测试数码管显示程序
计数测试数码管显示程序 #include AT89X51.H //6.000MHz #define uchar unsigned char #define uint unsigned int #define L 0 #define R 1 uchar SEG7 ={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};/*0~9的数码管段码*/ #define reset() {WDT=0x1e;WDT=0xe1;} uchar act ={0xf3,0xfc};//数码管位码 /*******************************************
[单片机]
串行口通信 AD采集信号,显示在数码管,发送给上位机
一. 程序功能 用AD以1HZ的频率采集模拟信号,然后转换成数字量,显示在数码管上,再将其以1200bps发送到计算机,在计算机上显示. 二. 程序源码 #include reg52.h #include intrins.h //需要用到_nop_()函数 #define uchar unsigned char #define uint unsigned int sbit dula = P2 ^ 6; //申明U1锁存器的锁存端 sbit wela = P2 ^ 7; //申明U2锁存器的锁存端 sbit adwr = P3 ^ 6; //申明AD的WR端口 sbit
[单片机]