电子琴的汇编语言实现,利用TPC-H实验箱上的8253实现二级分频,同时配合以8255A,与门和DAC0832,通过扬声器放音,实现两个八度音高(包括半音)的电子琴。在软硬件相互配合下,电子琴具有弹奏和播放已存乐曲的功能,音长可控,播放速度可选,拥有美观的图形界面模拟真实琴键,且琴键随弹奏有起伏变化。利用微机内部的8253,8255A和内置扬声器,与TPC-H实验板上的8255A和LED,实现节拍器,可产生长度和速度可控的2/4拍,3/4拍及4/4拍等,LED和内置扬声器同时对节拍进行提示。
上传时间: 2014-05-29
上传用户:BOBOniu
此为基于FPGA的射频热疗系统的设计,包括温度测量模块,指定温度设计模块,模糊控制器模块,温度显示及分频模块等。
上传时间: 2014-07-06
上传用户:xuanjie
根据TLC7524输出控制时序,利用接口电路图,通过改变输出数据,设计一个正弦波发生器。TLC7524是8位的D/A转换器,转换周期为 ,所以锯齿波型数据有256个点构成,每个点的数据长度为8位。.FPGA的系统时钟为 ,通过对其进行5分频处理,得到频率为 的正弦波
上传时间: 2013-12-28
上传用户:zmy123
/**************************************************************** 外部晶振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
/*================================================================= 4扫16*16下入上出C语言程序, 低位起笔,数据反相。 预定义 **************************************************************/ #include #include //可使用其中定义的宏来访问绝对地址? bit ture=1; // 使能正反相位选择 bit false=0; // 使能反相 sbit SCK=P3^6; // EQU 0B6H ; 移位 sbit RCK=P3^5; //EQU 0B5H ; 并行锁存 //sbit P1_3=P1^3; //外RAM扩展读写控制,不能重复申明 sbit EN1=P1^7; //BIT sbit FB=0xD8; // FB作为标志 sfr BUS_SPEED=0xA1; //访问片外RAM速度设置寄存器 sfr P4SW=0xBB; //P4SW寄存器设置P4.4,P4.5,P4.6的功能 sfr P4=0xC0; // P4 EQU 0C0H sbit NC=P4^4; sbit CS=P4^6; //片选 sfr WDT_CONTR=0xC1; // 0C1H ;看门狗寄存器 sfr AUXR=0x8E; // EQU 08EH ;附件功能控制寄存器 sfr16 DPTR=0x82; sfr CLK_DIV=0x97 ; //时钟分频寄存器 const unsigned int code All_zk =256 ; // 0E11H ;原数据总字节 const unsigned int code am_zk =128 ; // 0E13H ;单幕数据量 const unsigned char code asp = 255; // asp数据相位字,如果是正相字,那么asp=0 bit basp=1; // asp数据相位字标记,如果是正相字,那么basp=0 const unsigned char code font[]= // 晶科电子LED数码(反相字) {0xBD,0x81,0xEF,0xFF,0xBD,0x81,0xF7,0xFF,0xEF,0xEB,0x80,0x9F,0xEF,0x8F,0xEF,0xEF,0x7F,0x7B,0x7B,0x7F,0xBF,0xEF,0xEF,0xFF,0x7F,0x00,0xFF,0xFF,0xFF,0x80,0xFE,0xFF, 0x81,0xBD,0x0F,0x0F,0x81,0xBD,0xF0,0xF0,0xEF,0xED,0xE7,0xE1,0xEF,0xE1,0xEE,0xEE,0x7F,0x7B,0x7B,0x7F,0xBF,0xEF,0xEF,0xFF,0x7F,0x7F,0x7F,0x03,0xFF,0xFF,0xFF,0xF0, 0xBD,0x81,0xEF,0xEF,0xBD,0x81,0xF7,0xF7,0xEF,0x2E,0xC7,0xEF,0xEF,0xEE,0xED,0xED,0xFF,0x03,0x03,0x7F,0x80,0xE0,0xE0,0xFF,0x5F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFB, 0xFF,0xBD,0xFF,0x0F,0xFF,0xBD,0xFF,0xF0,0xEF,0xEF,0xAB,0xEF,0xEF,0xEF,0xED,0xED,0xFF,0x7B,0x7B,0x03,0xFF,0xEF,0xEF,0xE0,0xBF,0x7F,0x7F,0xFF,0xFF,0xFF,0xDF,0xFD, 0xBD,0xFD,0xFD,0xFF,0xBD,0xED,0xBD,0xFF,0xDD,0xBD,0xDD,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xEF,0x00,0xEF,0xEB,0xEB,0x81,0xFB,0xC3,0xDA,0xF7,0xFF,0xDF,0xDF,0xEE,0xFF, 0x80,0xFD,0xFD,0xFF,0xC0,0xED,0xED,0xFF,0xE0,0xBD,0xBD,0xFF,0xFF,0xFF,0xFF,0xFF,0xB3,0x00,0xC7,0x6D,0x8D,0xEB,0xDD,0xF3,0xDB,0xDB,0xFB,0x40,0xDF,0xDF,0xEE,0xE0, 0xFF,0xFD,0xFD,0xFF,0xFF,0xFD,0xED,0xFF,0xFF,0xBD,0xBD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xB7,0x2B,0xAB,0xDE,0xF7,0xDD,0xFB,0xFB,0x5B,0xC3,0xF7,0xEB,0xD0,0xEE,0xEF, 0xFF,0xFD,0xFD,0xF8,0xFF,0xBD,0xE1,0xC0,0xFF,0xBD,0xBD,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xD3,0xED,0xC7,0xFF,0xF7,0xDC,0xFB,0xFF,0xDB,0xD9,0xF7,0xF7,0xDF,0xC0,0xEE}; const unsigned char data xzL_data =0x08; //0603H;一幕一行字节数 const unsigned int data aL_data =0x20; //单幕单号线(单组线)数据量 const unsigned char data mov =0x03A ; //移动速度 const unsigned int data t_T =0x040A ; //0E0AH ; 05FAH; ;停留时间 const unsigned char data mu_num=0x02 ; //0602H ;幕数 unsigned int m; //m幕长变量<=am_zk unsigned char data_z; //数据寄存器 unsigned int xd; //数据指针寄存器 /*********************************************************************** 数据转移子函数 ===============================================================*/ char MOVD() { unsigned char f,nm; //nm幕数控制 unsigned char code *dptr; unsigned char xdata *xdptr = 0; f = asp ; for (m=0; m
上传时间: 2017-05-04
上传用户:sbfd010
简单设计拔河游戏机包含六个模块 1. 按键模块:定义输入输出及按键模块。 2. 按键消抖模块:给每个按键两个状态,保证按键产生的信号可以消除抖动稳定,给所定按键两个状态,一个前状态,一个后状态,当时钟时钟的脉冲沿来临时,将按键状态赋值给前状态,设置定时器,当计数计满后,前状态值赋给后状态,按键输出值为前状态和后状态的取反的并。 3. 时钟分频模块:将Basys3的100M系统时钟分频成为周期为10ms,100Hz频率 4. 比较模块:由分频后的时钟信号模块控制按键信号模块,之后进入比较模块,若A的脉冲数大于B,则Led向A代表方向移动,反之则向B代表方向移动,若相等则不动。由Led的位置决定使能端的开启与关闭,若移动至A或B的顶端,则使能端控制Led无法再移动。除此还要设计计数器并可以显示在数码管上记下获胜者的盘数。 5. LED移动模块:在选定一定的时间周期内,检测按键A与按键B的产生的脉冲个数,进行比较,若A的脉冲数量大于B,则Led向A方向移动,反之则向B方向移动,若相等则不动。 6. 译码模块:将得到的信号t转化为Led的显示,最后赋值给Led输出端口,并且由数码管显示胜利的一方 。
标签: verilog
上传时间: 2020-05-19
上传用户:lzj007
这是一篇哈尔滨工业大学2012年 物理电子学工学博士的毕业论文。相干多普勒激光雷达是测量遥感风场和运动目标速度的有力工具。相干多普勒激光雷达的发射源普遍使用单纵模激光器,而锁模激光所具有的宽频谱、窄脉宽、高峰值功率等特性使其在作为相干激光雷达发射源方面具有潜在的应用价值。本文从理论上和实验上对基于锁模激光的相干多普勒激光雷达进行了研究。 理论上,在单频外差探测原理的基础上,考虑了具有 m+1 个模式、纵模间隔为 ω 的本振光,与发生了 Δω 频移的信号光相干拍频后的理论模型,证明了相位差恒定的锁模激光可以实现相干混频,并可以通过低通滤波或 FFT 频谱分析的方式检测出差频信号。利用这一理论模型进行了数值模拟计算,分析了信号光在不同的频移值时的拍频波形,讨论了实现相干探测本振光与信号光应满足的条件。 基于相干多普勒激光雷达系统对发射光源的要求,进行了锁模激光器的实验研究。通过使用不同的锁模器件得到锁模激光输出,其中主动锁模和调 Q 主动锁模都获得了单脉冲宽度在百皮秒量级、锁模深度 100%、锁模几率 95%以上的稳定的锁模脉冲序列输出。对被动锁模、主动锁模、调 Q 主动锁模的激光输出特性进行了对比研究,主动锁模脉冲序列包络时间较长但峰值功率较低,而调 Q 主动锁模峰值功率高但包络时间较短,不同类型的激光输出为后续的相干测速实验提供了多种选择。 利用声光移频器模拟外差探测中信号光发生的多普勒频移,进行了锁模激光拍频实验研究,并与单纵模激光拍频实验结果进行了比较。使用锁模激光在频移为 30 ~ 80 MHz 的范围内进行了拍频实验研究,拍频波形及信号处理的结果均与理论分析相符, 测量结果的相对误差在 0.5%以下。 分别使用脉宽为 10 ns和 16 ns 的调 Q 单纵模脉冲进行拍频,在信号光频移为 150 MHz 时测量结果的相对误差分别为 3.7%和 1.6%。对比实验结果发现,调 Q 单纵模脉冲由于有限的脉宽限制了拍频后包络的数量,导致误差相对较大,而锁模脉冲序列由于具有较长包络时间,在测量较低频移值时仍具有较高的精度,即测量低速目标时更具有优势。在具有较长包络时间的同时,锁模激光还具有高峰值功率和窄脉宽的特点。使用光纤耦合的方式进行了相干拍频实验,得到了稳定的相干拍频波形,FFT 频谱分析的结果与设定值和理论分析相符。
标签: 激光雷达
上传时间: 2022-02-12
上传用户:
本论文是依托“985”工程超宽带全中频比幅比相测向系统研制项目,在原有经典雷达接收机系统设计方案的基础上,结合测向系统的工作原理和测向要求,采用四通道一次变频超外差设计方案,基于MC和MMC器件分模块设计了一个雷达接收机,并对该接收机的频率源进行了研制论文首先针对该接收机系统的指标要求,进行了系统的变频分析以及链路的指标分配和核算,对接收机进行了系统级设计和功能模块规划。下变频电路是整个接收机系统的主要组成部分。论文选用双平衡混频器,并对下变频电路中各个功能模块,包括耦合电路、低噪声放大电路、混频电路、中频放大电路和中频滤波电路以及其本振信号功分电路和测试信号功分电路进行了设计和测试。在此基础上,还完成了下变频电路的结构布局和电磁兼容设计。频率源已成为雷达接收机系统的乃至整个雷达系统十分关键的技术。论文采用直接数字频率合成器(DDs)和锁相环(PLL)相结合的频率合成方案,完成了频率合成器,包括DDS、PLL以及其基于ARM的控制电路的设计和测试对接收机及其频率源的测试结果表明:系统工作状态正常,基本满足设计要求。21世纪进入高技术兵器时代,武器装备的自动化和智能化是其发展的主要趋势。智能化武器中最为突出的是精确制导和无人机,其精确的探测技术是由一个建立在一定体制上的测向系统完成,因而现代电子战对测向系统的准确性要求越来越高。在众多的测向体制中,比幅比桕测向具有系统设备少、易实现、通道的致性好及抗干扰性高等优点,被广泛使用于电子侦察设备。在这样一个测向系统中,雷达接收机是一个重要的组成部分。雷达(RADAR)词源于美国海军在1940年第二次世界大战中使用的一个保密代号,它是无线电探测和测距(Radio Detection and Ranging)的英文缩写,即用无线电方法发现目标并测定它们在空间的位置,因此雷达也称为“无线电定位”。随着雷达技术的发展,雷达的基本任务不仅仅是从探测目标中提取诸如目标距离,角坐标(方位角和俯仰角),而且还包括测量目标的速度,以及从目标回波中获取更多目标反射特性等方面的信息。
标签: 接收机
上传时间: 2022-03-29
上传用户:slq1234567890
最适合初学者入门 Kinetis 的教程随着技术的发展,单片机型号越来越繁多,入门的难度也逐渐加多,学习周期自然不断延长。为了让初学者快速入门,减少学习时间,尤其是为了那些参加智能车比赛而没时间学习深入研究Kinetis单片机朋友,我们特意写了Kinetis开发板的教程。力求大大减少初学者的学习时间。野火Kinetis开发教程,主要有IAR的使用教程、Kinetis启动流程讲解、野火K60库的调用三个部分组成。我们不再详细讲解寄存器,而且推荐你们直接调用我们的函数库。野火K60函数库,函数内部会自动计算频率,设置分频,直接调用,减少你们的后顾之忧,可以加快你们的开发速度。目前,单片机型号如此之多,而产品的开发所允许给我们的时间越来越少,我们完全没有必要深入研究寄存器设置,就算你能把寄存器背得滚瓜烂熟,过段时间不去接触,还是没法记住的。现在的单片机开发,工程师往往都是利用官方的固件库来进行开发,而不再是靠自己重新建立自己的函数库进行开发。例如ST公司推出的ST库,让你可以完全不需要考虑底层开发而直接开发自己的产品。飞思卡尔公司,在这方便确实让人感到失望,这也是野火嵌入式工作室要建立自己的野火Kinetis库的原因。
上传时间: 2022-06-23
上传用户:jason_vip1
《现代无线系统射频电路实用设计:有源电路与系统》(卷2)从介绍有源线性电路和RF稳定性分析开始,讲述了低噪声和小信号宽带放大器设计。同时对现代RF器件及其建模做出综述,探究像谐波平衡这样的非线性电路仿真技术,并始终用大量的图示来说明有源电路设计中现代CAD工具的使用方法。工程师们通过在高功率RF晶体管放大器、振荡器、混频器和倍频器应用这些非线性设计技术,然后再去学习理论,会对器件的工作.性能有个直观的理解。
上传时间: 2022-07-04
上传用户: