精华内容
下载资源
问答
  • #include <reg52.h> #include <intrins.h> #define uchar unsigned char ...#define uint unsigned int .../**tatle_du数组数据为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,H,L**/ uchar code tatle_du[]={0x...

    #include <reg52.h>
    #include <intrins.h> #define uchar unsigned char #define uint unsigned int /**tatle_du数组数据为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,H,L**/ uchar code tatle_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71, 0x76,0x79,0x38,0}; uchar code tatle_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; sbit dula=P2^6; sbit wela=P2^7; uchar tt,t0,numwe,numdu,temp,bai,shi,ge,flag,flag1; uint shu; void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge); void delay(uchar z); void inter_init(); void main() { inter_init(); while(1) { if(flag1 != 1) { display(7,6,5,bai,shi,ge); } else { display(16,17,18,18,0,19); } } } /*定时器0流水灯与闪烁*/ void inter0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; /*如果减数不到398,流水灯与减数同时运行,如果到了398开启闪烁*/ if(flag != 1) { /*流水灯*/ if(tt==10) { tt=0; delay(5); temp=_crol_(temp,1); P1=temp; } } else { /*使灯闪烁4秒*/ if(tt%4==0) { P1=~P1; } if(tt==80) { TR0=0; P1=0xff; flag1=1; } } } /*定时器1数码管显示*/ void inter1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; t0++; if(t0==2) { t0=0; shu--; bai=shu/100; shi=shu%100/10; ge=shu%10; if(shu==398) { TR0=0; //关闭定时器0,关闭流水灯 P1=0xff; TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt=0; TR0=1; //开启定时器0,并填充数据。使灯闪烁 flag=1; TR1=0; //关闭定时器1保持数据显示 } } } void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) { for(y=110;y>0;y--); } } void inter_init() { tt=0; t0=0; flag=0; flag1=0; shu=432; temp=0xfe; P1=temp; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; } void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge) { dula=1; P0=tatle_du[aa]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(5); dula=1; P0=tatle_du[bb]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(5); dula=1; P0=tatle_du[cc]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(5); dula=1; P0=tatle_du[bai]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(5); dula=1; P0=tatle_du[shi]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(5); dula=1; P0=tatle_du[ge]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay(5); }   

     

    转载于:https://www.cnblogs.com/eeexu123/p/6625477.html

    展开全文
  • 利用动态扫描和定时器1在数码管上显示出从765432开始以 1/10秒的速度往下递减直至765398并保持显示此数,与此 同时利用定时器0以500MS速度进行流水灯从上至下移动,当 数码管上数减到停止时,实验板上流水灯也...
    利用动态扫描和定时器1在数码管上显示出从765432开始以
    1/10秒的速度往下递减直至765398并保持显示此数,与此
    同时利用定时器0以500MS速度进行流水灯从上至下移动,当
    数码管上数减到停止时,实验板上流水灯也停止然后全部开始
    闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出
    ‘HELLO’,到此保持住。
    
    #include<reg52.h>
    #include<intrins.h>
    #define uchar unsigned char
    #define uint unsigned int 
    uchar temp,t0,t1,flag,flag1;
    uint shu;
    uchar aa,bb,cc,bai,shi,ge;
    sbit wela=P2^0;
    sbit dula=P2^1;
    uchar code table[]={
    0x3f,0x06,0x5b,0x4f,
    0x66,0x6d,0x7d,0x07,
    0x7f,0x6f,0x77,0x7c,
    0x39,0x5e,0x7b,0x71,
    0x76,0x79,0x38,0x3f,0};
    void init();
    void Delay(uchar z);
    void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge);
    void main()
    {
    	init();
    	while(1)
    	{
    		if(flag1!=1)
    		{
    	    	display(7,6,5,bai,shi,ge);
    		}
    		else
    		{
    			display(16,17,18,18,19,20);
    		}
    	}
    }
    void init()
    {
    	flag=0;
    	shu=432;
    	temp=0xfe;
    	P1=temp;
    	TMOD=0x11;
    	TH0=(65536-50000)/256;
    	TL0=(65536-50000)%256;
    	TH1=(65536-50000)/256;
    	TL1=(65536-50000)%256;
    	EA=1;
    	ET0=1;
    	ET1=1;
    	TR0=1;
    	TR1=1;	
    }
    void timer0() interrupt 1
    {
    	TH0=(65536-50000)/256;
    	TL0=(65536-50000)%256;
    	t0++;
    	if(flag!=1)
    	{
    		if(t0==10)
    		{
    			t0=0;
    			temp=_crol_(temp,1);
    			P1=temp;
    		}
    	}
    	else
    	{
    		if(t0%4==0)
    		{
    			P1=~P1;
    			if(t0==60)
    			{
    				TR0=0;
    				P1=0xff;
    				flag1=1;
    			}
    		}
    	}	
    }
    void timer1() interrupt 3
    {
    	TH1=(65536-50000)/256;
    	TL1=(65536-50000)%256;
    	t1++;
       	if(t1==2)
    	{
    		t1=0;
    		shu--;
    		bai=shu/100;
    		shi=shu%100/10;
    		ge=shu%10;
    		if(shu==398)
    		{
    			TR0=0;
    			TH0=(65536-50000)/256;
    			TL0=(65536-50000)%256;
    			TR0=1;
    			flag=1;
    			t0=0;
    			P1=0xff;
    			TR1=0;
    		}	
    	}
    }				  
    void Delay(uchar z)
    {
    	uchar x,y;
    	for(x=z;x>0;x--)
    	{
    		for(y=110;y>0;y--);
    	}
    }
    void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge)
    {
    	dula=1;
    	P0=table[aa];
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xfe;
    	wela=0;
    	Delay(1);
    	
    	dula=1;
    	P0=table[bb];
    	dula=0;
    	P0=0xff;
    	wela=1;		   
    	P0=0xfd;
    	wela=0;
    	Delay(1);
    	
    	dula=1;
    	P0=table[cc];
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xfb;
    	wela=0;
    	Delay(1);
    
    	dula=1;
    	P0=table[bai];
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xf7;
    	wela=0;
    	Delay(1);
    
    	dula=1;
    	P0=table[shi];
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xef;
    	wela=0;
    	Delay(1);
    
    	dula=1;
    	P0=table[ge];
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xdf;
    	wela=0;
    	Delay(1);
    }
    

      

    转载于:https://www.cnblogs.com/fengyepiaolei/archive/2011/11/18/2254560.html

    展开全文
  • 74HC595是具有8位移位寄存器一个存储器,三态输出功能。移位寄存器存储器是分别的时钟。数据在SCK的上升沿输入,在RCK的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个...
  • 数码管显示分静态扫描和动态扫描动态扫描显示一般分两种方式 1、选用一个数码管位,写断码显示,延时一定的时间,关闭显示,选择下一位,依次类推,完成数码管的多位扫描显示,这种方式比较耗CPU资源。 2、...

    编写程序,令数码管的显示顺序为:0123,1230,2301,3012。

    数码管显示分静态扫描和动态扫描,动态扫描显示一般分两种方式

    1、选用一个数码管位,写断码显示,延时一定的时间,关闭显示,选择下一位,依次类推,完成数码管的多位扫描显示,这种方式比较耗CPU资源。

    2、利用定时器,每隔一个固定的时间去选通,写断码,这种方式可以降低CPU的占用时间,同时,每个数码管显示时间固定,不存在“抖”的现象。

    本程序中使用第二种方式,利用Timer2定时器的溢出中断实现动态扫描,Timer2包含一个周期控制寄存器,可以自动控制溢出周期。周期控制寄存器PR2的存在使得TIMER2的计数值有一个可以自由设定的上限。当TIMER2与PR2相等,就会清零。

    若使数码管的显示顺序为:0123,1230,2301,3012,可对四个数码管分别设置四个数组:

    • const uint16 display1[] = {0, 1, 2, 3}; //第一位数码管显示顺序
    • const uint16 display2[] = {1, 2, 3, 0}; //第二位数码管显示顺序
    • const uint16 display3[] = {2, 3, 0, 1}; //第三位数码管显示顺序
    • const uint16 display4[] = {3, 0, 1, 2}; //第四位数码管显示顺序

    使得各位分别循环显示相应数字。具体实现方法见源代码。

    #include <htc.h>
    
    #define uint8 unsigned char
    #define uint16 unsigned int
    
    __CONFIG(FOSC_HS &WDTE_OFF &BOREN_OFF &PWRTE_OFF &LVP_OFF); //设置配置位
    //WDTE_OFF:disable watchdog timer       看门狗禁止
    //LVP_OFF:low voltage programming disabled  低电压编程禁止
    //FOSC_HS:high speed crystal/resonator  4M以上晶振选择HS高速
    //PWRTDIS:disable power up timer
    //BOREN_OFF:disable brown out reset
    
    /*************************定义全局变量******************************************/
    
    uint16 count = 0;
    uint16 count2 = 0;
    uint8 chosebit = 0;
    const uint8 disp[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; //0~9共阳数码管段码表
    uint16 i = 0;
    const uint16 display1[] = {0, 1, 2, 3}; //第一位数码管显示顺序
    const uint16 display2[] = {1, 2, 3, 0}; //第二位数码管显示顺序
    const uint16 display3[] = {2, 3, 0, 1}; //第三位数码管显示顺序
    const uint16 display4[] = {3, 0, 1, 2}; //第四位数码管显示顺序
    
    /*******************************************************************************
    * 函 数 名: Time2_Init(void)
    * 函数功能: 定时器2初始化
    * 入口参数: 无
    * 返    回: 无
    *******************************************************************************/
    
    void Time2_Init(void)
    {
        T2CON = 0x01;   //postscale 1:1 prescale 1:4
        PR2 = 250;      //匹配寄存器   1*4*250*200ns = 200us
        TMR2 = 0x00;    //计数器清零
        TMR2IE = 1;
        TMR2IF = 0;
        PEIE = 1;           //开外设中断
        GIE = 1;            //开总中断
    }
    
    /*******************************************************************************
    * 函 数 名: LED_Display_Init(void)
    * 函数功能: 数码管显示初始化
    * 入口参数: 无
    * 返    回: 无
    *******************************************************************************/
    
    void LED_Display_Init(void)
    {
        ADCON1 = 0x86;  //10000110  PORTA口设置为数字IO口
        TRISA &= 0xE3;  //RA2、RA3、RA4设置成输出模式
        TRISE &= 0xEF;  //配置PORTD为普通IO口,对PORTD的操作务必加上这句
        TRISD = 0x00;   //数据线配置为输出
    }
    
    /******************************************************************************
    * 函 数 名: main(void)
    * 函数功能: 利用定时器2进行计时
    * 入口参数: 无
    * 返    回: 无
    *******************************************************************************/
    
    void main(void)
    {
        LED_Display_Init();
        Time2_Init();
        TMR2ON = 1;     //开始计数
        while(1)
        {
        }
    }
    
    /******************************************************************************
    * 函 数 名: interrupt Time2(void)
    * 函数功能: 中断处理程序
    * 入口参数: 无
    * 返    回: 无
    *******************************************************************************/
    
    void interrupt Time2(void)
    {
        if(TMR2IF)              //定时器2计数值与pr2匹配
        {
            TMR2IE = 0;
            TMR2ON = 0;         //停止计数
            TMR2IF = 0;
            count++;            //计数器加1
            count2++;
            if(count >= 25)     //200us*25=5ms(200HZ)
            {
                count = 0;
                PORTD = 0xFF;
                switch(chosebit)
                {
                case 0:
                    PORTA = (PORTA & 0xE3) | 0x0c;  //选通第一位数码
                    PORTD = disp[display1[i]];      //送字型
                    chosebit = 1;
                    break;
                case 1:
                    PORTA = (PORTA & 0xE3) | 0x10;  //选通第二位数码
                    PORTD = disp[display2[i]];      //送字型
                    chosebit = 2;
                    break;
                case 2:
                    PORTA = (PORTA & 0xE3) | 0x14;  //选通第三位数码
                    PORTD = disp[display3[i]];      //送字型
                    chosebit = 3;
                    break;
                case 3:
                    PORTA = (PORTA & 0xE3) | 0x18;  //选通第四位数码
                    PORTD = disp[display4[i]];      //送字型
                    chosebit = 0;
                    break;
                default:
                    break;
                }
            }
            if(count2 >= 5000) //当前显示数字驻留 5000/100*(4*5)mS=1S
            {
                i++;
                if(i == 4)
                {
                    i = 0;
                }
                count2 = 0;
            }
            TMR2 = 0x00;    //计数器清零
            TMR2ON = 1;
            TMR2IE = 1;
        }
    }
    展开全文
  • 中断+数码管动态显示+流水灯

    千次阅读 2017-05-21 13:12:34
    Question:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯...

    Question:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出“HELLO”。到此保持住。

    #include <reg52.h>
    #include <intrins.h>
    #define uint unsigned int
    #define uchar unsigned char
    uchar temp;
    uchar t0;
    uchar t1;
    uchar flag,flag1;
    uchar bai,shi,ge;
    uint num;
    sbit duan=P2^6;
    sbit wei=P2^7;
    uchar code table[]={
    0x3f,0x06,0x5b,0x4f,
    0x66,0x6d,0x7d,0x07,
    0x7f,0x6f,0x77,0x7c,
    0x39,0x5e,0x79,0x71,
    0x76,0x79,0x38,0x3f,0};
    void init();
    void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge);
    void delay(uint xms);
    void main()
    {
    init();
    while(1)
     {
    
       if(flag1!=1)
           display(7,6,5,bai,shi,ge);
       else
           display(16,17,18,18,19,20);
     }
    }
    void delay(uint xms)
    {
     uint i,j;
     for(i=0;i<xms;i++)
       for(j=0;j<112;j++);
    
    
    }
    void init()
    {
     num=432;
     temp=0xfe;
     P1=temp;
     TMOD=0x11;
     TH0=(65536-50000)/256;
     TL0=(65536-50000)%256;
     TH1=(65536-50000)/256;
     TL1=(65536-50000)%256;
     EA=1;
     ET0=1;
     ET1=1;
     TR0=1;
     TR1=1;
    
    
    }
    void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge)
    {
     duan =1;
     P0=table[aa];
     duan =0;
     P0=0xff;
     wei=1;
     P0=0xfe;
     wei=0;
     delay(1);
    
      duan =1;
     P0=table[bb];
     duan =0;
     P0=0xff;
     wei=1;
     P0=0xfd;
     wei=0;
     delay(1);
    
    
     duan =1;
     P0=table[cc];
     duan =0;
     P0=0xff;
     wei=1;
     P0=0xfb;
     wei=0;
     delay(1);
    
    
     duan =1;
     P0=table[bai];
     duan =0;
     P0=0xff;
     wei=1;
     P0=0xf7;
     wei=0;
     delay(1);
    
    
     duan =1;
     P0=table[shi];
     duan =0;
     P0=0xff;
     wei=1;
     P0=0xef;
     wei=0;
     delay(1);
    
    
     duan =1;
     P0=table[ge];
     duan =0;
     P0=0xff;
     wei=1;
     P0=0xdf;
     wei=0;
     delay(1);
    
    
    
    
    }
    void timer0() interrupt 1
    {
     TH0=(65536-50000)/256;
     TL0=(65536-50000)%256;
     t0++;
     if(flag!=1)
     {
       if(t0==10)
     {
      t0=0;
      temp=_crol_(temp,1);
      P1=temp;
    
     }
    
     }
     else
     {
      if(t0%4==0)
       P1=~P1;
      if(t0==60)
       {
        TR0=0;
        P1=0xff;
        flag1=1;
        }
    
    
    
    
     }
    }
    
    void timer1() interrupt 3
    {
     TH1=(65536-50000)/256;
     TL1=(65536-50000)%256;
     t1++;
     if(t1==2)
     {
      t1=0;
      num--;
      bai=num/100;
      shi=num%100/10;
      ge=num/10;
      if(num==398)
      {
       TR0=0;
       TH0=(65536-50000)/256;
       TL0=(65536-50000)%256;
       TR0=1;
       flag=1;
       t0=0;
       P1=0xff;
       TR1=0;
    
      }
    
     }
    
    }
    展开全文
  • FTP的目标是:(1)提高文件的共享性(计算机程序/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠高效地传输,虽然用户可以在终端上...
  • 51定时器控制数码管动态显示

    千次阅读 2020-07-08 23:11:39
    数码管采用两个74HC573芯片作为位选段选的锁存器分别由weladula控制(高电平有效); 原理图如下: 定时器的代码如下: #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef ...
  • 上一篇 BlogBlogBlog 主要记录了一些简单的外部中断和定时器的使用,在那个时候我们还只会让指定的数码管显示同一个数字,在这篇博文中,我们就记录一下几种让不同数码管显示不同数字(也叫做动态显示)的办法。...
  • STM32单片机利用定时器实现按键采集

    千次阅读 2020-08-11 21:01:24
    源码下载链接: 工程项目结构如下图所示: 其中画红色方框部分为重要函数来进行讲解 TIMx.c #include "TIMx/TIMx.h" ... * 功能:初始化定时器 ... * TIMx:指定待设置的定时器,TIM1-TIM4 *
  • 1利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后...
  • (一)项目任务ü 任务1:用定时方式控制LEDn 子任务1.1 两种定期器的认识n 子任务1.2 掌握定期器的定时原理计算方法n 子任务1.3 采用定时器方法实现点亮LED功能ü 任务2:采用按键扫描控制LEDn 子任务2.1 C语言--...
  • 按键抖动的原因: 通常按键所用的开关都是机械弹性开关。当按键触点闭合或者断开时...利用电容的充放电特性对抖动过程中产生的电压毛刺进行平滑处理。 软件消抖: 通过延迟程序过滤,通过延迟来过滤掉抖动时间。 ...
  • 利用51单片机的定时器设计一个时钟

    千次阅读 2020-06-07 10:05:58
    利用51单片机的定时器设计一个时钟 一、功能要求 1602液晶显示时间,且每秒更新,自动计时。 用3个按键实现调节时、分、秒更能,可以定义为功能键、增加键、减小键。 当按键被按下时,蜂鸣器响一声提示。 利用AT24C...
  • 利用动态扫描和定时器1在数码管上显示出765432开始以1/10s的速度往下递减至765398 并保持显示此数,与此同时利用定时器0以500ms的速度进行流水灯从上往下移动, 当数码管显示到停止时,实验板上流水灯也停止然后全部...
  • 利用定时器0,工作方式1实现LED以1s亮灭闪烁
  • 使用一个硬件定时器进行固定周期(比如1ms)定时,用一个结构体数组作为软定时器描述表,数组的结构体数就是最大虚拟定时器的数量,每个结构体的成员都包括虚拟定时器状态(空闲、激活、运行、超时触发、周期触发)、...
  • 今天微机原理实验老师布置了一道课后作业,就是利用51单片机做一个秒表,本来单片机是有P0,P1,P2,P3共计32个I/O口可以用的,但是因为实验箱内单片机做了外部扩展,所以端口不够用,改成利用C51单片机外扩8255实现...
  • /*动态扫描数码管的步骤变量*/ unsigned char ucDisplayUpdate = 1; /*更新显示标志*/ unsigned int uiVoiceCnt = 0; /*蜂鸣器鸣叫的持续时间计数器*/ void Dig_Hc595_Drive(unsigned char, unsigned char); /*根据...
  • 1硬件连接定时器是单片机内部的特殊功能模块。在控制系统中,常常要求有一些实时时钟以实现定时或者延时控制,如定时中断、定时检测、定时扫描等等,也往往要求有计数器,对外部事件进行计数。要实现定时或者延时...
  • 单片机的定时器和中断可以说是贯穿了各个模块的始终,这一个概念可以说是最最最重要的了,每一个模块的调用很多都需要在中断里面,包括后面的I2C,Uart等等 如有错误,欢迎大佬指出 单片机原理图 矩阵键盘 原理图 ...
  • 51单片机交通灯实验,救护车到来时由外部中断实现,下降沿触发,
  • STM32 使用状态机和定时器的方法实现按键操作,多按键操作,
  • 定时扫描独立按键

    千次阅读 2019-03-07 21:50:19
    定时扫描独立按键 /* 文件名: 描 述: 作 者:思索与猫 日 期: 备 注:S4每次加1,S5每次减2,S6每次加3,S7每次减4 #include&amp;amp;amp;amp;amp;amp;amp;lt;stc15f2k60s2.h&amp;amp;...
  • 步进电机是数字控制电机,将脉冲信号转换成角位移,电机的转速、停止的位置取决于脉冲信号的频率脉冲数,而不受负载变化的影响,非超载状态下,根据上述线性关系,再加上步进电机只有周期性误差而无累积误差,因此...
  • 小灰的51单片机学习之什么是51单片机(1)

    千次阅读 多人点赞 2019-03-25 03:31:31
    哈喽,我是小灰第一次大家见面,请多多支持呀! 什么是51?肯定是你点开这篇文章最大的疑问,不要着急我们慢慢探寻什么是51! 1.不懂就问 我们搞技术就要学会不懂就问,我们不知道我们就去度娘看一看吧 小灰...
  • 目录1. ADC简介1.1ADC通道转换时间1.2ADC触发方式、模式等的设置(ADC_CR2)1.3ADC的数据存储(ADC_DRADC_JDRx)1.3.1 规则通道1.3.2 注入通道1.4工作流程2 软件触发方式 ADC作为一种模数转换功能,在实际应用中...
  • 1.定时器个数三个(T0,T1,T2),T0T1与传统的51单片机兼容,T2是此型号单片机增加的资源 注意:定时器的资源单片机的型号是关联在I起的,不同的型号可能会有不同的定时器个数操作方式,但一般来说,T0T1的...
  • 关于数码管动态扫描制作简易计数器 ** 第一次写博客,肤浅之处望路过的大佬做出指点。这两天无事琢磨了一下数码管的显示问题,并制作了一个简易的计数器。好了,废话不多说直接进入正题。 由于电路图比较简单故...
  • 采用中断技术,每按一下按键,计数器加1,并用LED显示出来。 [硬件电路] 注意:我们只用4位数码管中的两位。 注意:a接P0.0;b接P0.1;c接P0.3…… 注意: 2H接P2.0; 1H接P2.1; 中断按键已经接好。 [C语言源程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,925
精华内容 3,570
关键字:

利用动态扫描和定时器1