锁相环程序(MC145170)

上传人:仙*** 文档编号:32726730 上传时间:2021-10-15 格式:DOC 页数:12 大小:74KB
收藏 版权申诉 举报 下载
锁相环程序(MC145170)_第1页
第1页 / 共12页
锁相环程序(MC145170)_第2页
第2页 / 共12页
锁相环程序(MC145170)_第3页
第3页 / 共12页
资源描述:

《锁相环程序(MC145170)》由会员分享,可在线阅读,更多相关《锁相环程序(MC145170)(12页珍藏版)》请在装配图网上搜索。

1、/=/ 工程名称:MzLH04_DirectNumber/ 作 者: xinqiang Zhang(小丑) (email: xinqiangM) / 联系方式:QQ 644272644/版权所有:北京铭正同创科技有限公司 / 适应芯片: MCS51 (本例选择AT89S52)/ 编程环境: Keil C51/ 实现功能: MzLH04模块的直接数字显示功能演示/ 系统要求: PC with CPU 233MHz,128MB RAM,/ Keil uVision3(or later)/ 组成文件:/ main.c-主程序文件/LCD_Dis.c/ LCD_Dis.h/-MzLH04模块的基本驱动

2、程序/硬件连接:/LCD CS -P1.0/LCD SCK-P1.2/LCD SDA-P1.1/LCD RST-P1.3/ 端口定义请参考LCD_Config.h文件中的定义/CPU运行频率11.0592MHz(每个指令为12周期)/LCD 供电请参考具体的模块是3.3V的还是5V模块/ 当前版本: V1.00/ 日期: 2009-02-10/ / 参考文件: / 维护记录:/-/ Version 2009-02-10-V10 Modified By Xinqiang Zhang(小丑)/=#include LCD_Dis.h#include stc12c5a.h#include #defin

3、e uint unshigned int#define uchar unsigned charunsigned char key;unsigned char adckey;unsigned char flag1=1;/量程标志unsigned char flag2=1;/操作判断unsigned char flag0=1;/步进频率标志unsigned char getad(void);unsigned char getkey(void);/数控脉冲发生器初始设置/sbit Din=P15; sbit ENB=P16;sbit CLK=P17; #define qsz 1000 /初始输出频率

4、1MHz=1000*1KHZunsigned short fpb=10000; /晶振的分频比R值,初始分频比10000(分频比)#define Min_Frequency 40#define Max_Frequency 65535unsigned short bjpl=1000L; /初始步进1KHZ,单位HZ(步进频率)unsigned int N_Bit_Stream; /N值int num=0;int pl;int t,i;unsigned char idata pinli5=0x00,0x00,0x00,0x00,0x00;unsigned short sw,gw,sfw,bfw,q

5、fw;/* *定义寄存器的名字* */#define C_BitGrabber_Register 7 /8个时钟沿写C寄存器#define R_BitGrabber_Register 14 /15个时钟沿写R寄存器#define N_BitGrabber_Register 15 /16个时钟沿写N寄存器/* * */*正常时序、鉴相器A有效、LD有效、REFout=0、fVE和fRE无效*/#define Star_C_Bit_Stream 0x6B /0x60,3管脚2分频输出晶振频率,Fv,Fr输出分步后脉冲extern void MC145170_Write_C_N_R_BitGrabb

6、er_Register(char BitGrabber_Register,unsigned int Bit_Stream);extern void MC145170_Reset(void);/数控脉冲发生器初始设置/void delay(unsigned int ms)/延时函数 unsigned char i; while(ms-) for(i=0;i250;i+) _nop_();_nop_();_nop_();_nop_(); unsigned char getad() unsigned char channel; unsigned char AD_finished=0; ADC_RES

7、 = 0; channel &= 0x01; /AD通道选择 2 ADC_CONTR |=0x40; /转换速度选择sppd1=1 ADC_CONTR &=0xDF; /转换速度选择sppd0=0 _nop_(); ADC_CONTR |= channel; /AD通道选择赋值 _nop_(); ADC_CONTR |= 0x80; /开AD转换电源 delay(1); ADC_CONTR |= 0x08; /启动AD转换 AD_finished = 0; while (AD_finished =0 ) /转换是否结束判断 AD_finished = (ADC_CONTR & 0x10); A

8、DC_CONTR &= 0xE7; /转换标志位清0 ,关闭AD转换电源 return (ADC_RES); unsigned char getkey()unsigned char jp,temp;char column=0xEF,0xDF,0xBF,0x7F;char keycode=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 10.dofor(jp=0;jp4;jp+)P2=columnjp;if(P2!=columnjp) Tim

9、eDelay(20);if(P2!=columnjp) /按键在此列temp=P2; for(jp=0;jp=0) Din=(Bit_StreamBitGrabber_Register)&0x0001; /此处发生数据类型的转变,&0x0001必须有 CLK=1; /产生时钟上升沿 CLK=0; BitGrabber_Register -;ENB=1; /写入生效/MC145170复位函数/void MC145170_Reset(void)unsigned char Bit_shift_counter; /移位计数器Bit_shift_counter=0;CLK=0;ENB=1;/* ENB为

10、高电平,时4到8个时钟上升沿,本函数取4个时钟上升沿。 */while(Bit_shift_counter4) CLK=1;Bit_shift_counter+;CLK=0;/* ENB为低电平,三个时钟上升沿,Din为三个0。 */Din=0;Bit_shift_counter=0;ENB=0;while(Bit_shift_counter3)CLK=1;Bit_shift_counter+;CLK=0;/* ENB为低电平,一个时钟上升沿,Din为1。 */Din=1;CLK=1;CLK=0;/* ENB为低电平,一个时钟上升沿,Din为0. */Din=0;CLK=1;CLK=0;/*

11、总共九个时钟上升沿,芯片Reset */ENB=1;/主函数/void main(void)/数控脉冲发生器初始设置N_Bit_Stream=qsz;MC145170_Reset();MC145170_Write_C_N_R_BitGrabber_Register(C_BitGrabber_Register,Star_C_Bit_Stream);/初始化MC145170_Write_C_N_R_BitGrabber_Register(R_BitGrabber_Register,fpb);/初始分频比MC145170_Write_C_N_R_BitGrabber_Register(N_BitGr

12、abber_Register,N_Bit_Stream);/初始N值bjpl=bjpl/1000;/显示初始化/ LCD_Init();SetBackLight(0);/设置背光的亮度等级为0 SetBackLight(unsigned char Grade) Grade 0127的等级ClrScreen();FontSet(0,1); /ASCII字符字体设置 FontSet_cn(0,1); /汉字库字符字体设置FontMode(1,0); SetBackLight(100);/设置背光打开 PutString_cn(0,0, 数控脉冲信号发生器 ); PutString_cn(36,13

13、,频率);/PutString_cn(0,13,周期); while(1) delay(150); / PutString(90,15,Hz);PutString(90,15,KHz);PutString(90,15,MHz);ShowShort(0,15,N_Bit_Stream,1);/测试分频比是否正确 switch(flag2) case 1: PutString_cn(72,15, ); ShowShort(90,15,sfw,1); ShowShort(96,15,bfw,1); ShowShort(102,15,qfw,1); PutString(108,15,KHz ); br

14、eak; case 2: ShowShort(72,15,sw,1); ShowShort(78,15,gw,1); PutChar(84,15,.); ShowShort(90,15,sfw,1); ShowShort(96,15,bfw,1); ShowShort(102,15,qfw,1); PutString(108,15,MHz ); break; default:break; PutString_cn(36,26,步进);ShowShort(78,28,bjpl,1);PutString(100,28,KHz); if(flag1=1) PutString_cn(0,39,开机初始

15、化);else if(flag1=2) PutString_cn(0,39,请输入频率: );t=num-1;for(i=0;inum;i+)ShowShort(78+5*i,39,pinlii,1); else if(flag1=3)if(pl0) PutString_cn(0,39,执行完毕! );elsePutString_cn(0,39,输入有误! ); else if(flag1=4) PutString_cn(0,39,请选择步进 ); PutString_cn(0,52,史玉龙-王琪-徐国金);SetBackLight(100);/设置背光打开 if(flag1!=2)&(fla

16、g1!=4)num=0;pinli0=0x00;pinli1=0x00;pinli2=0x00;pinli3=0x00;pinli4=0x00;/delay(100);/加延时防止屏幕抖动/矩阵键盘/ key=getkey();switch(key)case 12:/C键 PutChar(2,28,C);break;case 13:/D键 PutChar(2,28,D);break;case 14: /E键 PutChar(2,28,E);break;case 15: /F键 / PutChar(2,28,F);/步进设置/delay(700);flag1=4;flag0=flag0+1;if

17、(flag0=1)bjpl=1;else if(flag0=2)bjpl=10;else if(flag0=3)flag0=1;bjpl=1;break;case 8:/9键 /PutChar(2,28,9);delay(700); if(flag1=2)&(num=4)pinlinum+=9;break;case 9:/0键 /PutChar(2,28,0);delay(700); if(flag1=2)&(num=4)pinlinum+=0;break;case 10:/A键/PutChar(2,28,A);/输入数提醒/delay(700); flag1=2;break;case 11:

18、/B键/ PutChar(2,28,B);/执行键/delay(700);flag1=3;t=num;switch(t)case 1: pl=pinli0;break;case 2:pl=pinli0*10+pinli1;break;case 3:pl=pinli0*100+pinli1*10+pinli2;break;case 4:pl=pinli0*1000+pinli1*100+pinli2*10+pinli3;break;case 5:pl=pinli0*10000+pinli1*1000+pinli2*100+pinli3*10+pinli4;break;default:break;

19、/显示拆分/if(pl=1000)flag2=2;sw=pl/1000/10;gw=pl/1000%10;sfw=pl%1000/100;bfw=pl%1000/10%10;qfw=pl%1000%10;if(pl0) PutString_cn(0,39,输入正确! );elsePutString_cn(0,39,输入有误! );delay(100);N_Bit_Stream=pl/bjpl;/N_Bit_Stream=1000L;if(bjpl=1)fpb=10000L;else if(bjpl=10)fpb=1000L;/MC145170_Reset();/MC145170_Write_C

20、_N_R_BitGrabber_Register(C_BitGrabber_Register,Star_C_Bit_Stream);/初始化MC145170_Write_C_N_R_BitGrabber_Register(R_BitGrabber_Register,fpb);/分频比MC145170_Write_C_N_R_BitGrabber_Register(N_BitGrabber_Register,N_Bit_Stream);/N值break;case 4:/5键/ PutChar(2,28,5);delay(700); if(flag1=2)&(num=4)pinlinum+=5;b

21、reak;case 5:/6键 / PutChar(2,28,6);delay(700); if(flag1=2)&(num=4)pinlinum+=6;break;case 6:/7键 / PutChar(2,28,7);delay(700); if(flag1=2)&(num=4)pinlinum+=7;break;case 7:/8键 /PutChar(2,28,8);delay(700); if(flag1=2)&(num=4)pinlinum+=8;break;case 0:/1键/ PutChar(2,28,1);delay(700); if(flag1=2)&(num=4)pinlinum+=1;break;case 1:/2键 / PutChar(2,28,2);delay(700); if(flag1=2)&(num=4)pinlinum+=2;break;case 2:/3键delay(700); if(flag1=2)&(num=4)pinlinum+=3;break;case 3:/4键delay(700); if(flag1=2)&(num=4)pinlinum+=4;break;default:break; / /while/main

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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