基于PICf16877的ADC源码

2019-11-11来源: 51hei关键字:PICf16877  ADC  C语言技术

单片机源程序如下:

//从零到项目开发学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)

……………………



关键字:PICf16877  ADC  C语言技术 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479587.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:电池容量测试仪电路与源码(PIC16F1938单片机+AD623实现)
下一篇:PWM控制MOSFET搭建的H桥电路驱动直流电机仿真与单片机源码

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stm32f0 hal adc配置
Clock Prescaler:和系统时钟同步并且二分频Sampling Time :采样时间,采样时间是你通过寄存器告诉STM32采样模拟量的时间,设置越长越精确
发表于 2019-11-11
stm32f0 hal adc配置
单片机MQ-2烟雾检测+ADC0809 AD转换+lcd1602显示程序
使用11.0592M]=============================================================*/#include <reg52.H>                //器件配置文件#include <intrins.h>#include "lcd.h"#define adc0809_data  P0  //单片机P0接模块D0~D7引脚sbit STR = P2^3; //单片机P2.3接模块STR引脚, 启动转换信号sbit EOC
发表于 2019-11-11
单片机MQ-2烟雾检测+ADC0809 AD转换+lcd1602显示程序
STC15单片机ADC温敏电阻测温源程序
品诺电子STC15W4K-实验29-ADC温敏电阻测量温度单片机源程序如下:/************************************************************************************** 实验平台:品诺电子STC15W4K核心板 + 品诺电子"开拓者"扩展板* 时钟选择:内部IRC时钟22.1184M* 功能说明:该实验通过ADC功能,使用扩展板上的温敏电阻测量当前温度,温度值显示在数码管上。温敏电阻相对于DS18B20温度传感器,价格低
发表于 2019-11-11
2440裸机编程之七 模数转换器ADC
S3C2440A 内部具有8 路模拟信号输入的10 位模/数转换器(ADC)。用到的寄存器有:ADCCON:用于选择通道、设置频率、开始转换、结束标志   ADC的频率 = PCLK/(ADCCON[13:6]+1)ADCDATn:用于读出ADC通道n的转换结果:ADCDATn[9:0]下面是个ADC通道0的实验程序://********************************************************************#define adc_frequency 2000000void Main(void){      
发表于 2019-11-09
2440裸机编程之七 模数转换器ADC
Teledyne e2v推出最新12位四核高速大带宽ADC新版本
Teledyne e2v已研发出最新的12位四核高速大带宽ADC的新版本。EV12AQ605和EV12AQ600的管脚完全兼容。这款新的ADC版本主要面向大用量的商业和工业市场领域。 EV12AQ600和EV12AQ605的通用管脚分布(顶视图) 客户可以设计独立运行或同步运行EV12AQ605的系统,使其工作在四通道1.6Gsps、双通道3.2Gsps或单通道6.4Gsps等不同模式。通过使用同一个ADC型号配置不同的系统,可满足大用量终端应用的需要。 EV12AQ605包含已被验证的链式同步功能,其在Teledyne e2v最新的数据转换器中已经有所应用(更多细节请参考多片ADC同步)——同步
发表于 2019-11-08
Teledyne e2v推出最新12位四核高速大带宽ADC新版本
技术文章—AWorks编程:嵌入式C语言的内存管理
摘要:工程师都知道,C/C++语言与其他语言不同,它需要开发者自己管理内存资源,对于动态内存使用不当,容易造成段错误或者内存泄漏,因此内存管理至关重要。本文将以C语言为例介绍动态内存管理的原理。 C/C++语言与其他语言不同,它需要开发者自己管理内存资源。对于动态内存的使用不当容易造成段错误或者内存泄漏。尤其是内存泄漏,内存泄漏往往是在程序运行一段时间才会被发现,使得开发人员无法第一时间定位错误。 而相比于个人计算机,嵌入式系统的内存资源更是稀缺。作为嵌入式C的开发人员,了解其内存管理的原理能使其更加正确地使用内存资源以及定位程序的bug。本文将以C语言为例介绍动态内存管理的原理。 一、动态内存的原理
发表于 2019-07-25
技术文章—AWorks编程:嵌入式C语言的内存管理
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved