论坛风格切换切换到宽版
  • 3983阅读
  • 14回复

串行控制 [复制链接]

上一主题 下一主题
离线bg6iah
 
发帖
67
只看楼主 倒序阅读 0楼 发表于: 2002-11-17
我想容89c51串行控制mc145170,汇编语言怎么写?
离线BG7FW
发帖
487
只看该作者 1楼 发表于: 2002-11-26
Re: 串行控制
最初由 bg6iah 发布
我想容89c51串行控制mc145170,汇编语言怎么写?
145170的资料我没仔细看过,如果用的不是标准的串行口,那就只能用软件模拟符合它的协议的一个串口的程序,这种程序网上有很多类似的,但一样的很少,只要自已改一下就行了,这也正是乐趣所在!
离线BD3RJ
发帖
18844
只看该作者 2楼 发表于: 2002-11-26
170的价格?
离线bg6iah
发帖
67
只看该作者 3楼 发表于: 2002-11-28
170,15圆1片。
离线BG4RFF
发帖
1581
只看该作者 4楼 发表于: 2003-11-23
有dip封装的145170吗?

我想找几片做实验
离线1259
发帖
373
只看该作者 5楼 发表于: 2003-12-03
大家到 www.ic.net.cn 上去找需要的芯片吧,基本上能想到的肯定能找到
离线Mit
发帖
808
只看该作者 6楼 发表于: 2003-12-05
请问不能直接用51的串口来控制吗?
离线1259
发帖
373
只看该作者 7楼 发表于: 2003-12-05
这你要看时序了,另外一个字节也写不完,不如就直接用 io 口线模拟了。
离线1259
发帖
373
只看该作者 8楼 发表于: 2003-12-06
我仔细看了一眼mc145170, 应该可以用串行口直接写,它的三个控制字分别是1个字节,2个字节和三个字节,时序是和51的一样的,你自己加一根 enb的控制线,另外,51是先发低比特lsb,但是pll要求先发高比特msb.

下面一段是我刚在另外一个帖子里边写的。如果有用,你就看几眼。


首先,先准备出三根空余的口线,一根作使能控制,就是连接pll的enb,第二根用来模拟时钟,连接pll的clk,第三根用来作为数据输出,连接 din。
写pll寄存器有两种方式,一是中断模式,一是直接延时模式。
直接延时模式比较简单,你的单片机如果也没有其他的事情就这么用吧
我没有mc145157的数据手册,我写的是按mc145170的控制寄存器工作的,你比较一下吧,反正就是这个意思。

1. mc145170的控制字共有三个控制寄存器,一个八位的c控制寄存器,一个15位或者24位的r寄存器,一个16位的n寄存器。你写多少个比特,就自动进入那个寄存器,不需要额外的地址识别。比如说你写n寄存器,16个bit. 也就是要连着写16个bit,共2个字节。你可以先把控制字计算好了,然后放到2个字节当中,注意,pll要求高位在前,别搞反了。

2. 令使能端口有效,enb是低有效,你就把这个口线先置低,然后就延时10豪秒。

3. 准备数据,你先把高字节拿出来,注意最高比特在那个方向,假定数据是这样组织的,最高位在高字节的最左边,也就是高字节从左到右是依次是 bit15 到 bit8, 低字节从左到右依次是 bit7到 bit0。发送开始的时候,先对高字节向左移位,移出的第一位就是最高位,你判断这一位是0还是1,如果是0,数据线就置低,如果是1,就置高。

4. 由于数据是在时钟的上升沿写入的,所以要先准备好数据,再发时钟。在把enb置低之前,要先把时钟线初始化,也就是置低。在数据准备好以后,你就把时钟线置高,此时,一个bit就写进去了。延时10us,再把时钟线置低,这样不就模拟出一个时钟信号了吗。

5. 下一步就重复第三和第四步,对每一个bit进行移位和发送。直到所有的bit都移位进去。

6. 将使能端,也就是enb置高,这时完整的控制字就被写入到了相应的控制寄存器中了,注意,pll是根据写入的bit的位数来识别是写那个寄存器的。

最后说明:我写这些其实就是把数据手册上的时序图给你又口头的描述了一遍,你要是有时间就研究一下那个pll的时序图吧,看明白一个,其他也就明白了,还有什么问题,我们再探讨,我也好长时间没有用51了,今天才又现看了几眼和mc145170,可能有不对的地方,你要注意了。

还有,我仔细看了一下mc145170的数据手册,其实直接用串行口发送也应该是可以的,也就是让串行口工作在模式0,移位寄存器模式。但要注意,51单片机是先发低字节的。要先组织好数据结构,然后再发。
离线Mit
发帖
808
只看该作者 9楼 发表于: 2003-12-06
ok!thank you so much!!
离线starnewtech
发帖
88
只看该作者 10楼 发表于: 2003-12-08
不能直接使用51的串行口,因为clk无法提供!
离线Mit
发帖
808
只看该作者 11楼 发表于: 2003-12-13
请问能在说得详细一点吗?我水平低。谢谢!
离线1259
发帖
373
只看该作者 12楼 发表于: 2003-12-15
移位时钟不就是时钟吗?只不过具体时序我还没有太仔细看,觉得似乎是没有问题。
离线1a2b3c
发帖
204
只看该作者 13楼 发表于: 2003-12-16
很简单的控制了
要控制70,随便用2、3根io线来模拟70的协议就ok,很简单的,我已经做过了用mb1504、mc。。。70的pll,以及ad985x系列的dds,都是用io口线来模拟时序的

可以和我合作,我写程序,报酬是最后得到几快做好的板子
离线Mit
发帖
808
只看该作者 14楼 发表于: 2003-12-19
感谢大家的回复,我再试试看。
          谢谢了!
        73! 73! 73!