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

温补晶振

  • NEC红外解码

    使用C51解码,红外编码NEC格式。晶振11.0592

    标签: 使用C51解码

    上传时间: 2016-02-02

    上传用户:pourout

  • 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

  • 单片机C语言(for)延时计算

    C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。  以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。 

    标签: for 单片机 C语言 延时计算

    上传时间: 2016-04-28

    上传用户:xcx7694

  • hcs301滚动码接收程序

    hcs301滚动码接收程序,是STC单片机解码接收的,晶振11.0592

    标签: hcs 301 滚动码 接收程序

    上传时间: 2016-07-15

    上传用户:liangyan320

  • 纯硬件频率计原理图

    采用纯硬件打造的数字频率计,不包含任何单片机,晶振,计数器,译码器,数码管

    标签: 硬件 原理图 频率计

    上传时间: 2017-12-13

    上传用户:fengshu

  • Footprint Maker 0.08 FPM

    是否要先打开ALLEGRO? 不需要(当然你的机器须有CADENCE系统)。生成完封装后在你的输出目录下就会有几千个器件(全部生成的话),默认输出目录为c:\MySym\. Level里面的Minimum, Nominal, Maximum 是什么意思? 对应ipc7351A的ABC封装吗? 是的 能否将MOST, NOMINAL, LEAST三种有差别的封装在命名上也体现出差别? NOMINAL 的名称最后没有后缀,MOST的后缀自动添加“M”,LEAST的后缀自动添加“L”,你看看生成的库名称就知道了。(直插件以及特别的器件,如BGA等是没有MOST和LEAST级别的,对这类器件只有NOMINAL) IC焊盘用长方形好像比用椭圆形的好,能不能生成长方形的? 嗯。。。。基本上应该是非直角的焊盘比矩形的焊盘好,我记不得是AMD还是NS还是AD公司专门有篇文档讨论了这个问题,如果没有记错的话至少有以下好处:信号质量好、更省空间(特别是紧密设计中)、更省锡量。我过去有一篇帖子有一个倒角焊盘的SKILL,用于晶振电路和高速器件(如DDR的滤波电容),原因是对宽度比较大的矩形用椭圆焊盘也不合适,这种情况下用自定义的矩形倒角焊盘就比较好了---你可以从网上另外一个DDR设计的例子中看到。 当然,我已经在程序中添加了一选择项,对一些矩形焊盘可以选择倒角方式. 刚才试了一下,感觉器件的命名的规范性不是太好,另好像不能生成器件的DEVICE文件,我没RUN完。。。 这个程序的命名方法基本参照IPC-7351,每个人都有自己的命名嗜好,仍是不好统一的;我是比较懒的啦,所以就尽量靠近IPC-7351了。 至于DEVICE,的选项已经添加 (这就是批量程序的好处,代码中加一行,重新生产的上千上万个封装就都有新东西了)。 你的库都是"-"的,请问用过ALLEGRO的兄弟,你们的FOOTPRINT认"-"吗?反正我的ALLEGRO只认"_"(下划线) 用“-”应该没有问题的,焊盘的命名我用的是"_"(这个一直没改动过)。 部分丝印画在焊盘上了。 丝印的问题我早已知道,只是尽量避免开(我有个可配置的SilkGap变量),不过工作量比较大,有些已经改过,有些还没有;另外我没有特别费功夫在丝印上的另一个原因是,我通常最后用AUTO-SILK的来合并相关的层,这样既方便快捷也统一各个器件的丝印间距,用AUTO-SILK的话丝印线会自动避开SOLDER-MASK的。 点击allegro后命令行出现E- Can't change to directory: Files\FPM,什么原因? 我想你一定是将FPM安装在一个含空格的目录里面了,比如C:\Program Files\等等之类,在自定义安装目录的时候该目录名不能含有空格,且存放生成的封装的目录名也不能含有空格。你如果用默认安装的话应该是不会有问题的, 默认FPM安装在C:\FPM,默认存放封装的目录为C:\MYSYM 0.04版用spb15.51生成时.allegro会死机.以前版本的Allegro封装生成器用spb15.51生成时没有死机现象 我在生成MELF类封装的时候有过一次死机现象,估计是文件操作错误导致ALLEGRO死机,原因是我没有找到在skill里面直接生成SHAPE焊盘的方法(FLASH和常规焊盘没问题), 查了下资料也没有找到解决方法,所以只得在外部调用SCRIPT来将就一下了。(下次我再查查看),用SCRIPT的话文件访问比较频繁(幸好目前MELF类的器件不多). 解决办法: 1、对MELF类器件单独选择生成,其它的应该可以一次生成。 2、试试最新的版本(当前0.05) 请说明运行在哪类器件的时候ALLEGRO出错,如果不是在MELF附近的话,请告知,谢谢。 用FPM0.04生成的封装好像文件都比较大,比如CAPC、RES等器件,都是300多K,而自己建的或采用PCB Libraries Eval生成的封装一般才几十K到100K左右,不知封装是不是包含了更多的信息? 我的每个封装文件包含了几个文字层(REF,VAL,TOL,DEV,PARTNUMBER等),SILK和ASSEM也是分开的,BOND层和高度信息,还有些定位线(在DISP层),可能这些越来越丰富的信息加大了生成文件的尺寸.你如果想看有什么内容的话,打开所有层就看见了(或REPORT) 非常感谢 LiWenHui 发现的BUG, 已经找到原因,是下面这行: axlDBChangeDesignExtents( '((-1000 -1000) (1000 1000))) 有尺寸空间开得太大,后又没有压缩的原因,现在生成的封装也只有几十K了,0.05版已经修复这个BUG了。 Allegro封装生成器0.04生成do-27封装不正确,生成封装的焊盘的位号为a,c.应该是A,B或者1,2才对. 呵呵,DIODE通常管脚名为AC(A = anode, C = cathode) 也有用AK 或 12的, 极少见AB。 除了DIODE和极个别插件以及BGA外,焊盘名字以数字为主, 下次我给DIODE一个选择项,可以选择AC 或 12 或 AK, 至于TRANSISTER我就不去区分BCE/CBE/ECB/EBC/GDS/GSD/DSG/DGS/SGD/SDG等了,这样会没完没了的,我将对TRANSISTER强制统一以数字编号了,如果用家非要改变,只得在生成库后手工修改。

    标签: Footprint Maker 0.08 FPM skill

    上传时间: 2018-01-10

    上传用户:digitzing

  • 晶振周围电路设计

    本文就使用石英晶体振荡器的周围电路设计中的噪音对策进行解说。

    标签: 晶振 电路设计

    上传时间: 2018-03-02

    上传用户:ahldcb004040

  • C51单总线读AM系列示例程序

    单片机 :AT89S52 或 STC89C52RC 典型传感器:AM2301 功能  :串口发送温湿度数据  波特率 9600  晶振  :12M (用户系统时钟如不是12M 请更改相关宏定义及注释的延时时间) 编译环境:  Keil 4

    标签: C51 单总线 程序

    上传时间: 2018-07-27

    上传用户:gmc832002

  • 89C52方波发生器源程序+PCB

    基于stc89C52的方波发生器 /*2018.08月制作完成;STC89C51,贴片,共阳LED *T0-计时25 微秒溢出中断一次;P1.0 P1.1为增加、减少键P0.7 输出方波 变量的定义:  pwm 设定的频率数 connter_1 根据设定频率计算后的,定时器溢出的次数值 connter : 定时器0计数溢出数 led_seg_code: 数码管7 段码 晶振:12M  ,共阴数码管或三极管驱动共阳数码管 */ /*用单片机产生频率可调的方波信号。输出方波的频率范围为1Hz-200Hz,频率误差比小于0.5%。 要求用"增加"、"减小"2 个按钮改变方波给定频率,按钮每按下一次,给定频率改变的步进步长为1Hz, 当按钮持续按下的时间超过2 秒后,给定频率以10 次/秒的速度连续增加(减少),输出方波的频率要求在数码管上显示。 P1.0,P1.1分别为增加和减小按键*/

    标签: 89C52 PCB 方波发生器 源程序

    上传时间: 2020-02-09

    上传用户:jmkl128

  • 基于51单片机的RS485从机系统设计

    题目:基于51单片机的RS485从机系统设计   单片机接口资源配置: 1.   上电复位电路; 2.   晶振电路采用11.0592Mhz晶振; 3.   485接口电路(P3.7用于485芯片的收发控制,收发管脚接单片机的rxd和txd); 4.   P2口通过外部跳线接相应的高低电平,配置从机地址为组号; 5.   P3.6外接一发光二极管(注意串联电阻进行限流); 6.   P3.2外接一按键,断开高电平,按下低电平; 7.   按键检测采用外部中断方式,下跳沿触发; 8.   单片机定时器0以模式1(16位模式)工作,产生50ms的定时中断,并在此基础上设计一单片机内部时钟(24小时制,能计数时、分、秒、50ms值); 9.   单片机串行通信采用模式1非多机通信方式,采用9600波特率以串行中断方式进行数据的收发通信,主机地址为0xF0,广播地址为0xFF。   系统功能需求: 1.   系统配置和自检功能: l  从机上电后进行初始化,通过读取P2口进行从机地址配置; l  发光二极管以每秒一次的频率闪烁(亮0.5秒,灭0.5秒); l  检测到一次按键按下操作后,熄灭发光二极管。   2.   数据接收和按键计时功能: l  从机接收主机程序(PC机上的串口调试程序)的按键允许命令帧并进行校验; l  校验正确并且目的地址是广播地址或者本从机的地址,通过发光二极管长亮指示,并允许按键操作; l  按键按下后,尽可能准确记录按键的动作时点(定时器的低8位、定时器的高8位、50ms值、秒、分、小时); l  按键操作只能响应一次,重复按键操作不响应; l  按键的动作时点记录后,发光二极管以每秒一次的频率闪烁(亮0.5秒,灭0.5秒)。   3.   数据发送功能: l  从机接收主机程序发来的时钟数据搜索命令帧并进行校验; l  如果校验正确并且数据帧的目的地址是本从机的地址,从机将前面记录的按键动作时点数据(定时器的低8位、定时器的高8位、50ms值、秒、分、小时)按附录中的时钟数据返回帧的帧格式回传给主机; l  时钟数据返回帧回传结束后,熄灭发光二极管。   4.   校验和生成和检测功能: l  发送数据帧时能自动生成数据帧校验和; l  每帧数据在发送帧尾前,发送一字节的当前帧数据的校验和; l  接收数据帧时能检测校验和并判断接收数据是否正确。 附录:帧定义   校验和的计算:除去帧头和帧尾后将帧中的其他数据求和并取低8位; 帧长:不计帧头、帧尾和校验和字节。   按键允许命令帧: 帧头 帧长 目的地址 源地址 命令字 校验和 帧尾 AA 04 FF F0 01 F4 66   时钟数据搜索命令帧: 帧头 帧长 目的地址 源地址 命令字  保留字 校验和 帧尾 AA 05 01 F0 03 00 F9 66   时钟数据返回帧: 帧头 帧长 目的地址 源地址 命令字 TL0 TH0 50ms 秒 分 时 校验和 帧尾 AA 0A F0 01 07 01 B6 09 03 00 00 C5 66     帧结构头文件frame.h(内容如下) //帧格式定义 #define FRAME_HEAD 0xAA    //帧头 #define FRAME_FOOT 0x66    //帧尾 #define FRAME_LEN  0x00    //帧长 #define FRAME_DST_ADR 0x01  //目的地址 #define FRAME_SRC_ADR 0x02 //源地址 #define FRAME_CMD  0x03    //命令字 #define FRAME_DATA 0x04    //帧数据起始 //帧命令定义 #define READY 0x01         //按键允许命令 #define TIME_SERCH 0x03    //时钟数据轮询命令 #define TIME_BACK  0x07    //时钟数据返回命令 //地址定义 #define BROAD_ADR  0xFF    //广播地址 #define MASTER_ADR 0xF0    //主机地址        

    标签: 51单片机 从机通信

    上传时间: 2020-06-18

    上传用户:umuo