微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 2014年春季EITP工程师认证全国统考试卷

2014年春季EITP工程师认证全国统考试卷

时间:10-02 整理:3721RD 点击:

考试试题:

1.      STC15F2K60S2(可用其他单片机代替)单片机集成有8路10位的高速电压输入型模数转换器(ADC),设计一个AD转换电路,采用热敏电阻测量当前的问题,使用AD转换通道0采集该电压并进行转换,最终通过串口显示到上位机上。


我的代码粘贴如下:

#include<reg51.h>

#include<intrins.h>

#define uint8 unsigned char

#define uint16 unsigned int       

#define DataPort P0                   //AD转换范围0-255

#define SegSel P2                        //段选

#define PosSel P3                   //位选

sbit AleStart=P1^0;

sbit OE=P1^2;                                  

sbit EOC=P1^1;

uint8 code Segment[]={0x3f,0x06,0x5b,0x4f,

                                        0x66,0x6d,0x7d,0x07,

                                        0x7f,0x6f,0x77,0x7c,

                                        0x39,0x5e,0x79,0x71         };

uint8  String[]={'0','1','2','3','4','5','6','7','8','9',' '};

void init( )

{

         TMOD=0x20;

         TH1=0xfd;

         TL1=0Xfd;

         TR1=1;

         SCON=0x50;

     EA=1;

         ES=1;

}

void delay(uint16 ms);

void Display(uint8 num);

void main()

{        init( );

        while(1)

    {

                AleStart=0;

                AleStart=1;

                   AleStart=0;

                while(!EOC);

                OE=1;

                Display(DataPort);

                OE=0;

        }

}

void Display(uint8 num)

{       

  

        uint8 temp=0xfe,Ten,Hundred,One,i;

        uint16  num1;

        num1=(uint16)(5.00/255*num*100);

        Hundred=(num1)/100;

        Ten=num1%100/10;

        One=num1%10;

          ES=0;

        SBUF=String[Hundred];

        while(!TI);

        TI=0;


        SBUF=String[Ten];

        while(!TI);

        TI=0;


        SBUF=String[One];

        while(!TI);

        TI=0;


        SBUF=String[10];

        while(!TI);

        TI=0;

        delay(700);

//数码管显示

//        for(i=0;i<80;i++)

//           {

//                 PosSel=0xfe;

//                 SegSel=Segment[One];

//                 delay(1);

//

//                PosSel=0xfd;

//                 SegSel=Segment[Ten];

//                 delay(1);

//

//            PosSel=0xfb;

//                 SegSel=Segment[Hundred]|0x80;

//                 delay(1);

//

//        }

ES=1;

}

void delay(uint16 ms)

{

        uint16 i,j;

        for(i=ms;i>0;i--)

          for(j=112;j>0;j--);


}               


连线图怎么连啊?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top