×
单片机 > 单片机程序设计 > 详情

基于PICf16877的ADC源码

发布时间:2020-05-30 发布时间:
|

单片机源程序如下:

//从零到项目开发学PIC单片机与C语言技术视频教程配套实验源码

#include

#define uchar unsigned char

#define uint  unsigned int

__CONFIG(0x3B31);

const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,

                        0x87,0xff,0xef};

void delay(uint x);

void init();

void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5);

void disp1(uchar num1,uchar num2,uchar num3,uchar num4);

uint get_ad();

void main()

{

        uint lednum,u1,u2,r1,r2;

          float n;

        uchar a1,a2,a3,a4,a5;

        init();

        while(1)

        {/*

                lednum=get_ad();

                a1=lednum/1000;

                a2=lednum%1000/100;

                a3=lednum%100/10;

                a4=lednum%10;

                disp(a1,a2,a3,a4);

            */

                          lednum=get_ad();

                   // n=(lednum*10)/(10240-lednum);

                    n=lednum;

                    //u1=5120-lednum;

                    //r1=u2/u1;

                   // r2=r2*1000;

                   // r2=lednum;

                    //r1=u1/i;

                   // r2=lednum*10/i*10

                   // r2=i;

                   // i=i*10000

                   // r2=lednum;

                   // r2=u2/i;

                    //i=(5000-lednum)/10000;

                   // r2=lednum/i;

                    //lednum=(int)r2;

                   // n=n*1000;

                    r2=n;

                    //r2=lednum;

/*                  

                a1=r2/10000; 

                a2=r2%10000/1000;

                a3=r2%1000/100;

                a4=r2%100/10;

                    a5=r2%10;

                disp1(a1,a2,a3,a4,A5);

*/

                    a1=r2/1000; 

                a2=r2%1000/100;

                a3=r2%100/10;

                a4=r2%10;

                disp1(a1,a2,a3,a4);

        }        

}

void delay(uint x)

{

        uint a,b;

        for(a=x;a>0;a--)

                for(b=110;b>0;b--);

}

void init()

{

        TRISA=0x01;//0000 0001

        TRISD=0;

        PORTA=0;

        PORTD=0;

          TRISB=0;

        PORTB=0;

        ADCON0=0x41;

        ADCON1=0x80;

        delay(10);

}

uint get_ad()

{

        uint adval;

        float advalf;

        GO=1;

        while(GO);

        adval=ADRESH;//00000000 00000011

        adval=adval<<8|ADRESL;//00000011 11111111

        //advalf=adval/1023.0*5.0;//==2.3843

          //advalf=adval/1023.0*5.0;//==2.3843

        //adval=advalf*1000;

         // adval=adval*1024;

          adval=adval;

        return (adval);        

}

void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5)

{

        PORTD=table1[num1];//显示第一个数码管

        PORTA=0x20;//0010 0000

        delay(2);

        PORTD=table[num2];//显示第二个数码管

        PORTA=0x10;//0001 0000

        delay(2);

        PORTD=table[num3];//显示第三个数码管

        PORTA=0x08;//0000 1000

        delay(2);

        PORTD=table[num4];//显示第四个数码管

        PORTA=0x04;//0000 0100

        delay(2);

          PORTD=table[num5];//显示第四个数码管

        PORTB=0x20;//0000 0100

        delay(2);

}

void disp1(uchar num1,uchar num2,uchar num3,uchar num4)

……………………




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会