论坛风格切换切换到宽版
  • 16471阅读
  • 41回复

DIY了个PLL,MC145162四线控制的,成功了,好玩啊! [复制链接]

上一主题 下一主题
离线qiufeng
 
发帖
401
只看楼主 倒序阅读 0楼 发表于: 2007-03-01
我基本以图片的方式来让大家看看!
还有现在说明下图片的内容:
我把测试30.000mhz和29.500mhz时的频率计读数拍下来了
还有mcuclk脚,即mc145162的第5脚,根据我的程序,mcuclk脚应该输出:
mc145162的时钟÷4等于mcuclk的输出频率,这里,我们可以根据这一特点来计算
基准频率时多少,根据我的实验,我的mcuclk脚输出0.99996mhz,即基准频率
为:0.99996khz,代码中则是以1khz计算的,这是频率输出偏小的主要原因!
如果mc145162的时钟调到十分接近4.000000mhz时,输出频率会很准!
这里的mc145162我采用了4线控制方法控制的!
http://www.hellocq.net/forum/attachment.php?attachmentid=221609&stc=1
http://www.hellocq.net/forum/attachment.php?attachmentid=221613&stc=1
http://www.hellocq.net/forum/attachment.php?attachmentid=221610&stc=1
http://www.hellocq.net/forum/attachment.php?attachmentid=221611&stc=1
http://www.hellocq.net/forum/attachment.php?attachmentid=221612&stc=1
离线qiufeng
发帖
401
只看该作者 1楼 发表于: 2007-03-01
还有资料及代码
离线Sullivan
发帖
4817
只看该作者 2楼 发表于: 2007-03-01
和我的频率计差不多,好像是一样的

还有,资料看得我脖子纽了...
离线qiufeng
发帖
401
只看该作者 3楼 发表于: 2007-03-01
代码代码
//这里时代码!
//延时部分可以去掉
//main.c
//单片机为at89c51,单片机时钟12mhz。
//引脚连接
//clk   p2_3
//din   p2_2
//adin   p2_1
//enb   p2_0
//mc145162时钟4mhz。不想打字了,大家增加看看吧!
//采用四线控制模式控制mc145162!
//有问题请qq联系qq:411736004,name:life-filter!
void mc145162_reset(unsigned int,unsigned long int,unsigned int,unsigned int);
void delay(unsigned int);
void main (void)
{
delay(200); //延时,可以不用
mc145162_reset(0x90,0x3fa04000,29500,29500);//括号里分别是控制寄存器数据,基频控制器数据,发射部分分频控制数据,接收部分分频控制器数据
while(1);
}

//mc145162_reset.c
#include <at89x51.h>
#define clk   p2_3
#define din   p2_2
#define adin   p2_1
#define enb   p2_0
void mc145162_reset(unsigned int ctrl_data,unsigned long int ref_data,unsigned int tx_count,unsigned int rx_count)
{
unsigned int i;
unsigned long int mask;
enb=0;
clk=0;
adin=0;
din=0;
enb=1;
  mask=0x80;
  for(i = 0;i < 8;i++)
  {
      clk=0;
  if(ctrl_data & mask)
  {
  din=1;
  }
  else
  {
  din=0;
  }
  clk=1;
  mask = mask >> 1;
  din=0;
  }
clk=0;
enb=0;
  mask=0x80000000;
enb=1;
  for(i = 0;i < 32;i++)
  {
      clk=0;
  if(ref_data & mask)
  {
  din=1;
  }
  else
  {
  din=0;
  }
  clk=1;
  mask = mask >> 1;
  din=0;
  }
clk=0;
enb=0;
  mask = 0x8000;
  for(i = 0;i < 16; i++)
  {      
  clk=0;
  if(tx_count & mask)
  {
  adin=1;
  }
  else
  {
  adin=0;
  }
  if(rx_count & mask)
  {
  din=1;
  }
  else
  {
  din=0;
  }
  clk=1;
  mask = mask >> 1;
  adin=0;
  din=0;
  clk=0;
  }
enb=1;
enb=0;
}


//delay.c
void delay(unsigned int time_delay)
{

unsigned int time_delay_counter;

for (time_delay_counter=0; time_delay_counter<time_delay; time_delay_counter++)
{}

}
离线lym651022
发帖
242
只看该作者 4楼 发表于: 2007-03-01
请问楼主哪里能买到MC145163或MC145162,我需要.
离线aqqw751121
发帖
259
只看该作者 5楼 发表于: 2007-03-01
用户被禁言,该主题自动屏蔽!
离线qiufeng
发帖
401
只看该作者 6楼 发表于: 2007-03-01
'
请问楼主哪里能买到MC145163或MC145162,我需要.
'
立星电子,他那里有mc145162,我的也是他们那里买的,mc145163我不知到那里有!
下面时立星的网址,你可以查查看
http://www.gdlixing.com/enter_index.asp
发帖
30
只看该作者 7楼 发表于: 2007-03-01
好东西,学习
离线lym651022
发帖
242
只看该作者 8楼 发表于: 2007-03-01
'
立星电子,他那里有mc145162,我的也是他们那里买的,mc145163我不知到那里有!
下面时立星的网址,你可以查查看
http://www.gdlixing.com/enter_index.asp
'
万分感谢! 可能还需要你提供145162的技术资料 到时向你请教!
发帖
30
只看该作者 9楼 发表于: 2007-03-01
我的脖子本来就扭了,这下扭得更厉害了
哈哈
你要是把图片反个方向放,说不定我的脖子就扭好了
离线qiufeng
发帖
401
只看该作者 10楼 发表于: 2007-03-01
'
万分感谢! 可能还需要你提供145162的技术资料 到时向你请教!
'

恩,可以的啊,在mc145162的应用上,我可以提供我所掌握的资料的!
离线传播
发帖
1544
只看该作者 11楼 发表于: 2007-03-01
好啊!!!
祝贺啊!!!!!!!!!!!!!!!!!
离线aqqw751121
发帖
259
只看该作者 12楼 发表于: 2007-03-01
用户被禁言,该主题自动屏蔽!
离线BA4II
发帖
27814
只看该作者 13楼 发表于: 2007-03-01
关注!!!
离线shou_xin
发帖
972
只看该作者 14楼 发表于: 2007-03-01
老鱼是不是今天下午在7050上,cw呼叫来着,干扰太大。我只抄收了bd4iz,后面那个没有抄收
离线bg7mh
发帖
3138
只看该作者 15楼 发表于: 2007-03-01
好东西,学习
离线shou_xin
发帖
972
只看该作者 16楼 发表于: 2007-03-02
就是,自己做个玩玩。学点东西很好的。
离线BA4II
发帖
27814
只看该作者 17楼 发表于: 2007-03-02
[quote=shou_xin]老鱼是不是今天下午在7050上,cw呼叫来着,干扰太大。我只抄收了bd4iz,后面那个没有抄收[/quote]

哈哈!我在7049呼叫,新疆的朋友居然可以抄收到我,希望您到7023khz的cw乐园来玩!
每天早上7点半到10点都有爱好cw的朋友在通联!欢迎!
离线aqqw751121
发帖
259
只看该作者 18楼 发表于: 2007-03-02
用户被禁言,该主题自动屏蔽!
离线BG9DC
发帖
433
只看该作者 19楼 发表于: 2007-03-03
为什么很多腿都重复写pll或dds的代码,坛子里的帖子很多了,多查多问,事半功倍.