论坛风格切换切换到宽版
  • 3689阅读
  • 19回复

发个我大概是用不上的PLL电路(带LCD),然后请教个问题。 [复制链接]

上一主题 下一主题
 
发帖
24
只看楼主 倒序阅读 0楼 发表于: 2007-10-12
反正是不合适,不如删了省心。谢谢提供帮助的所有人,彻底搞懂后会出一个资料汇总的。
发帖
24
只看该作者 1楼 发表于: 2007-10-12
原地址现在已经打不开了,这是我大学时下载保留下来的。是个法国人的网站,强人一个。
离线bg6qbt
发帖
7257
只看该作者 2楼 发表于: 2007-10-12
电路图中已明确指示,需要外接vco电路!
离线BG7TBL
发帖
2965
只看该作者 3楼 发表于: 2007-10-12
vco头大!!
发帖
24
只看该作者 4楼 发表于: 2007-10-12
谢谢3楼的前辈,后面的电路我就给别人处理了。
  我需要的很简单,在72.000到72.999范围内调节。我下面说了一种实现的方法。

  但是,我一直相信一点,就是:网上没有完全符合自己要要求的东西!!
 
  我需要的调节步进是10khz,这个的只能做到50khz,但是sa1057是能做到10khz的,而且,我的外围电路也不需要那么多的按钮和lcd,我要用的显示是码段的液晶,还有预留出通讯的i/o口,总之,这个电路拿来对于我,拿参考、
玩玩还行,用在我的设计上,基本没门。
    我不求人,我要自己做。我发贴更多是希望有个人交流一下,不是求助,我有能力自己解决(我大学参加了全国电子设计大赛,毕设成绩是全系唯一的一个优,我早就过了做东西求人的时候),但是我前面说了“技术是交流出来的,不是闭门造车做出来的”,希望大家能参于进来,而不是我一个人唱独角戏。不然可真的是很寒心了。


    研究了一天,搞明白了不少地方。首先,作者的程序使用一种叫jal的语言写的,比较直观,在下载包里,相关的jal文件都可以用记事本打开,大家可以看一下,具体负责调节频率的程序是1057.jal,范围是一下这段,按照需要,修改的方法是:
原程序:

procedure check is                     -- check lower & upper limits
    if sum_h >= 0x08 & sum_l >= 0x70
          then upp_lim = high
          sum_h = 0x08 sum_l = 0x70
          else upp_lim = low
    end if
    if sum_h <= 0x06 & sum_l <= 0xd6
          then down_lim = high
          sum_h = 0x06 sum_l = 0xd6
          else down_lim = low
    end if
end procedure

比如要改为34mhz—36mhz,那么34×100=3400=0x0d48,36×100=3600=0x0e10,所以有:

procedure check is                     -- check lower & upper limits 34×100=3400=0x0d48,36×100=3600=0x0e10
    if sum_h >= 0x0e & sum_l >= 0x10
          then
          upp_lim = high
          sum_h = 0x0e sum_l = 0x10
          else upp_lim = low
    end if
    if sum_h <= 0x0d & sum_l <= 0x48
          then
          down_lim = high
          sum_h = 0x0d sum_l = 0x48
          else down_lim = low
    end if
end procedure



不过,这也就是看看,因为我没有办法用pic的mplab ide软件编译jal文件,如果大家谁知道如何编译一定说下。按照目前对程序的修改情况,调节范围可以从30mhz到110mhz(当然还是要分段的,但是分段后的调节范围还是可以很打的,应该是满足大多数人的需要了吧?)。

    步进量还是原来的50khz,毕竟处理这个的程序没改。当然,要是全部看明白了,改步进也是可以的。
   
    从saa1057的ds上看到的情况是,如果频率在30mhz以上,那么步进就只能做到10khz, 30mhz以下,就可以到1khz了。
   
    目前,我还是不会使用saa1057,关键的频率计算方法和芯片的16位控制字开没有看完(我英语不好),不过我有信心做出完全属于我自己的pll电路
离线rd_man
发帖
13
只看该作者 5楼 发表于: 2007-10-12
[quote=飞行无极限]谢谢3楼的前辈,后面的电路我就给别人处理了。
  我需要的很简单,在72.000到72.999范围内调节。我下面说了一种实现的方法。

  但是,我一直相信一点,就是:网上没有完全符合自己要要求的东西!!
 
  我需要的调节步进是10khz,这个的只能做到50khz,但是sa1057是能做到10khz的,而且,我的外围电路也不需要那么多的按钮和lcd,我要用的显示是码段的液晶,还有预留出通讯的i/o口,总之,这个电路拿来对于我,拿参考、
玩玩还行,用在我的设计上,基本没门。
    我不求人,我要自己做。我发贴更多是希望有个人交流一下,不是求助,我有能力自己解决(我大学参加了全国电子设计大赛,毕设成绩是全系唯一的一个优,我早就过了做东西求人的时候),但是我前面说了“技术是交流出来的,不是闭门造车做出来的”,希望大家能参于进来,而不是我一个人唱独角戏。不然可真的是很寒心了。


    研究了一天,搞明白了不少地方。首先,作者的程序使用一种叫jal的语言写的,比较直观,在下载包里,相关的jal文件都可以用记事本打开,大家可以看一下,具体负责调节频率的程序是1057.jal,范围是一下这段,按照需要,修改的方法是:
原程序:

procedure check is                     -- check lower & upper limits
    if sum_h >= 0x08 & sum_l >= 0x70
          then upp_lim = high
          sum_h = 0x08 sum_l = 0x70
          else upp_lim = low
    end if
    if sum_h <= 0x06 & sum_l <= 0xd6
          then down_lim = high
          sum_h = 0x06 sum_l = 0xd6
          else down_lim = low
    end if
end procedure

比如要改为34mhz—36mhz,那么34×100=3400=0x0d48,36×100=3600=0x0e10,所以有:

procedure check is                     -- check lower & upper limits ** 36*100=x(e10) 34*100=x(d48)
    if sum_h >= 0x0e & sum_l >= 0x10
          then
          upp_lim = high
          sum_h = 0x0e sum_l = 0x10
          else upp_lim = low
    end if
    if sum_h <= 0x0d & sum_l <= 0x48
          then
          down_lim = high
          sum_h = 0x0d sum_l = 0x48
          else down_lim = low
    end if
end procedure



不过,这也就是看看,因为我没有办法用pic的mplab ide软件编译jal文件,如果大家谁知道如何编译一定说下。按照目前对程序的修改情况,调节范围可以从30mhz到110mhz(当然还是要分段的,但是分段后的调节范围还是可以很打的,应该是满足大多数人的需要了吧?)。

    步进量还是原来的50khz,毕竟处理这个的程序没改。当然,要是全部看明白了,改步进也是可以的。
   
    从saa1057的ds上看到的情况是,如果频率在30mhz以上,那么步进就只能做到10khz, 30mhz以下,就可以到1khz了。
   
    目前,我还是不会使用saa1057,关键的频率计算方法和芯片的16位控制字开没有看完(我英语不好),不过我有信心做出完全属于我自己的pll电路
[/quote]
您引用其他人發表的code 是否應該告知並尊重原作者呢 ?
离线BD6RJ
发帖
1059
只看该作者 6楼 发表于: 2007-10-12
[quote=rd_man]您引用其他人發表的code 是否應該告知並尊重原作者呢 ?[/quote]
整的神叨叨的。
发帖
24
只看该作者 7楼 发表于: 2007-10-12
[quote=rd_man]您引用其他人發表的code 是否應該告知並尊重原作者呢 ?[/quote]
  看头像就知道是飞行批萨上的模友,不知你指的原作者是指谁,如果是程序的原作者,哪我很怀疑他是否看的懂我的中国英文,而且我这样做没有违反他的意愿,毕竟他是把东西全放在网上让大家下载的。
  如果是批萨上的yctseng 前辈,则还有些必要,毕竟我是看他的提示才明白的,但也就是说声谢谢罢了,没有必要为这点事去打扰他吧?而且我也确实是看了一天,结果是要改频率就一定要这段程序,但总不能因为yctseng 前辈已经说过了,然后我按我的理解再说一边,就因为阐述方式类似就一定要给我扣个引用的帽子吧?
  看你的头像里面用好像是yctseng 做的f4u?莫不是你就是yctseng?
发帖
24
只看该作者 8楼 发表于: 2007-10-12
想明白了,纯粹的贴近实用的技术讨论贴只会招来麻烦,此贴留待观察一日,24小时后,明日晚10点,如果反应如预料的,删贴。
离线szlisala
发帖
74
只看该作者 9楼 发表于: 2007-10-12
坛里很多高手前辈,这样的问题再太简单不过了,不需要牛b轰轰的样子。
离线digiko
发帖
309
只看该作者 10楼 发表于: 2007-10-12
那个jal.exe就是编译器,双击run.bat就可以编译.
离线rd_man
发帖
13
只看该作者 11楼 发表于: 2007-10-12
[quote=飞行无极限]想明白了,纯粹的贴近实用的技术讨论贴只会招来麻烦,此贴留待观察一日,24小时后,明日晚10点,如果反应如预料的,删贴。[/quote]
倒是不用, 既然他 post 在網路上就是要跟大家分享, 我雖不是原作, 只是也看過原本的
code, 只要註明或顯示連結link, 我想大家知道就沒問題...
发帖
24
只看该作者 12楼 发表于: 2007-10-13
看来这个贴子发的是横竖不对。你向人请教,人家以为你是新手,不一定理你,你自己解决就说你自大。唉!有这样的环境不免让人心灰意冷了。
  晚上删贴,要不版主看看,要是在你或大家看来太低级,现在就直接删了算了。
  删前,向digiko表示感谢,程序编译了,我电路昨天就焊好了,今天试了一下,发现yc的计算方法好像有问题,比如:原本的108mhz,应该是1080×20=2160>0x0807,所以想把频率改到34mhz的话应该是34×20=680>0x02a8,但我试了,不知是哪里还有限制或是问题,如果改上面的程序段,只能把程序上限改小,但下限无论怎样都下不去,比如改到小于0x06d6,那么显示一到87.5就跳到100.25,而且不管你的上限是多少,问题多多。
  上面的东西,我大概说了也是白说,论坛里高人多的是,都不希罕理我,我也是班门弄斧,跑这发什么pll电路,让人笑话。罢、罢、罢!
离线BG7TBL
发帖
2965
只看该作者 13楼 发表于: 2007-10-13
[quote=飞行无极限]基于pic16f84和saa1057的pll电路,带1602液晶显示,3个按键,调节频率分段(是4个不同的程序,根据需要烧写进单片机):
0.512 - 30 mhz
512 - 1710 khz
512 - 1800 khz
72 - 92mhz
87.5 - 108 mhz

  我对pll了解不多,请问这个电路是不是还需要外面再加个用变容二极管的压控振荡电路才能输出需要的频率?那有没有芯片里面直接出频率的?还有,这个电路有2个输入端,一个am,一个fm,请问是是做频率反馈的吗?还是说可以做调制?
  谢谢。[/quote]

按照问题进行下交流:

1、请问这个电路是不是还需要外面再加个用变容二极管的压控振荡电路才能输出需要的频率?

需要外加一个vco(压控振荡器)。

2、那有没有芯片里面直接出频率的?

有专用的vco用个铁壳封好,最长见的是pos系列,如pos-150,pos-450

3、还有,这个电路有2个输入端,一个am,一个fm,请问是是做频率反馈的吗?还是说可以做调制?

查了一下saa1057的资料,该芯片用于收音机,am端一般用于长波,中波,短波接收,频率范围0.5-32m。fm端一般用做调频,接收用,频率范围70-120mhz!
离线BG7TBL
发帖
2965
只看该作者 14楼 发表于: 2007-10-13
[quote=飞行无极限]不过,这也就是看看,因为我没有办法用pic的mplab ide软件编译jal文件,如果大家谁知道如何编译一定说下。按照目前对程序的修改情况,调节范围可以从30mhz到110mhz(当然还是要分段的,但是分段后的调节范围还是可以很打的,应该是满足大多数人的需要了吧?)。

    步进量还是原来的50khz,毕竟处理这个的程序没改。当然,要是全部看明白了,改步进也是可以的。
   
    从saa1057的ds上看到的情况是,如果频率在30mhz以上,那么步进就只能做到10khz, 30mhz以下,就可以到1khz了。
   
    目前,我还是不会使用saa1057,关键的频率计算方法和芯片的16位控制字开没有看完(我英语不好),不过我有信心做出完全属于我自己的pll电路[/quote]

交流一下。

1、不过,这也就是看看,因为我没有办法用pic的mplab ide软件编译jal文件,如果大家谁知道如何编译一定说下。

jal文件有专用的编译器,如果想用mplab编译,可以找一下有无将jal转换成mplab文件的软件

2、步进量还是原来的50khz,毕竟处理这个的程序没改。

fm收音的步进一般为50k/100k,过大或者过小的步进用途不大!

3、从saa1057的ds上看到的情况是,如果频率在30mhz以上,那么步进就只能做到10khz, 30mhz以下,就可以到1khz了。

哪个是1057的参考ds,具体你可以换基准晶振,30m以上的步进也可以做到1k。
离线BG7TBL
发帖
2965
只看该作者 15楼 发表于: 2007-10-13
[quote=飞行无极限]目前,我还是不会使用saa1057,关键的频率计算方法和芯片的16位控制字开没有看完(我英语不好),不过我有信心做出完全属于我自己的pll电路[/quote]

翻译了一下1057的资料:
供参考,不保证准确
1、数据传输格式
进行数据传输时候dlen需要为高电平;clb的上升沿data数据有效;dlen产生一下降沿信号,代表数据传输完毕。
每次传输一位引导码16位数据码。
2、每位传输定义
数据字a:引导码--0--2^14-- --2^0
数据字b:引导码--1--fm--refh--cp3-- --cp0--sb2--sla--pdm1--pdm0--brm--t3--t0
离线BG7TBL
发帖
2965
只看该作者 16楼 发表于: 2007-10-13
[quote=飞行无极限]
    我不求人,我要自己做。我发贴更多是希望有个人交流一下,不是求助,我有能力自己解决(我大学参加了全国电子设计大赛,毕设成绩是全系唯一的一个优,我早就过了做东西求人的时候),但是我前面说了“技术是交流出来的,不是闭门造车做出来的”,希望大家能参于进来,而不是我一个人唱独角戏。不然可真的是很寒心了[/quote]

交流到此吧!!!lz有能力解决!!!
离线szlisala
发帖
74
只看该作者 17楼 发表于: 2007-10-13
[quote=飞行无极限]看来这个贴子发的是横竖不对。你向人请教,人家以为你是新手,不一定理你,你自己解决就说你自大。唉!有这样的环境不免让人心灰意冷了。
  晚上删贴,要不版主看看,要是在你或大家看来太低级,现在就直接删了算了。
  删前,向digiko表示感谢,程序编译了,我电路昨天就焊好了,今天试了一下,发现yc的计算方法好像有问题,比如:原本的108mhz,应该是1080×20=2160>0x0807,所以想把频率改到34mhz的话应该是34×20=680>0x02a8,但我试了,不知是哪里还有限制或是问题,如果改上面的程序段,只能把程序上限改小,但下限无论怎样都下不去,比如改到小于0x06d6,那么显示一到87.5就跳到100.25,而且不管你的上限是多少,问题多多。
  上面的东西,我大概说了也是白说,论坛里高人多的是,都不希罕理我,我也是班门弄斧,跑这发什么pll电路,让人笑话。罢、罢、罢![/quote]
  程序里面太多细节的东西,没有人愿意花心思去理解,自然在坛里找到解答和交流的可能性比较低,把问题具体化一些,参与讨论的人才会多,能回答的,bg7tbl已经回答差不多了,你所说的直接出频率的芯片,是不是指dds芯片?如果只是输出72-73m,10k步进的频率,上面的电路是可以做的到,而且成本也很低,前提是需要增加压控振荡器。程序比较简单,看完pll芯片资料后用你熟悉的语言写就可以。
  装着很清高的样子肯定没有人愿意跟你交流。很多前辈在这里都很专业,虚心一点他们肯定很愿意教我们东西,这是做学问起码的修养,不是吗?
离线rd_man
发帖
13
只看该作者 18楼 发表于: 2007-10-13
[quote=飞行无极限]看来这个贴子发的是横竖不对。你向人请教,人家以为你是新手,不一定理你,你自己解决就说你自大。唉!有这样的环境不免让人心灰意冷了。
  晚上删贴,要不版主看看,要是在你或大家看来太低级,现在就直接删了算了。
  删前,向digiko表示感谢,程序编译了,我电路昨天就焊好了,今天试了一下,发现yc的计算方法好像有问题,比如:原本的108mhz,应该是1080×20=2160>0x0807,所以想把频率改到34mhz的话应该是34×20=680>0x02a8,但我试了,不知是哪里还有限制或是问题,如果改上面的程序段,只能把程序上限改小,但下限无论怎样都下不去,比如改到小于0x06d6,那么显示一到87.5就跳到100.25,而且不管你的上限是多少,问题多多。
  上面的东西,我大概说了也是白说,论坛里高人多的是,都不希罕理我,我也是班门弄斧,跑这发什么pll电路,让人笑话。罢、罢、罢![/quote]

可能是您的程式沒仔細研究通, 他的計算公式並沒有錯, 內部預除器設定可能您沒改到吧 !

給您提示一下, 找到原始碼類似下面... 往上面幾行檢查一下..
send (0b_1101_1101 , 0b_1001_0101 )      -- word b -->> saa1057 fm 1khz sync

原本計算方法要改成 :

-- calculate (sum_h,sum_l) / 100 -->> lcd
-- explanation --------
-- input =(sum_l,sum_h x1 to pll), output = out_l,out_h
-- divide (sum_h & sum_l) by 100 (0x64) for a 4 mhz cristal
离线cctvcctv
发帖
412
只看该作者 19楼 发表于: 2007-10-13
楼组教科书上都有的东西,都不知道,还说不是求助,还自大说是交流,你花几天时间都会弄懂我不怀疑,但你态度有点不对头