国内关于PIC的内容太少了, 希望大家都相互交流学习.
单片机源程序如下:
- //从零到项目开发学PIC单片机与C语言技术视频教程配套实验源码
- #include<pic.h>
- #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)
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
ADC.zip
(110.4 KB, 下载次数: 32)
|