标题:
基于PICf16877的ADC源码
[打印本页]
作者:
wangshuo
时间:
2018-5-3 08:08
标题:
基于PICf16877的ADC源码
国内关于PIC的内容太少了, 希望大家都相互交流学习.
0.jpg
(18.48 KB, 下载次数: 78)
下载附件
2018-5-3 17:18 上传
单片机源程序如下:
//从零到项目开发学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)
2018-5-3 08:07 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1