关于AD转换的一些问题

[复制链接]
 楼主| Program1 发表于 2009-5-23 14:56 | 显示全部楼层 |阅读模式
最近用ADC0808编写的一个小程序,但还有一些问题不懂,请各位前辈指教。<br />1.在网上看到单片机ALE端口输出频率为内部频率的六分之一,但用在protues里面用示波器仿真,怎么看不出有方波。<br />2.D触发器分频的原理是什么?<br />3.在仿真过程中,改变定时器时间长短(输出频率的大小,我是用定时器中断模拟ADC0808所要求的频率),但数码管显示的各位和十位会出现颠倒<br />例如:将&nbsp;TH0=(65536-2)/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=(65536-2)%256;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;改为:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TH0=(65536-4000)/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=(65536-4000)%256;<br /><br /><br />程序:<br />#include&ltreg52.h&gt<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;uint&nbsp;&nbsp;unsigned&nbsp;char<br />uchar&nbsp;data1,nums,numg;<br />uchar&nbsp;shiwei[6]={0x40,0x79,0x24,0x30,0x19,0x12};<br />uchar&nbsp;gewei[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};<br /><br /><br />sbit&nbsp;CLK=P1^0;<br />sbit&nbsp;ST=P1^1;<br />sbit&nbsp;OE=P1^2;<br />sbit&nbsp;EOC=P1^3;<br />sbit&nbsp;SHI=P1^4;<br />sbit&nbsp;GE=P1^5;<br /><br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TMOD=0x01;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TH0=(65536-2)/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=(65536-2)%256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TR0=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;ET0=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(EOC==0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OE=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data1=~P3;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OE=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nums=data1/51;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SHI=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2=shiwei[nums];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SHI=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data1=data1%51;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numg=data1/5;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GE=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2=gewei[numg];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GE=0;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />void&nbsp;t0(void)&nbsp;interrupt&nbsp;1&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TH0=(65536-2)/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=(65536-2)%256;<br />&nbsp;&nbsp;&nbsp;&nbsp;CLK=!CLK;<br />}<br /><br /><br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20095/200952314535335.rar'>https://bbs.21ic.com/upfiles/img/20095/200952314535335.rar</a>
leiyun121 发表于 2009-5-23 19:31 | 显示全部楼层

哈哈,有些设置问题,我也遇到过

把smiulate&nbsp;program&nbsp;fetches&nbsp;&nbsp;&nbsp;no&nbsp;的选项改为&nbsp;yes<br />ale就有方波输出了
leiyun121 发表于 2009-5-23 19:31 | 显示全部楼层

哈哈,有些设置问题,我也遇到过

把smiulate&nbsp;program&nbsp;fetches&nbsp;&nbsp;&nbsp;no&nbsp;的选项改为&nbsp;yes<br />ale就有方波输出了
 楼主| Program1 发表于 2009-5-24 12:09 | 显示全部楼层

谢谢~!

呵呵,谢谢leiyun121~!
 楼主| Program1 发表于 2009-5-24 12:15 | 显示全部楼层

D触发器的原理也明白了!

来一个时钟脉冲,D端数据就被送到输出端Q,同时输出一个反向数据到Q非端<br />下一个时钟脉冲到,重复上面过程,但数据己被取反<br />由此每二个时钟脉,Q端数被取反一次,得到时钟的二分频
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部