智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1915|回复: 2
打印 上一主题 下一主题

请高手帮我看看……

[复制链接]

0

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
324
威望
215
贡献
49
兑换币
12
注册时间
2008-9-17
在线时间
30 小时
跳转到指定楼层
1#
发表于 2008-10-29 04:41:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<>我的这个程序怎么AD不能采集到信号。</P><P>//简单温度测控系统源程序</P><P>//**********************************************************************<BR>//说明:该程序可实现简单的水温检测,整个程序的执行过程也可以在S12实验板上实现模拟主程序<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S12端口的分配<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTT[3:0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LED位控制口<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTP[7:0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LED段码寄存口<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PORTB[7:0]&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; PTD7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A/D转换通道7<BR>//***********************************************************************<BR>&nbsp; <BR>#include&lt;hidef.h&gt;<BR>#include&lt;mc9s12dg128.h&gt;</P><P>#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"</P><P>//**********************************************************************<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义全局变量<BR>//**********************************************************************<BR>uchar MA[]={0xC0,0xF9,0xA4,0xb0,0x99,0x92,0x82,0xF8,0x80,0x90};<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;&nbsp;&nbsp;&nbsp;&nbsp; //定义数组,存放LED段码(0-1)<BR>word AD_Value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义1个变量,存放A/D转换的数据<BR>int g,s,b,q;</P><P>//**********************************************************************<BR>//函数声明<BR>//**********************************************************************</P><P>void Display(int g1,int s1,int b1,int q1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//数码管显示函数<BR>void Delay(int cnt);&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>void AD_Init(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //A/D模块初始化函数<BR>void AD_GetValue(word *AD_Value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取一次A/D转换数据函数<BR>void Dat_Deal(int DispValue);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //数据处理函数,建立A/D转换数据与温度关系<BR>void Warn(void);&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; //警告函数</P><P>//***********************************************************************<BR>//函数名称:main()<BR>//函数功能:实现简单温度测控系统的检测与报警<BR>//by lynd<BR>//***********************************************************************</P><P>void main(void)<BR>{<BR>&nbsp;AD_Init();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //A/D初始化<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //端口初始化<BR>&nbsp;DDRB=0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //B口输出与B口相连的8个LED灯全灭<BR>&nbsp;PORTB=0xFF;<BR>&nbsp;DDRP=0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //P口输出LED段码<BR>&nbsp;PTP=0xFF;<BR>&nbsp;DDRT=0x0F;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //T口输出KED位码<BR>&nbsp;PTT=0x0F;<BR>&nbsp;for(;;)<BR>&nbsp;{<BR>&nbsp;while (!ATD0STAT1_CCF0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //查询方式,等待转换结果<BR>&nbsp;AD_GetValue(&amp;AD_Value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //读取转换结果<BR>&nbsp;Dat_Deal(AD_Value);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //数据处理.建立A/D转换数据与温度关系<BR>&nbsp;Display(q,b,s,g);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //显示温度<BR>&nbsp;Warn();&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>&nbsp;}<BR>}</P><P>//***********************************************************************<BR>//函数名称:AD_Init()<BR>//函数功能:A/D转换模块初始化<BR>//***********************************************************************</P><P>void AD_Init(void)<BR>{<BR>&nbsp;ATD0CTL2=0xC0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //A/D模块上电,快速清零,无等待模式,禁止外部出发,中断禁止<BR>&nbsp;ATD0CTL3=0x20;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //每个序列4次转换,No FIFO,Freeze模式下继续转换<BR>&nbsp;ATD0CTL4=0x83;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //8位精度,2个时钟,PRS=3,divider=8<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //ATDClock=[BusClock*0.5][PRS+1]<BR>&nbsp;ATD0CTL5=0xA7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //右对齐无符号,单通道采样,通道7<BR>&nbsp;ATD0DIEN=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //禁止数字输入<BR>}</P><P>//***********************************************************************<BR>//函数名称:AD_GetValue<BR>//函数功能:读A/D转换结果<BR>//入口参数:*AD_Value--A/D转换数据寄存指针变量<BR>//*********************************************************************** </P><P>void AD_GetValue(word *AD_Value)<BR>{<BR>//&nbsp;&nbsp; while(ATD0STAT1_CCF7==0);<BR>&nbsp;&nbsp;&nbsp; *AD_Value=ATD0DR0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //读取A/D转换结果<BR>}</P><P>//************************************************************************<BR>//函数名称at_Deal()<BR>//函数功能:数据处理,建立A/D转换数据与温度关系,并把温度分离成千,百,十和个位供LED显示<BR>//入口函数:DispValue---温度暂存寄存变量<BR>//************************************************************************</P><P>void Dat_Deal(int DispValue)<BR>{<BR>&nbsp;DispValue=AD_Value;&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>&nbsp;q=DispValue/1000;&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>&nbsp;b=(DispValue-q*1000)/100;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //分离百位<BR>&nbsp;s=(DispValue-q*1000-b*100)/10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //分离十位<BR>&nbsp;g=DispValue-q*1000-b*100-s*10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //分离个位<BR>}</P><P>//************************************************************************<BR>//函数名称:Delay()<BR>//函数功能:软件延时<BR>//入口参数:dly--延时参数,数越大值越大<BR>//************************************************************************</P><P>void Delay(int cnt)<BR>{<BR>&nbsp;<BR>&nbsp;int i,j;<BR>&nbsp;for(i=0;i&lt;cnt;i++) <BR>&nbsp;{<BR>&nbsp;&nbsp; j=0x1300;<BR>&nbsp;&nbsp; while(j--);<BR>&nbsp;}<BR>}</P><P>//************************************************************************<BR>//函数名称:Display()<BR>//函数功能:显示温度<BR>//入口参数:q1---千位数据寄存变量<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b1---百位数据寄存变量<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s1---十位数据寄存变量<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g1---个位数据寄存变量<BR>//************************************************************************</P><P>void Display(int g1,int s1,int b1,int q1)<BR>{<BR>&nbsp;g1=g;<BR>&nbsp;s1=s;<BR>&nbsp;b1=b;<BR>&nbsp;q1=q;<BR>&nbsp;PTT=0xFE;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //显示千位<BR>&nbsp;PTP=MA[q1];<BR>&nbsp;Delay(100);<BR>&nbsp;PTT=0xFD;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //显示百位<BR>&nbsp;PTP=MA[b1];<BR>&nbsp;Delay(100);<BR>&nbsp;PTT=0xFB;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //显示十位<BR>&nbsp;PTP=MA[s1];<BR>&nbsp;Delay(100);<BR>&nbsp;PTT=0xF7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //显示个位<BR>&nbsp;PTP=MA[g1];<BR>&nbsp;Delay(100);<BR>}</P><P>//************************************************************************<BR>//函数名称:Warn()<BR>//函数功能:当温度高与设定值时报警<BR>//************************************************************************</P><P>void Warn(void)<BR>{ <BR>&nbsp;if(AD_Value&gt;80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果温度高于78度报警,B口LED灯全亮<BR>&nbsp;&nbsp;PORTB=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;else<BR>&nbsp;&nbsp;PORTB=0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 否则全灭<BR>}</P><P><BR>&nbsp;</P>

0

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
324
威望
215
贡献
49
兑换币
12
注册时间
2008-9-17
在线时间
30 小时
2#
 楼主| 发表于 2008-11-4 01:27:59 | 只看该作者

Re:请高手帮我看看……

<>接了,我自己找到原因了,在接电路时,接错了一根线。谢谢啊!<IMG src="http://www.znczz.com/images/Emotions/2.gif"><IMG src="http://www.znczz.com/images/Emotions/11.gif"></P>
回复 支持 反对

使用道具 举报

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
3#
发表于 2008-10-30 03:23:02 | 只看该作者

Re:请高手帮我看看……

<>参考电压接了?</P><P>&nbsp;</P>
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-11 05:59 , Processed in 0.043343 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表