久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4639|回復: 3
打印 上一主題 下一主題
收起左側(cè)

PIC16F877A單片機做個電壓電流表

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:159270 發(fā)表于 2017-1-5 13:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
手頭上有PIC16F877A,LCD1602,想DIY個直流電壓電流顯示器,菜鳥一個,手上有LED顯示的電壓表程序,哪位有1602顯示的程序,分享下行嗎
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:159270 發(fā)表于 2017-1-5 14:19 | 只看該作者
//////////////////////////////////////////////////
//  Author     :   Toby
//  Date       :   2009/03/08
//  Function   :   數(shù)字電壓表程序,用數(shù)字濾波的方式,并在LCD 1602上顯示
//  MCU        :   PIC16F877A
//  C Compiler :   PICC 8.05
//  IDE        :   MPLAB IDE v8.10               
/////////////////////////////////////////////////

__CONFIG(0x1832);        
//芯片配置字,看門狗關(guān),上電延時開,掉電檢測關(guān),低壓編程關(guān),加密,4M晶體HS振蕩

union  adres                                                            //定義一個共用體,用于存放10位A/D轉(zhuǎn)換的結(jié)果
{int  y1;
unsigned  char  adre[2];
}adresult;

unsigned int ADC=0;

void adinitial_voltage(void);// RA0為AD輸入

const char TABLE[]={'0','1','2','3','4','5','6','7','8','9'};  //定義常數(shù)0-9的數(shù)據(jù)表格
const char data[4]={'0','0','0','0'};
#define rs RA1
#define rw RA2
#define e  RA3

const char voltage[ ]={'V','O','L','T','A','G','E','='};

unsigned char ge=0,shi=0,bai=0,qian=0;   //定義6個臨時變量
void init();                   //申明I/O口初始化函數(shù)
void lcd_init();               //申明LCD初始化函數(shù)
void lcd_dis();
void write_voltage();            
void write(char x);            //申明顯示1字節(jié)數(shù)據(jù)函數(shù)
void lcd_enable();             //申明LCD顯示設(shè)置函數(shù)
void delay();                  //申明延時函數(shù)

//---------------------------------------
//主函數(shù)
void main()
{     
    unsigned char a;
    init();                //調(diào)用I/O口初始化函數(shù)
    while(1)
      {
   
         adinitial_voltage();
         lcd_init();    //調(diào)用LCD初始化函數(shù)
         for(a=10;a>=1;a--)
          {   
            PORTD=0X80;               
            lcd_enable();

            write_voltage();

            PORTD=TABLE[qian];                   //待顯示數(shù)據(jù)送PORTD口
            lcd_dis();
           
            PORTD='.';                          //待顯示數(shù)據(jù)送PORTD口
            lcd_dis();

            PORTD=TABLE[bai];                   //待顯示數(shù)據(jù)送PORTD口
            lcd_dis();
      
            PORTD=TABLE[shi];                   //待顯示數(shù)據(jù)送PORTD口
            lcd_dis();
      
            PORTD=TABLE[ge];                   //待顯示數(shù)據(jù)送PORTD口
            lcd_dis();

      }         
  
      }
}

//---------------------------------------
//I/O口初始化函數(shù)
void init()
{
    ADCON1=0X0;                //設(shè)置A口為普通I/O口
    TRISA=0B00000001;          //設(shè)置A口為輸出
    TRISD=0X00;                //設(shè)置D口為輸出
}

//---------------------------------------
//LCD初始化函數(shù)
void lcd_init()
{
    PORTD=0X1;                 //清除顯示
    lcd_enable();
    PORTD=0X38;                //8位2行5*7點陣
    lcd_enable();
    PORTD=0X0c;                //顯示開,光標開,閃爍
    lcd_enable();
    PORTD=0X06;                //文字不動,光標右移
    lcd_enable();
   
}


//--------------------------------------
//顯示公司tel函數(shù)
void write_voltage()
{
    unsigned char  i;
    for(i=0;i<=7;i++)       //一共顯示16字節(jié)數(shù)據(jù)
       {
         write(voltage[i]);       //查表獲取數(shù)據(jù)并調(diào)用寫一個字節(jié)數(shù)據(jù)函數(shù)送LCD顯示
       }
}
  
//--------------------------------------
//寫一個字節(jié)數(shù)據(jù)函數(shù)  
void write(char x)
{
  PORTD=x;                   //待顯示數(shù)據(jù)送PORTD口
  lcd_dis();
}

//--------------------------------------
//LCD顯示設(shè)置函數(shù)
void lcd_enable()
{
   rs=0;                     //該字節(jié)數(shù)據(jù)為命令,而不是數(shù)據(jù)     RS=1數(shù)據(jù)RS=0命令
   rw=0;                     //此次操作為寫,而不是讀           RW=1讀RW=0寫
   e=0;                      //拉低使能信號
   delay();                  //保持使能信號為低一段時間
   e=1;                      //拉高使能信號,建立LCD操作所需要的上升沿
}
void lcd_dis()
{
   rs=1;                     //該字節(jié)數(shù)據(jù)為命令,而不是數(shù)據(jù)     RS=1數(shù)據(jù)RS=0命令
   rw=0;                     //此次操作為寫,而不是讀           RW=1讀RW=0寫
   e=0;                      //拉低使能信號
   delay();                  //保持使能信號為低一段時間
   e=1;                      //拉高使能信號,建立LCD操作所需要的上升沿
}
  
//延時函數(shù)
void delay()
{
   int i;
   for(i=0;i<50;i++);
}


void adinitial_voltage(void)// RA0為AD輸入
{   
         unsigned int AD_data[5]={0,0,0,0,0};
         for(j=0;j<=4;++j)
           {
             ADCON0=0B01000001;     //A/D 轉(zhuǎn)換器模塊工作;但AD轉(zhuǎn)換不進行;FOSC/8
             ADCON1=0B11101110;     //ADRESH 寄存器的高6 位讀為0;6位與7位須置1
             ADGO=1;
             while(ADGO);             //等AD轉(zhuǎn)換完成
             adresult.adre[0]=ADRESL;
             adresult.adre[1]=ADRESH;  //讀取并存儲A/D轉(zhuǎn)換結(jié)果
             AD_data[j]=adresult.y1;
            
          }
             for(j=0;j<=4;++j)
               if(AD_data[j]>AD_data[j+1])
                {temp=AD_data[j];AD_data[j]=AD_data[j+1];AD_data[j+1]=temp;}//找出最大的數(shù),

                    for(j=0;j<=3;++j)
                      if(AD_data[j]<AD_data[j+1])
                         {temp=AD_data[j];AD_data[j]=AD_data[j+1];AD_data[j+1]=temp;} //找出最小數(shù)

                            ADC=((AD_data[0]+AD_data[1]+AD_data[2])/3)/213.20008328128253175098896523006*1000;//中間數(shù)作平均
        
                                 qian=ADC/1000;
                                  bai=ADC%1000/100;            
                                   shi=ADC%100/10;            
                                     ge=ADC%10;               
}
回復

使用道具 舉報

板凳
ID:159270 發(fā)表于 2017-1-5 14:26 | 只看該作者
網(wǎng)上下的,編譯不了
回復

使用道具 舉報

地板
ID:160143 發(fā)表于 2017-1-5 15:27 來自手機 | 只看該作者
幫忙頂,,,,,,,,
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区在线观看免费 | 久久成人国产 | 久久精品免费观看 | 第四色狠狠 | 久热精品在线观看视频 | 精品一区欧美 | 色吧久久 | 91亚洲精品久久久电影 | 福利视频一区二区三区 | 国产成人自拍一区 | 精品二区 | 日韩成人在线播放 | 日韩av在线一区二区三区 | 日韩欧美在线播放 | 亚洲午夜在线 | www.com久久久| av永久 | 成人h视频在线 | 日日噜噜噜夜夜爽爽狠狠视频, | 精品一区二区不卡 | 国产精品久久久久久久久免费樱桃 | 青春草在线 | 久久久久亚洲 | 日韩手机在线看片 | 欧美在线观看网站 | 免费一区 | 电影午夜精品一区二区三区 | 日韩视频在线免费观看 | 欧美日韩午夜精品 | 国产精品久久精品 | 毛片黄片 | 国产一二三区免费视频 | 欧美一区2区三区4区公司 | 久久久久成人精品 | 欧美一区二区大片 | 三级免费毛片 | 亚洲一区二区免费视频 | 久久se精品一区精品二区 | 精品国产91 | 久久久久国产精品午夜一区 | 精品欧美一区二区在线观看视频 |