锁相环程序

上传人:ta****u 文档编号:170954108 上传时间:2022-11-23 格式:DOCX 页数:12 大小:40.03KB
返回 下载 相关 举报
锁相环程序_第1页
第1页 / 共12页
锁相环程序_第2页
第2页 / 共12页
锁相环程序_第3页
第3页 / 共12页
点击查看更多>>
资源描述
/ 工程名称:MzLH04_DuectNumber/ 作 者:xiiiqiaiig Zhang(小丑) (email: xinqiangNI)/ 联系方式:QQ 644272644版权所有:北京铭正同创科技有限公司/适应芯片:MCS51 (本例选择AT89S52)/编程环境:KMC51/实现功能:MZLH04模块的直接数字显示功能演示/ 系统要求:PC witli CPU 233IHz,128MB RAM,/Keil uVision3 (or later)/组成文件:/niain.c主程序文件/LCD_Dis.c/LCD_Dish/-MzLH04模块的基本驱动程序/硬件连接:/LCDCSP1.0/LCD SCKPl.2/LCD SDAPl.l/LCD RSTPl.3/端I I定义请参考LCD.Config.h文件中的定义/CPU运行频率11.0592MHz (每个指令为12周期)/LCD供电请参考具体的模块是3.3V的还是5V模块/当前版本:VI.00/ 口期:2009-02-10/参考文件:/维护记录:/ Version 2009-02-10-V10 Modified ByXiiiqiang Zhang(小丑)#mclude HLCD_Dis.hM#mclude ”stcl2c5a.1Tinclude #define umt unslugned mt#define uchai unsigned charunsigned char key;unsigned char adckey;unsigned char flag 1=1;/量程标志unsigned char flag2=l;/操作判断unsigned char flagO= 1;/步进频率标志unsigned char getad(void);unsigned char getkey(void);/数控脉冲发生器初始设置/sbit Dui=PlA5;sbit ENB=P1Z6;sbit CLK=P1A7;define qsz 1000 初始输出频率 lMHz= 1000=4KHZunsigned short fpb=10000; /晶振的分频比R值,初始分频比10000 (分频比)#define Min_Frequency 40#define Max_Frequency 65535unsigned short bjpl=1000L;/初始步进 1KHZ,单位 HZ (步进频率)unsigned iiit N_Bit_Stream; /N 值iiit num=0;mt pl; mt tj;unsigned char idata pinli5=0x00,0x00,0x00,0x00,0x00;unsigned short sw,gw,sfw、bfyqfvv;*定义寄存器的名字*/#define C_BitGrabbei_Register 7 /8 个时钟沿写 C 寄存器#define R_BitGrabbei_Register 14 /15 个时钟沿写 R 寄存器#define N_BitGrabbei_Register 15 /16 个时钟沿写 N 寄存器/* * */严正常时序、鉴相器A有效、LD有效、REFout=0. fVE和fRE无效*/#define Stai_C_Bit_Stream 0x6B 0x60, 3管脚2分频输出晶振频率,Fv, Fr输出分步后脉 冲extern void MC145170_Wiite_C_N_R_BitGrabber_Registei(chai BitGrabbei_Register,unsigned iiit Bit_Stream);extern void MC 145170_Reset(void);/数控脉冲发生器初始设置/void delay(unsigned int ms) 延时函数unsigned char i; while(ins)fdr(i=0;i250;i+)_nop_()op_()op_0;_nop_0;unsigned char getadQ/AD通道选择2转换速度选择sppdl=l/转换速度选择sppdO=O/AD通道选择赋值开AD转换电源启动AD转换/转换是否结束判断 unsigned char channel; unsigned char AD_finished=O; ADC_RES = 0;channel &= 0x01; ADC_CONTR |=0x40; ADC_CONTR &=0xDF; _nop_();ADC_CONTR |= channel; _nop_();ADC_CONTR |= 0x80; delay(l);ADC.CONTR |= 0x08; AD_fiiiished = 0; wliile (AD_fiiiished =0 )AD.finished = (ADC.CONTR & 0x10);ADC_CONTR &= 0xE7;/转换标志位清0 ,关闭AD转换电源return (ADC_RES); unsigned char getkey()unsigned char jp Jemp;char colunm=0xEE0xDE0xBE0x7F;charkeycode=0xEE,0xED.0xEB.0xE7.0xDE,0xDD.0xDB.0xD7,0xBE,0xBD.0xBB,0xB7,0x7E,0x7D,0x7B,0x77;/0 1 2 3 4 5 6 7 8 9 10do/Ifor(jp=0jp4Jp+)P2=coluninljp;if(P2 !=colunmjp)TimeDelay(20); if(P2!=colmniijp) / 按键在此列 temp=P2; for(jp=0;jp=O)Dm=(Bit_StreamBitGiabber_Register)&0x0001; /此处发生数据类型的转变,&0x0001 必须 有CLK=1;产生时钟上升沿CLK=0;BitGrabber_Register /ENB=1;/写入生效7/MC145170 复位函数/void MC145170_Reset(void)unsigned char Bit_sluft_counter; 移位计数器B it_shift_c ounter=0;CLK=0;ENB=1;/* ENB为高电平,时4到8个时钟上升沿,本函数取4个时钟上升沿。*/wliile(Bit_shift_counter4)CLK=1;Bit_shift_counter+;CLK=O;/* ENB为低电平,三个时钟上升沿,Dm为三个0。*/Dm=0;B it_shift_c ounter=0;ENB=0;wliile(Bit_shift_counter3)CLK=1;Bit_shift_counter+;CLK=0;严ENB为低电平,一个时钟上升沿,Dm为1。*/Dm=l;CLK=1;CLK=0;/*ENB为低电平,一个时钟上升沿,Dm为0. */Dm=0;CLK=1;CLK=0;/*总共九个时钟上升沿,芯片Reset */ENB=1;/主函数/void main(void)/数控脉冲发生器初始设置N_Bit_Streain=qsz;MC145170_ResetQ;MC145170_Write_C_N_R_BitGrabber_Register(C_BitGrabbei_Register,Stax_C_Bit_Stream);/ /初始化MC145170_Write_C_N_R_BitGrabber_Register(R_BitGrabbei_Register,fpb)y/ 初始分频 比MC145170_Write_C_N_R_BitGrabber_Register(N_BitGrabbei_RegisteiN_Bit_Stieam);/ /初始N值bjpl=bjpl/1000;/显示初始化/LCD_Imt();SetBackLight(O);设置背光的亮度等级为 0 SetBackLight(unsignedchar Grade) Grade 0127 的等级ClrScreenQ;FontSet(OJ); /ASCII 字符字体设置FontSet_cn(0,l); /汉字库字符字体设置FontMode(l.O);SetBackLight(lOO);设置背光打开PiitStrmg_cn(0,0,数控脉冲信号发生器”);PxitStimg_cn(36J3,H 频率 ”);/PutStnnjcu(M3周期wlule(l)delay(15O);/ PutStrmg(90J 5;*HzH);PutStimg(90,15:,KHzH);PutStrmg(90,15,”MHz”);ShowShon(0.15 ,N_Bit_Stream, 1);/ 测试分频比是否正确switch(flag2)case 1:PutSumg_cn(72J5,MJ;ShowShort(90,15,sfvv, 1);ShowShort(964 5.bfvvJ);ShowShort(102J5J );PutSumg(10&15JKHZ H);break;case 2:ShowShort(72,l 5,sw,l);ShowShort(784 5 ,gwJ);PutChar(84,15;/);ShowShort(90,15,sfvv, 1);ShowShort(964 5.bfvvJ);ShowShort(102J5、qfwJ );PutSumg(10&15JMHZ ”);break;default: break;PutString_cn(36、26,” 步进 H);ShowShort(7 8,2&bjpl, 1 );PutString( 100,28;tKHzH);if(flagl=l)PutStnnjcn39开机初始化”);else if(flagl=2)PutStnnjcu(0,39 厂请输入频率:”);t=num-l;fbi(i=O;inum;i+) ShowSlion(78+5*i,39,piiiliiJ);else if(flagl=3)if(pl0)PutStnn jcd(0,39执行完毕!H);elsePutStnn jcn(0,39.”输入有误!”);else if(flagl=4)PutStriiig_cn(039/请选择步进H);PmStnng_cn(0,52,史玉龙-王琪-徐国金”);SetBackLight(lOO);设置背光打开if(flagl !=2)&(flag 1? =4)num=0;pmli0=0x00;puilil=0x00;pmli2=0x00;pinli3=0x00;pinli4=0x00;/delay(l 00);/加延时防止屏幕抖动/矩阵键盘/key=getkev();switch(key)case 12: /C 键PutChai(2,28/C,);break:case 13: /D 键PutChar(2,2&D);break:case 14: /E 键PutChar(2,2&E);break:case 15: F 键/PutChai(2,28,T,);/步进设置/ delay(700);flag 1=4;flag0=flag0+l;if(flag0=l)bjpl=l;else if(flag0=2)bjpl=10;else if(flag0=3)flagO=l;bjpl=l;break: case 8:9 键/PutChar(2,28:9,);delay(700);1 =2)&(num=4)pinlinum+=9;break:case 9:/0 键/PutChar(2,28/0,);delay(700);if(flag =2)&(num=1000)flag2=2;sw=pl/l 000/10; gv=pl/1000%10;sfv=pl% 1000/100; bfv=pl% 1000/10% 10; qfv=pl% 1000% 10; if(pl0) PxitStimg_cn(039/输入正确! elsePiitStimg_cn(039/输入有误!delay(lOO);N_Bit_Streain=pL,rbjpl; /N Bit Stream=1000L; if(bjpl=l) fpb=10000L;else if(bjpl=10) fpb=1000L;/7MC14517O_ResetO;/MC145170_Write-C_N_R_BitGrabbei_Register(C_BitGrabber_Registei;Stai_C_Bit_Stieam);/初始化MC145170_Write_C_N_R_BitGrabber_Register(R_BitGrabber_Register,fpb)/ 分频比MC145170_Write_C_N_R_BitGrabbei_Register(N_BitGrabbei_Registei;N_Bit_Stieam);/N 值break;case 4:5 键/ PiitChai(2,28,F); delay(700);if(flag 1 =2)&(num=4) pinlinum+=5;break; case 5:6 键/ PutChai(2,2&8); delay(700);if(flag 1 =2)&(num=4) pinlinum+=6;break;case 6:/7 键/ PutChar(2.28;7,); delay(700);if(flag 1 =2)&(num=4) pinlinum+=7;break;case 7:/8 键/PutChai(2,2&8); delay(700);if(flag 1 =2)&(num=4) pinlinum+=8;break;case 0:/l 键 / PutChar(2,28;r); delay(700);if(flag 1 =2)&(num=4) pinlinum+=l;break;case 1 :/2 键/ PutChar(2.28;2,); delay(700);if(flag 1 =2)&(num=4) pinlinum+=2;break;case 2:/3 键delay(700);if(flag 1 =2)&(num=4)pinlinum+=3;break; case 3:/4 键 delay(700);if(flag 1 =2)&(num=4) pinlinum+=4;break;default: break;/
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!