一、主函数


//采集AD值


#include <pic.h>

#include "ad.h"

#include "usart.h"


__CONFIG(0xFF32);


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

                        0x07,0x7f,0x6f};


//延时函数

void delayms(uint x)

{

    uint j,k;

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

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

}


//显示4位,低位数码管显示不正常

void display(uint x)

{

    PORTD= disp[x/1000]|0x80;

    PORTA= 0x10;

    delayms(2);

   

       PORTD= disp[x/100%10];

      PORTA= 0x08;

    delayms(4);


       PORTD= disp[x/10%10];

       PORTA= 0x04;

    delayms(2);


       PORTD= disp[x%10];

       PORTA= 0x02;

    delayms(2);

}




//初始化IO

void init()

{

    TRISA = 0x01;            //RA0 input mode

    TRISC = 0xff;                //RC output mode

    TRISD = 0;

    PORTC = 0x01;


    ADCON0 = 0x41;            //ADCS1:ADCS0=01,AN0,,A/D On

    ADCON1 = 0x8E;            //right justified,ADCS2=0,1110

    delayms(10);

}


//获取AD值

uint getad()

{

    uint adval;

    float advalf;

    GO = 1;

    while(GO);

    adval = ADRESH;

    adval = adval<<8|ADRESL;

    advalf = adval/1023.0*5.0;                //转换成电压

    adval = (uint)(advalf*1000);            //转换成4位整型

    return (adval);

}


void main()

{

    uint i = 0;

    uint temp;

    init();

    usart_init();

    while(1)

    {

        temp = getad();

        display(temp);

        if(i == 100)

        {

            usart_tx(temp>>8);

            usart_tx(temp);

            i=0;

        }

        delayms(5);

        i++;

    }

}


二、usart函数


#include

#include "usart.h"


//串口初始化

void usart_init(void)

{

    SPBRG = 0xC;                //波特率19200

    TXSTA = 0x24;                //开启发送,高速模式

    RCSTA = 0X90;                //使能TXRX引脚,接收到CREN直到被清零

    RCIE = 0X1;                    //使能接受中断

    GIE = 0X1;                    //开启总中断

    PEIE = 0X1;                    //开启串口中断

}


void interrupt usart(void)

{

    if(RCIE && RCIF)

    {

        TXREG = RCREG;            //返回接收的数据

    }

}


void usart_tx(unsigned char date)

{

    TXREG = date;

    while(TRMT!=1);

}


关键字:pic16f877a  AD实验  采集 引用地址:pic16f877a的AD实验学习

上一篇:MPLAB X XC8编译器件入门 基于PIC18F45K80
下一篇:Pic16f1828 1829串口收发

推荐阅读

    随着九月的即将到来,新品旗舰即将发布,不少手机都开始了新的一轮大降价,苹果也不例外,尤其是新iPhone即将发布了,iPhone 8大降价促销那是肯定的。不过今天笔者要给大家推荐的并不是iPhone,而是目前市场上最值得购买的安卓手机,新机发布,老机让路,这已经是手机圈的潜规则,目前为了迎接新机,多款旗舰价格不断下跌,降至最低价,市场竞争...
— 针对极其拥挤的无线网络优化推出四个不同的可扩展平台,以提供高度差异化的Wi-Fi 6性能 — Qualcomm Incorporated 全资子公司Qualcomm Technologies, Inc.宣布推出第二代Wi-Fi 6网络解决方案——Qualcomm® Networking Pro系列平台,旨在为最广泛的应用提供极致的Wi-Fi 6连接体验。在旧金山举办的Qualcomm® Wi-Fi 6技术日上,公司展示了Q...
随着汽车越来越智能,车内究竟应该是以大屏为主还是物理按键为主也成为业内争论的焦点。有的人说,车内大屏已经是一种趋势,物理按键不再符合用户需求;有的人说,相较于大屏语音交互,物理按键的反应更为迅速灵敏,更有安全感;还有的人表示,未来,物理按键将与大屏共存。事实上,对于车内大屏和物理按键的争议,背后则是对车内人机交互方式的不同看法。...
导读:欧洲电池制造商InoBat公司宣布与美国电池材料供应商Group14 Technologies公司进行合作,将使用Group14的专利硅基负极材料为汽车生产高能量密度的电池。InoBat公司表示,高能量密度电池市场需求飙升,相比传统锂离子电池,硅基负极材料的单位体积能量密度更高。Group14表示,能源部已经认可其“新颖的、可投入使用的纳米材料和可靠的工业规模工艺”...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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