《MC145162锁相环程序》由会员分享,可在线阅读,更多相关《MC145162锁相环程序(16页珍藏版)》请在金锄头文库上搜索。
1、1MC145162 锁相环键控收发频率控制程序/Main.c*#include#include#include#includelcd1602.c#includemc145162.c #includekey.cuchar freq4=0,0,0,0;uchar code disp = 0, 1, 2, 3,4, 5, 6, 7, 8, 9 ,.;float f;uint Tx;void clear(void)uint i;for(i=0;i0011 - 0001 1001 0000 - 01 - 00 0000 0000 000/ 0 AUX TxSelect RxSelect - 12bit=
2、400 - s1 s2 - 14bit=0/Crystal=4M AUX-s1-s2=0-1-0 = fR2-C(Tx=4M/400=10kHz) 、fR1-A(Rx=4M/400/25=400Hz)LCD_Init(); /LCD_Write_String(0,0,Set the Freq!);/LCD_Write_String(13,1,MHz);if(T)LCD_Write_String(0,0,Set the Freq! T);/发射指示elseLCD_Write_String(0,0,Set the Freq! R);/接收指示LCD_Write_String(13,1,MHz);s
3、et_pot(0x43);while (1) switch(KeyPro()case 0xff: ;break;case 0:if(w150)LCD_Write_String(0,0,Error Freq50M!);LCD_Write_String(3,1,Set again!);f=0;Tx=0;P1=0xff;elseTx=f*10;/f*MHz*1000kHz/100kHzMC145162_Reset(0x92,0x300A8000,Tx,Tx);if(T)LCD_Write_String(1,0, Transmit. );elseLCD_Write_String(1,0, Receiv
4、e. );/*for(i=0;i#include#define uint unsigned int8#define uchar unsigned char#define ulong unsigned long int#define DataPort P0#define KeyPort P3 sbit CLK=P20; sbit ADin=P21; sbit Din=P22; sbit ENB=P23;sbit RS = P24; /定义液晶端口 sbit RW = P25;sbit EN = P26;extern void DelayUs2x(uchar t);extern void Dela
5、yMs(uchar t);extern uchar KeyScan(void);extern uchar KeyPro(void);extern bit LCD_Check_Busy(void);extern void LCD_Write_Cmd(uchar com);extern void LCD_Write_Data(uchar Data);extern void LCD_Clear(void);extern void LCD_Write_String(uchar x,uchar y,uchar *s);extern void LCD_Write_Char(uchar x,uchar y,
6、uchar Data);extern void set_pot(uchar pot);extern void LCD_Init(void);extern void delay(uint time);extern uchar key_scan();#endif/mc145162.c*/* MC145162 可编程的双 PLL(锁相环)频率合成器最高频率可达到 60 MHz 和 85 MHz 。适合配合 MC3361,MC3362,MC2833 等调频发射接收模块的使用适用于全球范围内的 CT-1 制式的无绳电话。9同样适用于需要 60 MHz 以下的频率其它产品。MC145162-1 是 MC1
7、45162 的高频版本,工作频率高达 85 MHz。通过 MCU 的串行接口,非常方便地操作可编程的接收、发射、参考、辅助参考计数器。正因为这样,所以它可使用于任何 CT-1 制式的无绳电话。本 IC 的发射环和接收环各有一个独立的相位检测器。一个共用的参考晶体,驱动两个独立的参考频率计数器,为发射环和接收环提供了独立的参考频率。如果有需要的话,辅助参考计数器可以让我们为发射环和接收环选择一个额外的参考频率。*/ #include#includebit T=1; /默认发射模式 /*/ void delay(uint time) uint t; for (t=0; t 1; Din=0; CL
8、K=0; ENB=0;10void Write_Refreq_val(ulong Refreq_val) / 输入数据是参考频率int i; ulong shift2; /ENB=0; CLK=0; shift2=0x80000000; /1000 0000 0000 0000 - 0000 0000 0000 0000 ENB=1; /参考频率,其实是在配置对晶振的分频 R 且鉴相器如何选择之for(i = 0;i 1; Din=0; CLK=0;ENB=0; /void Write_Counter_Reg(uint Tx_Count,uint Rx_Count) /发射计数器与接收计数器被
9、选中int i; ulong shift3;/ CLK=0; ENB=0; /串行数据传输的时候,ENB 脚置低使能shift3 = 0x8000; /1000 0000 0000 0000for(i = 0;i 1; ADin=0; Din=0; CLK=0; ENB=1; /当编程 Tx/Rx 通道计数器,ENB 脚必须动作, ENB=0; /以便在上次时钟的上升沿之后提供下降沿来锁存移位数据。 / void Write_PLL(uint TX,uint RX) uint TX_temp,RX_temp; TX_temp=TX/4; /预分频 RX_temp=RX/4; Write_Cou
10、nter_Reg(TX_temp,RX_temp); void MC145162_Reset(uint Ctrl_val,ulong Refreq_val,uint Tx_Count,uint Rx_Count) /Ctrl_val : 1-0-TestBit-AuxDataSelect-REFout/3/4-TxPDEnable-RxPDEnable-TxPDEnable/Refreq_val :发射寄存器与接收寄存器,共 32 位Write_Ctrl_val(Ctrl_val);Write_Refreq_val(Refreq_val);/Write_Counter_Reg(Tx_Count
11、,Rx_Count);Write_PLL(Tx_Count,Rx_Count);/ MCU 的编程方法有两种格式,由 ENB 输入引脚所控制。/ 在串行数据传输的时候,/ 假如使能信号为高,控制寄存器/ 参考频率编程被选中。/ 假如 ENB 为低时,发射计数器与接收计数器的被选中编程。/ 在发射计数器与接收计数器编程期间,ADin 和 Din 脚都能输入数据到发射与接收计数器。/*12/Delay.h*#ifndef _delay_h_#define _delay_h_#define uint unsigned int#define uchar unsigned char#define ulo
12、ng unsigned long int/*-uS 延时函数,含有输入参数 uchar t,无返回值uchar 是定义无符号字符变量,其值的范围是0255 这里使用晶振 12M,精确延时请使用汇编,大致延时长度如下 T=tx2+5 uS -*/void DelayUs2x(uchar t) while(-t);/*-mS 延时函数,含有输入参数 uchar t,无返回值uchar 是定义无符号字符变量,其值的范围是0255 这里使用晶振 12M,精确延时请使用汇编-*/void DelayMs(uchar t)while(t-)/大致延时 1mSDelayUs2x(245);DelayUs2x(245);#endif/lcd1602.c*/*-名称:LCD1602内容:通过矩阵键盘输入,依次显示 0-F16 中字符引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK-*/#include13#include#includeuchar code title_1=Input the Freq!; uchar code title_2= Loading.