虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

溢出

  • 实现6位频率计

    实现6位频率计,防止数据溢出,并对频率进行三分频

    标签: 频率计

    上传时间: 2017-07-02

    上传用户:Divine

  • 实现任意长的2个整数相加 但是有个BUG

    实现任意长的2个整数相加 但是有个BUG,就是当最高位溢出时,就缺少最高位的1

    标签: BUG 整数

    上传时间: 2013-12-10

    上传用户:924484786

  • 一个深度为32

    一个深度为32,字长为8_bit FIFO(先进先出)寄存器,有寄存器空、寄存器满和寄存器溢出信号。

    标签:

    上传时间: 2014-01-06

    上传用户:徐孺

  • 由8031内部定时器1

    由8031内部定时器1,按方式1工作,即作为16位定时器使用 每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发 光二极管。要求编写程序模拟一时序控制装置。开机后第一 秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四 秒钟L6,L8亮,第五秒L1,L3,L5,L7亮,第六秒钟L2,L4, L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又 从头开始,L1,L3亮,然后L2,L4亮......一直循环下去。

    标签: 8031 定时器

    上传时间: 2013-12-20

    上传用户:hullow

  • 接口资料1

    微机原理与接口知识点总结:   1.绪论:计算机系统组成;冯诺依曼体系结构;进制之间的转换;数的原码、反码、补码表示;补码加减法运算;溢出判断 2.通用计算机工作原理:指令格式;存储器模型;程序如何自动执行 3.CPU工作原理:CPU的基本构成(运算器、控制器、寄存器),各个部分的功能;CPU的工作原理;CPU的具体实例8086内部结构;8086的地址构成(逻辑地址与物理地址关系);8086存储器分段概念;8086存储器组织(存储顺序);8086的外部引脚;8086处理器的基本时序。

    标签: 接口资料1

    上传时间: 2016-01-03

    上传用户:glylgw

  • AVR单片机转速表

    /****************************************************************                  外部晶振8M                  PA0~3:四位数码管的位选                  PB0~7:数码管的8位段选                  外部中断0用于计数                  定时器0溢出中断的定时为1ms                  说明 :检测到水流较小时,继电器延时1秒关闭  ******************************************************************/                #include<iom16v.h>   #include<macros.h>   #define uchar unsigned char   #define uint unsigned int       char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  //数码管段选        char position[4]={0xfe,0xfd,0xfb,0xf7};//数码管位选        uint sumnum=0;  //用于记录1000ms内进入中断的次数        uint time=0;   //记录进入比较定时器0的次数        uint num=0;     //记录1ms内进入中断的次数        uint count=0;   //进入外部中断0的次数        uchar flag;        uint sumnum1;   //记录100ms内的数目       /***************************函数声明***************************/        void delay();        void display(uint m );        void init();        void init_0();        void init_2();    void _delay_us(uint l)   {        unsigned int i;        for(i=0;i<l;i++)        {        asm("nop");        }   }           /**************************主函数***********************************/       void main()   {        init();        init_0();        init_2();        while(sumnum<5)        {           PORTD=0XBF;           segdisplay(sumnum1);        }       while(1)       {           segdisplay(sumnum1);       }           }        /*************************扫描数码管时的延时函数*********************/        void delay()    {         uchar i,j;         for(i=6;i>0;i--)         for(j=225;j>0;j--);    }        /************************数码管显示函数*****************************/       void segdisplay( int temp)        {         int seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};         int temp1,temp2,temp3,temp4;         temp1=temp/1000;         temp2=(temp/100)%10;         temp3=(temp/10)%10;         temp4=temp%10;         DDRB=0xff;         DDRA|=0x0f;           PORTA=~BIT(3);           PORTB=seg[temp1];           _delay_us(100);           PORTA=~BIT(2);           PORTB=seg[temp2];           _delay_us(100);           PORTA=~BIT(1);           PORTB=seg[temp3];           _delay_us(100);           PORTA=~BIT(0);           PORTB=seg[temp4];           _delay_us(100);       }        /***********************管脚初始化函数*********************/        void init()    {                      DDRD|=0X40;   //PD4 设置为输出             PORTD=0XBF;                DDRA=0XFF;             DDRB=0XFF;             PORTA=0XFF;             PORTB=0XFF;    }        /***********************外部中断0初始化*********************/        void init_0()    {         MCUCR=0X02;   //INT0为下降沿触发         GICR=0X40;   //使能INT0中断         SREG=0X80;  //使能总中断    }        /**********************定时器2初始化***********************/        void init_2()    {         TCCR0=0x03;   // 内部时钟,64 分频(8M/64=125KHz)          TCNT0=0x83;   //装初值           TIMSK=0x01;   // 允许 T/C0溢出中断中断      }          /***********************外部中断0子函数********************/        #pragma interrupt_handler int0_isr:2        void int0_isr(void)        {             count++;        }        /*********************定时计数器0溢出中断子函数*****************/       #pragma interrupt_handler int0_over:10        void int0_over(void)       {           TCNT0=0x83;   //重装初值            if((time%100) == 0)               sumnum1 = num;           if(time == 1000)           {               sumnum=num;               if(sumnum<10)               {                                      if((flag==1)&&(sumnum<10))                   {                       PORTD=0XFF;                       flag=0;                   }                                      flag++;               }               else                       PORTD=0XBF;               num=0;               time=0;           }           num+=count;           count=0;           ++time;        } 

    标签: C语言

    上传时间: 2016-03-09

    上传用户:彦 yan

  • 一个按键控制的 10 级变速跑马灯试验

    在本课中,我们要用一个按键来实现跑马灯的 10 级调速。这又会涉及到键的去抖的问 题。  本课的试验结果是,每按一次按键,跑马速度就降低一级,共 10 级。  这里我们又增加了一个变量 speedlever,来保存当前的速度档次。  在按键里的处理中,多了当前档次的延时值的设置。  请看程序:  ――――――――――――――――  #define uchar unsigned char //定义一下方便使用  #define uint unsigned int  #define ulong unsigned long  #include <reg52.h> //包括一个 52 标准内核的头文件    sbit P10 = P1^0; //头文件中没有定义的 IO 就要自己来定义了  sbit P11 = P1^1;  sbit P12 = P1^2;  sbit P13 = P1^3;  sbit K1= P3^2;    bit ldelay=0; //长定时溢出标记,预置是 0  uchar speed=10; //设置一个变量保存默认的跑马灯的移动速度  uchar speedlever=0; //保存当前的速度档次    char code dx516[3] _at_ 0x003b;//这是为了仿真设置的  //一个按键控制的 10 级变速跑马灯试验  void main(void) // 主程序  {   uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入 P1 的值   uchar ledi; //用来指示显示顺序   uint n;     RCAP2H =0x10; //赋 T2 的预置值 0x1000,溢出 30 次就是 1 秒钟   RCAP2L =0x00;   TR2=1; //启动定时器   ET2=1; //打开定时器 2 中断   EA=1; //打开总中断     while(1) //主程序循环   {   if(ldelay) //发现有时间溢出标记,进入处理   {   ldelay=0; //清除标记   P1=ledp[ledi]; //读出一个值送到 P1 口   ledi++; //指向下一个   if(ledi==4)   {   ledi=0; //到了最后一个灯就换到第一个   }   }   if(!K1) //如果读到 K1 为 0   {   for(n=0;n<1000;n++); //等待按键稳定   while(!K1); //等待按键松开   for(n=0;n<1000;n++); //等待按键稳定松开     speedlever++;   if(speedlever==10)speedlever=0;   speed=speedlever*3; //档次和延时之间的预算法则,也可以用查表方法,做出 不规则的法则   }   }  }  //定时器 2 中断  timer2() interrupt 5  {   static uchar t;   TF2=0;   t++;     if((t==speed)||(t>30)) //比较一个变化的数值,以实现变化的时间溢出,同时限制了最慢速 度为 1 秒   {   t=0;   ldelay=1;//每次长时间的溢出,就置一个标记,以便主程序处理   }  }  ――――――――――――――――――――――   请打开 lesson11 目录的工程,编译,运行,看结果:  按 K1,速度则降低一次,总共 10 个档次。 

    标签: 10 按键控制 变速 跑马灯

    上传时间: 2017-11-06

    上传用户:szcyclone

  • 模拟 PWM 输出控制灯的 10 个亮度级别

    LED 一般是恒流操作的,如何改变 LED 的亮度呢?答案就是 PWM 控制。在一定的 频率的方波中,调整高电平和低电平的占空比,即可实现。比如我们用低电平点亮一个 LED 灯,我们假设把一个频率周期分为 10 个时间等份,如果方波中的高低电平占空比是 9:1, 这是就是一个比较暗的亮度,如果方波中高低电平占空比是 10:0,这时,全部是高电平, 灯是灭的。如果占空比是 5:5,就是一个中间亮度,如果高低比是 1:9,是一个比较亮的 亮度,如果高低是 0:10,这时全部是低电平,就是最亮的。  实际上应用中,电视屏幕墙中的几十百万 LED 象素都是这样控制的,而且每一个象素 都有红绿蓝 3 个 LED,每个 LED 可以变化的亮度是几百到几万或者更多的级别,以实现真 彩色的显示。还有在您的手机中,背光灯的亮度如果是可以变化的,也应该是这种工作方式。 目前的城市彩灯也有很多都使用了 LED,需要控制亮度是也是 PWM 控制。  下面来分析我们的例程,在这个例程中,我们将定时器 2 溢出定为 1/1200 秒。每 10 次脉冲输出一个 120HZ 频率。这每 10 次脉冲再用来控制高低电平的 10 个比值。这样,在 每个 1/120 秒的方波周期中,我们都可以改变方波的输出占空比,从而控制 LED 灯的 10 个 级别的亮度。  为什么输出方波的频率要 120HZ 这么高?因为如果频率太低,人眼就会看到闪烁感 觉。一般起码要在 60HZ 以上才感觉好点,120HZ 就基本上看不到闪烁,只能看到亮度的变 化了。  下面请看程序,程序中有比较多的注释:  ―――――――――――――――――――――――  #define uchar unsigned char //定义一下方便使用  #define uint unsigned int  #define ulong unsigned long  #include <reg52.h> //包括一个 52 标准内核的头文件    sbit P10 = P1^0; //要控制的 LED 灯  sbit K1= P3^2; //按键 K1    uchar scale;//用于保存占空比的输出 0 的时间份额,总共 10 份    char code dx516[3] _at_ 0x003b;//这是为了仿真设置的  //模拟 PWM 输出控制灯的 10 个亮度级别  void main(void) // 主程序  {   uint n;     RCAP2H =0xF3; //赋 T2 的预置值,溢出 1 次是 1/1200 秒钟   RCAP2L =0x98;   TR2=1; //启动定时器   ET2=1; //打开定时器 2 中断   EA=1; //打开总中断   while(1) //程序循环   { ;//主程序在这里就不断自循环,实际应用中,这里是做主要工作   for(n=0;n<50000;n++); //每过一会儿就自动加一个档次的亮度   scale++;   if(scale==10)scale=0;   }  }  //1/1200 秒定时器 2 中断  timer2() interrupt 5  {   static uchar tt; //tt 用来保存当前时间在一秒中的比例位置   TF2=0;     tt++;   if(tt==10) //每 1/120 秒整开始输出低电平   {   tt=0;     if(scale!=0) //这里加这一句是为了消除灭灯状态产生的鬼影   P10=0;   }     if(scale==tt) //按照当前占空比切换输出高电平   P10=1;    }  ――――――――――――――――――  在主程序中,每延时一段时间,就自动换一个占空比,以使亮度自动变化,方便观察。  编译,运行,看结果。  可以看到,LED 的亮度以每种亮度 1 秒左右不断变化,共有 10 个级别。

    标签: PWM 10 模拟 控制灯 亮度 输出

    上传时间: 2017-11-06

    上传用户:szcyclone

  • VK1625替代取代HT1625 LCD液晶显示驱动程序设计指引

    型 号:VK1625 / 品牌 VINTEK/VINKA/元泰 封装形式:QFP100 LQFP100 DICE裸片 COB邦定片 定制COG 基本说明 VK1625是一个外围设备专门设计的I / O型微控制器用于LCD扩大显示功能。该装置的显示部分512模式(64x8)。它也支持串行接口,蜂鸣器响,看门狗定时器和时基定时器功能。HT1625是一个内存映射和多功能的LCD控制器。的VK1625软件配置特征使它适合于多种LCD应用包括液晶显示模块和显示子系统。只用三条线是主机控制器和VK1625之间的接口要求。有QFP100封装,LQFP100封装。 QQ:1918885898 VK1625 产品特征 ★:工作电压:2.7V ~ 5.2V ★:内置的RC振荡器 ★:外部的32.768kHz晶体和32kHz频率源的输入 ★:1 / 4偏压,1 / 8的duty,帧频为64Hz ★:64x8显示模式8X64段 ★:内置的内部电阻式偏置发生器 ★:三条线串行接口 ★:8种时基/ WDT的选择 ★:时基或WDT溢出输出 ★:液晶显示内存的R / W地址自动递增 ★:两个可选蜂鸣器的频率(2/3) ★:关机命令降低功耗 ★:软件配置特征 ★:数据模式和命令模式指令 ★:三条数据访问模式 ★:提供 VLCD引脚来调整 LCD 工作电压 ★:规格介绍 100引脚 LQFP封装 VK1625 LQFP100 100引脚 QFP封装VK1625 QFP100

    标签: 1625 LCD VK HT 液晶 显示驱动 程序设计

    上传时间: 2018-07-10

    上传用户:szqxw1688

  • VK36W8I SOP16/QFN16 八点/8通道水位检测感应电容式芯片

                  深圳永嘉微电 超高性价比水位检测芯片推出   *水位检测芯片可用于需要检测水位,缺水,溢出等场合。适合应用于饮水机、净饮机、咖啡机、水壶、洗碗机、制冰机等水相关家用电器和电子产品。 测试环境:在一个玻璃容器外壁(玻璃1-5毫米不等),通过双面电子导热硅胶,把水位检测PCB直接贴在玻璃上面检测水位。1-8点高灵敏度电容式水位检测专用触控IC-VK36W系列 水位检测   背景技术:   目前的检水方式主要有探针检水、水位传感器检水(光电式水位传感器,超声波水位传感器)和干簧管检水等方式,但这些方式的应用成本高,并且其安装时需要用到很长的连接线路,为了配合长的连接线路,容易使得产品的结构受到限制,并且拆装复杂,价格昴贵,不利于产品的推广及普及广泛应用。   技术实现要素:   为解决上述问题,本实用新型的目的在于提供一种触摸感应检水电路,能够准确检测是否有水,并且能够降低电路的成本几个等级,简化检水的结构,使得拆装便利,有利于产品的生产。   VK36WXX系列(最多支持9个检测点)   是一款用于一段液位检测的专用集成电路。基于电容感应的检测原理,集成我们公司花费多年研究的独特算法,能够做到智能识别,无论是有液体上电,还是无液体上电,都能正确指示液位状态。本产品既可适用于直接接触液体的检测装置,也可适用于不直接接触液体的检测装置。尤其是非接触式的检测更安全更方便、更有优势,也可防腐蚀、防污染 1.液体检测器 2.触摸开关 3.加温器 4.喷雾器 5 水池、水箱、水缸、液体皿  联系人:许先生 联系手机:188 9858 2398 (微信) 联系QQ:191 888 5898 E-mail:zes1688@163.com

    标签: 16 36W SOP QFN VK 36 8I W8 水位检测 感应电容

    上传时间: 2019-08-28

    上传用户:szqxw1688