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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3723|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

微弱信號(hào)處理裝置的軟件部分:ad轉(zhuǎn)換和lcd顯示(液晶型號(hào)12864)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:244551 發(fā)表于 2017-10-31 14:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <msp430f5529.h>
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

/*12864應(yīng)用指令*/
#define CLEAR_SCREEN        0x01        //清屏指令:清屏且AC值為00H
#define AC_INIT        0x02      //將AC設(shè)置為00H。且游標(biāo)移到原點(diǎn)位置
#define CURSE_ADD      0x06     //設(shè)定游標(biāo)移到方向及圖像整體移動(dòng)方向(默認(rèn)游標(biāo)右移,圖像整體不動(dòng))
#define FUN_MODE        0x30               //工作模式:8位基本指令集
#define DISPLAY_ON       0x0c      //顯示開(kāi),顯示游標(biāo),且游標(biāo)位置反白
#define DISPLAY_OFF      0x08                    //顯示關(guān)
#define CURSE_DIR       0x14                   //游標(biāo)向右移動(dòng):AC=AC+1
#define SET_CG_AC        0x40                //設(shè)置AC,范圍為:00H~3FH
#define SET_DD_AC        0x80

#define RS_CLR        P2OUT &= ~BIT7       //RS置低
#define RS_SET        P2OUT |= BIT7         //RS置高

#define RW_CLR        P2OUT &= ~BIT6       //RW置低
#define RW_SET        P2OUT |= BIT6         //RW置高

#define EN_CLR        P2OUT &= ~BIT5        //E置低
#define EN_SET        P2OUT |= BIT5         //E置高
#define DataPort      P3OUT                 //P3口為數(shù)據(jù)口
#define   Num_of_Results   8

unsigned char tab[]={'0','1','2','3','4','5','6','7','8','9','.','v'};
//float inx;
volatile unsigned int results[Num_of_Results];


     //*************************************************************************
     //                    系統(tǒng)時(shí)鐘初始化
     //*************************************************************************
     void Clock_Init()
     {
       UCSCTL1 = DCORSEL_2;                          //  設(shè)置DCO范圍
       UCSCTL3 |= SELREF_2;                  //  選擇FLL參考源自REFO
       UCSCTL4 = SELM_3 + SELA_2 + SELS_4;              //  配置 MCLK = DCOC,SMCLK =DCODIV,ACLK=REFO
       while (SFRIFG1 & OFIFG)      //  清除 OFIFG,and  XT1OFFG ,DCOFFG
         {
           UCSCTL7 &= ~(  XT1LFOFFG + DCOFFG);
           SFRIFG1 &= ~OFIFG;
         }
     }

     //*************************************************************************
     //              MSP430內(nèi)部看門狗初始化
     //*************************************************************************
     void WDT_Init()
     {
        WDTCTL = WDTPW + WDTHOLD;       //關(guān)閉看門狗
     }

     //*************************************************************************
     //                        初始化IO口子程序
     //*************************************************************************
     void Port_init()
     {

             P3SEL = 0x00;
             P3DIR = 0xFF;
             P2SEL = 0x00;
             P2DIR|= BIT5 + BIT6 + BIT7;
     }



     //***********************************************************************
     //        顯示屏命令寫入函數(shù)
     //***********************************************************************


     void LCD_write_com(unsigned char com)
     {
             RS_CLR;
             RW_CLR;
             EN_SET;
             DataPort = com;
             delay_ms(5);
             EN_CLR;
     }
     //***********************************************************************
     //        顯示屏數(shù)據(jù)寫入函數(shù)
     //***********************************************************************

     void LCD_write_data(unsigned char data)
     {
             RS_SET;
             RW_CLR;
             EN_CLR;
             DataPort = data;
             EN_SET;
            // delay_ms(5);
             EN_CLR;
     }
     //***********************************************************************
     //        顯示屏清空顯示
     //***********************************************************************

     void LCD_clear(void)
     {
             LCD_write_com(0x01);
             //delay_ms(5);
     }

     //***********************************************************************
     //函數(shù)名稱:DisplayCgrom(uchar hz)顯示CGROM里的漢字
     //***********************************************************************
     void DisplayCgrom(uchar addr,int b)
     {
                     int i;
                     int a[7];
                     a[0]=b/10000;
                     a[1]=10;
                     a[2]=(b/1000)%10;
                     a[3]=(b/100)%10;
                     a[4]=(b/10)%10;
                     a[5]=(b/1)%10;
                     a[6]=11;
                     LCD_write_com(addr);
                delay_ms(5);
                     for(i=0;i<=6;i++)
                     {
                             LCD_write_data(tab[a[i]]);
                        // delay_ms(5);
                     }

     }
     //****************************************************************
     //函數(shù)名稱:Display()顯示測(cè)試結(jié)果
     //****************************************************************

     //***********************************************************************
     //        顯示屏初始化函數(shù)
     //***********************************************************************

     void LCD_init(void)
     {
             LCD_write_com(FUN_MODE);                  //顯示模式設(shè)置
             delay_ms(5);
             LCD_write_com(FUN_MODE);                  //顯示模式設(shè)置
             delay_ms(5);
             LCD_write_com(DISPLAY_ON);                   //顯示開(kāi)
             delay_ms(5);
             LCD_write_com(CLEAR_SCREEN);                     //清屏
             delay_ms(5);
     }



int main(void)
{
         WDT_Init();//看門狗設(shè)置
         P6SEL |= 0x01;                            // Enable A/D channel A0
         ADC12CTL0 = ADC12ON+ADC12SHT0_8+ADC12MSC; // Turn on ADC12, set sampling time
                                                                                // set multiple sample conversion
         ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2;  // Use sampling timer, set mode
         ADC12IE = 0x01;                           // Enable ADC12IFG.0
         ADC12CTL0 |= ADC12ENC;                    // Enable conversions
         ADC12CTL0 |= ADC12SC;                     // Start conversion


          __bis_SR_register(LPM4_bits + GIE);          // Enter LPM4, Enable interrupts
          __no_operation();                         // For debugger

}


#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
  static unsigned char index = 0;
  unsigned char i,j;
  int a[8];
  int t,ave=0;
  int voltage;
  switch(__even_in_range(ADC12IV,34))
  {
  case  0: break;                         // Vector  0:  No interrupt
  case  2: break;                         // Vector  2:  ADC overflow
  case  4: break;                    // Vector  4:  ADC timing overflow
  case  6:                                  // Vector  6:  ADC12IFG0
    results[index] = ADC12MEM0;             // Move results
    index++;                         // Increment results index, modulo; Set Breakpoint1 here

    if (index == 8)
    {
      for(i=0;i<index-1;i++)
         {for(j=i+1;j<index;j++)
               {
                          if(a[i]>a[j])
                          {
                                  t=a[i];
                                  a[i]=a[j];
                                  a[j]=t;
                          }
               }
             }

      for(i=0;i<index-4;i++)
      {
              ave=ave+results[i];
      }
      ave=ave/4;
      voltage=(ave)*33000/4095;
      Clock_Init();                                 //系統(tǒng)時(shí)鐘設(shè)置
      Port_init();                         //系統(tǒng)初始化,設(shè)置IO口屬性
      delay_ms(100);                                //延時(shí)100ms
      LCD_init();                               //液晶參數(shù)初始化設(shè)置
      LCD_clear();
      DisplayCgrom(0x80,voltage);                         //顯示漢字
      index = 0;
    }
  case  8: break;                           // Vector  8:  ADC12IFG1
  case 10: break;                           // Vector 10:  ADC12IFG2
  case 12: break;                           // Vector 12:  ADC12IFG3
  case 14: break;                           // Vector 14:  ADC12IFG4
  case 16: break;                           // Vector 16:  ADC12IFG5
  case 18: break;                           // Vector 18:  ADC12IFG6
  case 20: break;                           // Vector 20:  ADC12IFG7
  case 22: break;                           // Vector 22:  ADC12IFG8
  case 24: break;                           // Vector 24:  ADC12IFG9
  case 26: break;                           // Vector 26:  ADC12IFG10
  case 28: break;                           // Vector 28:  ADC12IFG11
  case 30: break;                           // Vector 30:  ADC12IFG12
  case 32: break;                           // Vector 32:  ADC12IFG13
  case 34: break;                           // Vector 34:  ADC12IFG14
  default: break;
  }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成在线人视频免费视频 | 美女拍拍拍网站 | 亚洲精品久久久久久久久久久久久 | 97视频久久 | 在线成人av | 青青激情网 | 黄色av网站在线观看 | 水蜜桃久久夜色精品一区 | 青青草社区| 欧美日韩亚洲视频 | 九九色综合| 午夜精品| 先锋影音资源网站 | 亚洲国产精品一区二区久久 | 99热热精品 | 日韩免费视频一区二区 | 在线黄色网 | 色一级片 | 久久国产一区二区 | 天堂一区二区三区 | 国产永久免费 | 免费中文字幕日韩欧美 | 欧美日韩亚洲一区二区 | 亚洲乱码国产乱码精品精的特点 | 午夜一区二区三区 | 欧美一区二区三区在线观看视频 | 有码一区 | 亚洲欧美在线一区 | 免费看黄色小视频 | 日韩成人在线观看 | 国产精品极品美女在线观看免费 | 日韩中文字幕一区二区 | 亚洲不卡在线观看 | 午夜国产一级 | 成人av免费| 国产免费观看视频 | 免费a在线| 日本一二三区在线观看 | 日韩一二区 | 中文字幕国产视频 | 日韩三级免费网站 |