这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 帮看看基于stc12c5a60s2的简单内部A/D转换程序错误在哪?

共10条 1/1 1 跳转至

帮看看基于stc12c5a60s2的简单内部A/D转换程序错误在哪?

助工
2014-05-31 19:35:15     打赏
#include<stc12.h>
#define uchar unsigned char
#define uint unsigned int
main()
{
	unsigned long i;
	uchar status;
	ADC_CONTR|=0X80;              //打开A/D转换电源
	for(i=0;i<10000;i++);
	P1ASF=0x01;                 //选择P1^0作为A/D转换通道
	ADC_CONTR=0XE0;		    
	for(i=0;i<10000;i++);
	while()
	{
		ADC_CONTR|=0X08;        //重新启动A/D转换
		status=0;
		ADC_RES=0;			  //清除以前数据
		while(!(ADC_CONTR|=0X10));     //判断转换是否结束
		ADC_CONTR=0XE7;
		status=ADC_RES;
	}	
}

 以上是我写的stc12c5a60s2内部A/D转换程序,P1^0作为转换通道与传感器模块的AO端相连,麻烦看看有没有问题,下面是利用LCD1602显示光强传感器采集的光强数据程序,和运行结果,数据没有显示出来,拜托各位大神帮忙找找原因,做好能帮忙写一个A/D转换程序,急求············拜托了···········

显示程序:

#include<stc12.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="hello world!";
uchar code table1[]="guan:--.- C";
sbit en = P2^5;
sbit rs = P2^7;
sbit rw = P2^6;
uchar num;			
void delay(uint z)
{
	uint x, y;
	for(x = z;x > 0;x--)
	for(y = 110;y > 0;y--);
}

void write_c(uchar c)
{
	rs = 0;
	P0 = c;
	delay(5);
	en = 1;
	delay(5);
	en = 0;
}

void write_da(uchar date)
{
	rs = 1;
	P0 = date;
	delay(5);
	en = 1;
	delay(5);
	en = 0;
}
void init()
{ 
	rw = 0;
	en = 0;
	write_c(0x38);
	write_c(0x0c);
	write_c(0x06);
	write_c(0x01);
		write_c(0x80);
	for(num = 0;num < 12;num++)
	{
		 write_da(table[num]);
	 delay(5);
	}
	delay(20000);
	write_c(0x01);
	write_c(0x80);
		for(num = 0;num < 11;num++)
	{
	 write_da(table1[num]);
	delay(5);
	}
}



void yjxianshi(uint date)
{	
	uchar a, b, c;
//	ds = 0;
	a = date/100;
	b = date%100/10;
	c = date%10;
	write_c(0x80 + 5);
	write_da(0x30 + a);
	write_c(0x80 + 6);
	write_da(0x30 + b);
	write_c(0x80 + 8);
	write_da(0x30 + c);
}

uint guangqiang(void)
{
	unsigned long i;
	uint status;
	ADC_CONTR|=0X80;              //打开A/D转换电源
	for(i=0;i<10000;i++);
	P1ASF=0x01;                 //选择P1^0作为A/D转换通道
	ADC_CONTR=0XE0;		    
	for(i=0;i<10000;i++);
	ADC_CONTR|=0X08;        //重新启动A/D转换
	status=0;
	ADC_RES=0;
	while(!(ADC_CONTR|=0X10));
	ADC_CONTR=0XE7;
	status=ADC_RES;
	return(status);	
}

void main()
{
uint t = 0;
uchar e;
init();
while(1)
 {
	 for(e = 240;e > 0;e--)
	 yjxianshi(t);
	 t = guangqiang();
	}
}  

 

 




关键词: A/D          stc12c5a60s2     转换     程序    

助工
2014-06-01 10:48:46     打赏
2楼
改后还是不行呀!

助工
2014-06-01 10:51:21     打赏
3楼
看不懂!可不可以把通道改为P1^0口,程序也发全点。拜托了,急求

助工
2014-06-01 10:58:22     打赏
4楼
拜托帮找找,错误就在A/D转换那一块

助工
2014-06-01 12:27:15     打赏
5楼
崩溃了,还是不行,光强传感器模块没问题呀!你有没有以前写的程序,我能不能直接用,急求拜托了

助工
2014-06-01 20:49:42     打赏
6楼

谢了!好高深,菜鸟的我看不懂,得向你好好学习!


助工
2014-06-01 21:05:34     打赏
7楼
哪一个是A/D通道呀?真心看不懂!

助工
2014-06-02 13:05:39     打赏
8楼
嗯,知道了

助工
2014-06-02 13:08:24     打赏
9楼
还没,我写的程序和网上搜的基本一样,就那么几行,可就是找不出错误,哎··········感觉A/D真心的好难!

助工
2014-06-02 13:11:07     打赏
10楼
今晚交作品,没时间了,别的都没问题,就差一个A/D转换程序,真的好遗憾!

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]