⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.c

📁 PIC16F877应用的AD转换主程序 并可以通过LCD显示
💻 C
字号:
#include <pic.h>
#include <stdio.h>
#include <math.h>
#include "lcd.h"
bank1 int cplz[11];
union cp1                      //定义共同体存放数值
{
    int y1;
    unsigned char cple[2];
}cplu;
bank2 unsigned char count,data,k;
bank2 int T5,u0;
bank2 double RE5;
bank2 unsigned  char s[4];   


void ccpint()                 //CCP初始化
{
    CCP1CON=0x05;
    T1CON=0x00;
    PEIE=1;
    CCP1IE=1;
    TRISC2=1;                  //使用RC2口
}

void initial()              //初始化计数值
{
    count=0x0B;
}

void interrupt cplint(void)   //中断程序
{
   if(CCP1IF==1)
   {CCP1IF=0;
    TMR1IF=0;
    cplu.cple[0]=CCPR1L;
    cplu.cple[1]=CCPR1H;
    cplz[data]=cplu.y1;
    CCP1CON=CCP1CON^0x01;
    data++;
    count--;
    
    } 
}

void period()               //周期子程序
{
   T5=cplz[10]-cplz[0];
   RE5=(double)T5;
   RE5=RE5/5;
}

void frequency()           //频率子程序
{   
   period();
   RE5=1000000/RE5;
}



void main()
{
  ccpint();
  initial();
  init(); 
  lcd_init(); 
  write_web();   
  TMR1H=0;
  TMR1L=0;
  CCP1IF=0;
  TMR1IF=0;
  INTCON=0xc0;
  TMR1ON=1;
  while(1)
  {   count=0x0B;  
      TMR1H=0;
      TMR1L=0;
      CCP1IF=0;
      TMR1IF=0;
      GIE=1;
      PEIE=1;
      TMR1ON=1;
    
     while(1)
    { if(count==0) break; }
      TMR1ON=0;                  //关定时器
      GIE=0;                     //关总中断
      frequency();         
 //   precision(RE5);   
      PORTD=0xc0;            
      lcd_enable();             
      write_tel(RE5);
   }
}











   







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -