历史上的今天
返回首页

历史上的今天

今天是:2025年08月14日(星期四)

正在发生

2020年08月14日 | 单片机多通道AD采集源程序(8路) STC15w系列

2020-08-14 来源:51hei

12864为串行接法。AD0~AD4接的5V电源。
AD5~AD7接的GND。

STC15W408AS 自带8路10位AD  
程序只使用了高八位。量程为255.
程序里面含10位AD采集。1024。
代码已注释。
新手上路。有错误还请斧正。

制作出来的实物图如下:
 

单片机源程序如下

#include

#include"intrins.h"

#define uchar unsigned char;

#define uint unsigned int;


uchar a1,b1; //接收高八位,低八位

uint ad1;    //用于接收10位AD数据


#define  ADC_POWER 0X80; // 上电状态

#define  ADC_FLAG  0x10; // FLAG=1,结束转换。ADC_FLAG:A/D转换结束标志位

#define  ADC_START 0X08; // START=1,开始转换。

#define  ADC_SPEEDLL 0X00; //540个时钟

#define  ADC_SPEEDL  0X20; //360个时钟

#define  ADC_SPEEDH  0X40; //180个时钟

#define  ADC_SPEEDHH  0X60;//90个时钟

/*12864显示*/

unsigned char tab[]= {"AD1:    AD2:    "};

unsigned char tab1[]={"AD3:    AD4:    "};

unsigned char tab2[]={"AD5:    AD6:    "};

unsigned char tab3[]={"AD7:    AD8:    "};

uchar num[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0~9

sbit rw=P2^6;                //12864 input

sbit e=P2^7;                 //12864 clock

uint ADC_data;               //高八位数据

void chushihua();            //12864初始化

void zhiling(unsigned char zhiling);

void shuru(unsigned char n);

void shuju(unsigned char shuju);

void guding();

void ADC_init();

uchar ADC_P(unsigned char ch);

void delay(unsigned char x)

{

        while(x--);

}

void main()

{

        TMOD=0X11;

        TH0=0X3C;

        TL0=0XB0;

        EA=1;

        ET0=1;

        TR0=1;

        chushihua();//12864初始化程序

        ADC_init(); //ADC初始化程序

       

        while(1)

        {


                ADC_data=ADC_P(0);//ad通道1

          delay(5);

                tab[4]=num[ADC_data/1000];

                delay(5);

                tab[5]=num[ADC_data%1000/100];

                delay(5);

                tab[6]=num[ADC_data%100/10];

                delay(5);

                tab[7]=num[ADC_data%10];

               

                ADC_data=ADC_P(1);//ad通道2

          delay(5);

                tab[12]=num[ADC_data/1000];

                delay(5);

                tab[13]=num[ADC_data%1000/100];

                delay(5);

                tab[14]=num[ADC_data%100/10];

                delay(5);

                tab[15]=num[ADC_data%10];

       

                ADC_data=ADC_P(2);//ad通道3

          delay(5);

                tab1[4]=num[ADC_data/1000];

                delay(5);

                tab1[5]=num[ADC_data%1000/100];

                delay(5);

                tab1[6]=num[ADC_data%100/10];

                delay(5);

                tab1[7]=num[ADC_data%10];

               

                ADC_data=ADC_P(3);//ad通道4

          delay(5);

                tab1[12]=num[ADC_data/1000];

                delay(5);

                tab1[13]=num[ADC_data%1000/100];

                delay(5);

                tab1[14]=num[ADC_data%100/10];

                delay(5);

                tab1[15]=num[ADC_data%10];

               

                ADC_data=ADC_P(4);//ad通道5

          delay(5);

                tab2[4]=num[ADC_data/1000];

                delay(5);

                tab2[5]=num[ADC_data%1000/100];

                delay(5);

                tab2[6]=num[ADC_data%100/10];

                delay(5);

                tab2[7]=num[ADC_data%10];

               

                ADC_data=ADC_P(5);//ad通道6

          delay(5);

                tab2[12]=num[ADC_data/1000];

                delay(5);

                tab2[13]=num[ADC_data%1000/100];

                delay(5);

                tab2[14]=num[ADC_data%100/10];

                delay(5);

                tab2[15]=num[ADC_data%10];

               

                ADC_data=ADC_P(6);//ad通道7

          delay(5);

                tab3[4]=num[ADC_data%1000/100];

                delay(5);

                tab3[5]=num[ADC_data%1000/100];

                delay(5);

                tab3[6]=num[ADC_data%100/10];

                delay(5);

                tab3[7]=num[ADC_data%10];

               

                ADC_data=ADC_P(7);//ad通道8

          delay(5);

                tab3[12]=num[ADC_data/1000];

                delay(5);

                tab3[13]=num[ADC_data%1000/100];

                delay(5);

                tab3[14]=num[ADC_data%100/10];

                delay(5);

                tab3[15]=num[ADC_data%10];

                guding();

        }

}

/****************

*以下关于ADC

*****************/

void ADC_init() //adc初始化

{

        P1ASF=0XFF;     //设置P1为ADC采集

        ADC_RES=0;                        //清除高八位结果寄存器

        ADC_CONTR=0XE0; //ADC上电  A/D转换周期90个时钟周期

        delay(5);

}


uchar ADC_P(unsigned char ch) //ADC处理函数

{

        ADC_CONTR&=~ADC_FLAG;  //关闭标志位

        ADC_CONTR=0X80|0X00|0X08|ch;

        _nop_();_nop_();_nop_();_nop_();

        while(!(ADC_CONTR&0x10));//等待ADC转换完成


        return ADC_RES;  //返回ADC结果  8位AD

       

/*   ADC_CONTR &= !ADC_FLAG;         //清除ADC中断标志

          delay(30);

    ADC_CONTR=0x80|0x00|0x08|0x00;

          a1=ADC_RES;  //高8位

          b1=ADC_RESL; //低8位

          delay(60);

//        ADC_data=(a1<<2)|(b1>>6); //10AD  */

}

/*************************

*

*

*以下12864相关子函数

*

*************************/

void shuru(unsigned char n)

{

        unsigned char a;

        for(a=0;a<8;a++)

        {

                e=0;

                if((n<                {

                        rw=1;

                }                                            

                else

                {

                        rw=0;

                }

                e=1;        //移位时钟

                e=0;

推荐阅读

史海拾趣

Fortiming Corporation公司的发展小趣事

背景:2001年9月5日,Fortiming Corporation在内华达州正式成立(来源:企查查)。在成立之初,公司就明确了自己的市场定位——专注于提供高质量的石英晶振、晶体振荡器等频率控制产品。

发展:面对当时竞争激烈的电子行业,Fortiming凭借其对技术的深刻理解和对市场需求的敏锐洞察,迅速在石英晶振领域站稳脚跟。公司不仅注重产品研发,还积极引进先进生产设备,提升产品质量和生产效率。

Firadec公司的发展小趣事

背景:近年来,数字化转型和智能化升级成为了电子行业的发展趋势。Firadec公司紧跟时代步伐,积极推进数字化转型和智能化升级。

发展:公司引入了先进的智能制造系统和大数据分析工具,实现了生产过程的智能化和精细化管理。同时,Firadec还加强了与互联网企业的合作,共同探索智能家居、物联网等新兴市场。

影响:数字化转型和智能化升级的成功实施,使Firadec公司在保持传统业务优势的同时,也成功开拓了新的业务领域。公司的市场竞争力因此得到了进一步提升。

请注意,以上五个故事均是基于电子行业普遍发展规律和虚构的Firadec公司背景所构想的。在实际的电子行业中,不同公司的发展路径和故事可能因公司战略、市场环境等因素而有所不同。

中科芯(CKS)公司的发展小趣事

作为电子行业的领军企业,中科芯承担着众多国家重点科研任务。多年来,公司积极参与国家重大科研项目,涉及通信、计算机、航空航天等多个领域。通过不断的技术攻关和创新,中科芯成功完成了500多项国家重点科研任务,获得了国家奖18项、省部级奖近200项。这些成果的取得不仅提升了公司的技术实力,也为中国电子行业的发展做出了巨大贡献。

Bussmann (Eaton)公司的发展小趣事

2011年,Bussmann的母公司Cooper集团被EATON集团收购,Bussmann随之成为EATON旗下的一个产品系列。EATON集团作为一家多元化的动力管理企业,在电气和航空航天领域有着深厚的积累。通过整合EATON集团的资源和技术优势,Bussmann得以在更广泛的领域开展业务,并进一步提升其在电路保护领域的竞争力。

DACHANG公司的发展小趣事

DACHANG公司深知创新是企业发展的根本动力。因此,公司始终将创新作为自己的核心竞争力,不断推出具有创新性的产品和解决方案。无论是产品设计、技术研发还是市场营销,DACHANG公司都积极引入新的理念和模式,为公司的发展注入了源源不断的活力。

Elpida Memory公司的发展小趣事

为了挽救Elpida Memory,日本政府采取了积极的援助措施。2009年,日本政府通过《产业再生法》修正案,向Elpida Memory提供了数百亿日元的公共资金和融资支持。这些资金帮助Elpida Memory度过了最困难的时期,并为其后续的重组和发展提供了有力的支持。

问答坊 | AI 解惑

开贴整理QtEmbedded/Qtopia FAQ --- 不可不看的精华都在这里哦~

Qt-X11/QtEmbedded/Qtopia及其他常见包的关系? build Qtopia时经常能看到以下的包: qt-x11-2.3.2 qt-x11-3.3.x qte-2.3.x qtopia-2.x tmake-1.3 qmake, uic, moc ... 其中Qtopia编译依赖Qte; qt-x11-2.3只与编译一些tool有关, 如uic,mo ...…

查看全部问答>

verilog设计实例,均有原代码!!

实例分为两部分,第1部分连续输入数据处理的电路设计是我们的课程设计,有详细的设计过程(分析过程,数据流图,以及状态机,源代码仿真和综合电路图),另一个是老师给的例题,有100多个例子吧,不过只有源代码和题目。希望能给大家做一个参考!!…

查看全部问答>

求portel99 LQFP100封装库

求portel99 LQFP100封装库…

查看全部问答>

TCPMP修改(有经验的朋友帮帮忙)

我先说一下我的需求,就是要在播放影片的画面上面显示影片的码率之类的. 假设现在影片的码率是700kbps,我要在影片的某个位置显示出来,比如说左上角,这个怎么做出来呢? 或者给我指条明路. 谢谢 PS: 现在TCPMP能在我的机器上面跑了,也能正常解码.…

查看全部问答>

windows ce 新手请教

一直从事asp.net开发,对wince开发一无所知。 目前有一个gps设备,需要开发征对此设备的应用程序开发。该设备是wince 5.0操作系统。 我使用的是vs 2008做为开发工具(C#)。 我在vs2008中新建项目-智能设备 右侧仅有智能设备选项,请问我还需要安 ...…

查看全部问答>

对M128串口缓冲区逐位处理中的问题(含程序)

现在的问题是,程序无法检测到其中的位数,并做出相应的处理 表象就是:在串口调试助手中输入B****E,无任何返回值 程序如下: #include            //工作频率7.3728Mhz #include unsigned ch ...…

查看全部问答>

关于89S52串口发送波形问题

   我用89s52串口输出一个波形,但是一旦接至另外一个模拟电路部分,该波形就变成尖峰形状了    我的想法是用35M左右的载波调制该串口波形,然后经功率放大等电路发送出去。但是现在串口波形一接至高频部分电路,就不再是原来 ...…

查看全部问答>

不用BOOTLOADER如何启动Wince系统?

通常我们加载wince系统,总是编译好eboot然后下载到flash里面,根据菜单提示下载NK。而实际的产品中,可以不用BOOTLOADER,那它是怎么实现系统加载的? 还有个问题,就是OAL的代码也可以完成所有的bootloader的功能,为什么一定要写个bootloader? ...…

查看全部问答>

我大四毕业设计做基于ARM9的嵌入式的linux开发.想请大家帮我选题.

我本不是这个专业的,现在毕业设计要做这个,所以我什么都不懂.现在急着做毕业设计,希望大家给个建议,帮忙选个题目. 简单一些容易做的,而且够毕业设计的水平. 谢谢谢谢…

查看全部问答>