[ZLG-ARM] 求助LPC2103 AD转换问题

[复制链接]
3434|2
 楼主| gzhc 发表于 2008-11-28 13:33 | 显示全部楼层 |阅读模式
大家好!我在学习LPC2103,现学到AD转换了,现发现转换不了,恳求大家帮我一下。我的QQ是909424781<br /><br />/*<br />我的第五个ARM程序(不带操作系统的应用程序)<br />采用ISP方法烧录。<br />测试ADC功能的,P0.15脚(接LED-极)<br />转换结果大于设定阀值时点亮LED<br />*/<br /><br />#include&nbsp;&quot;LPC2103.h&quot;<br /><br />//使用P15脚<br />#define&nbsp;gled&nbsp;1&lt&lt15<br /><br />#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11059200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;Fcclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fosc&nbsp;*&nbsp;4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;Fcco&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;*&nbsp;4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;Fpclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;/&nbsp;4)&nbsp;*&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />void&nbsp;&nbsp;DelayNS(unsigned&nbsp;int&nbsp;&nbsp;dly);//延时<br /><br />void&nbsp;gledonoff(unsigned&nbsp;int&nbsp;cnt);//闪亮LED<br /><br />int&nbsp;main()<br />{<br /><br />unsigned&nbsp;int&nbsp;ADC_Data;<br /><br />//初始化端口P0.22为AN0(AD转换口)<br />PINSEL1|=(0x03&lt&lt12);<br /><br />//初始化端口P15为GPIO输出功能<br />IODIR|=(1&lt&lt15);<br /><br />//初始化端口P15输出高电平<br />IOSET|=(1&lt&lt15);<br /><br />//进行ADC模块设置,其中x&lt&ltn表示第n位设置为x(若x超过一位,则向高位顺延)&nbsp;<br />ADCR&nbsp;=&nbsp;(1&nbsp;&lt&lt&nbsp;0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SEL&nbsp;=&nbsp;1&nbsp;,选择通道0<br />((Fpclk&nbsp;/&nbsp;1000000&nbsp;-&nbsp;1)&nbsp;&lt&lt&nbsp;8)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CLKDIV&nbsp;=&nbsp;Fpclk&nbsp;/&nbsp;1000000&nbsp;-&nbsp;1&nbsp;,即转换时钟为1MHz<br />(0&nbsp;&lt&lt&nbsp;16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BURST&nbsp;=&nbsp;0&nbsp;,软件控制转换操作<br />(0&nbsp;&lt&lt&nbsp;17)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CLKS&nbsp;=&nbsp;0&nbsp;,使用11clock转换<br />(1&nbsp;&lt&lt&nbsp;21)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PDN&nbsp;=&nbsp;1&nbsp;,&nbsp;正常工作模式(非掉电转换模式)<br />(0&nbsp;&lt&lt&nbsp;22)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TEST1:0&nbsp;=&nbsp;00&nbsp;,正常工作模式(非测试模式)<br />(1&nbsp;&lt&lt&nbsp;24)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;START&nbsp;=&nbsp;1&nbsp;,直接启动ADC转换<br />(0&nbsp;&lt&lt&nbsp;27);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;EDGE&nbsp;=&nbsp;0&nbsp;(CAP/MAT引脚下降沿触发ADC转换)<br /><br />DelayNS(10);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />ADC_Data&nbsp;=&nbsp;ADGDR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取ADC结果,并清除DONE标志位<br />&nbsp;&nbsp;&nbsp;<br />while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />ADCR&nbsp;=&nbsp;(ADCR&0x00FFFF00)|0x01|(1&nbsp;&lt&lt&nbsp;24);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置通道1,并进行第一次转换<br /><br />while((ADGDR&0x80000000)==0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待转换结束<br /><br />ADCR&nbsp;=&nbsp;ADCR&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;24);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;再次启运转换<br /><br />while((ADGDR&0x80000000)==0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待转换结束<br /><br />ADC_Data&nbsp;=&nbsp;ADGDR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取ADC结果<br /><br />ADC_Data&nbsp;=&nbsp;(ADC_Data&gt&gt6)&nbsp;&&nbsp;0x3FF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;提取AD转换值<br /><br />ADC_Data&nbsp;=&nbsp;ADC_Data&nbsp;*&nbsp;3300/1024;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;数值转换<br /><br />if&nbsp;(ADC_Data&gt0)&nbsp;{gledonoff(0x2000);}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//大于阀值时闪亮LED<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br />void&nbsp;gledonoff(unsigned&nbsp;int&nbsp;cnt)<br />{<br /><br />unsigned&nbsp;int&nbsp;j;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />IOCLR=gled;<br /><br />for&nbsp;(j=0;j&ltcnt;j++)<br />;<br /><br />IOSET=gled;<br /><br />for&nbsp;(j=0;j&lt0x2000;j++)<br />;<br />}<br /><br />void&nbsp;&nbsp;DelayNS(unsigned&nbsp;int&nbsp;&nbsp;dly)<br />{&nbsp;&nbsp;<br />unsigned&nbsp;int&nbsp;&nbsp;i;<br />for(;&nbsp;dly&gt0;&nbsp;dly--)&nbsp;<br />&nbsp;{<br />for(i=0;&nbsp;i&lt5000;&nbsp;i++);<br />&nbsp;}<br />}<br />
 楼主| gzhc 发表于 2008-11-28 15:54 | 显示全部楼层

已经解决问题了。

  
红舞林檬浩 发表于 2011-3-11 16:35 | 显示全部楼层
shm什么问题啊 我觉得 解决问题之后 应该把你错误的地方指出来 这样给后来人启示啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

34

帖子

1

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