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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4682|回復: 0
收起左側

基于MSP430F6638的ADC實驗(撥動電位器數碼管顯示對應電壓值)

[復制鏈接]
ID:234748 發表于 2017-9-21 21:29 | 顯示全部樓層 |閱讀模式
#include <msp430f6638.h>
#define LCD_d 0x01
#define LCD_e 0x02
#define LCD_g 0x04
#define LCD_f 0x08
#define LCD_dp 0x10
#define LCD_c 0x20
#define LCD_b 0x40
#define LCD_a 0x80
const char LCD_NUM[] = {
    LCD_a + LCD_b + LCD_c + LCD_d + LCD_e + LCD_f,       //0
    LCD_b + LCD_c,                               //1
    LCD_a + LCD_b + LCD_d + LCD_e + LCD_g,             //2
    LCD_a + LCD_b + LCD_c + LCD_d + LCD_g,             //3
    LCD_b + LCD_c + LCD_f + LCD_g,                   //4
    LCD_a + LCD_c + LCD_d + LCD_f + LCD_g,             //5
    LCD_a + LCD_c + LCD_d + LCD_e + LCD_f + LCD_g,       //6
    LCD_a + LCD_b + LCD_c,                         //7
    LCD_a + LCD_b + LCD_c + LCD_d + LCD_e + LCD_f + LCD_g, //8
    LCD_a + LCD_b + LCD_c + LCD_d + LCD_f + LCD_g        //9
};
void Init_TS3A5017DR()
{
    // Configure TS3A5017DR IN1 and IN2
    P1DIR |= BIT6 + BIT7; // P1.7 : IN1; P1.6 : IN2  set as output
    P1OUT &= ~BIT7; // IN1 = 0
    P1OUT |= BIT6; // IN2 = 1
}
void Init_LCD()
{
    LCDBCTL0 = LCDDIV0 + LCDPRE0 + LCDMX1 + LCDSSEL + LCDMX1 + LCD4MUX;
    LCDBPCTL0 = LCDS0 + LCDS1 + LCDS2 + LCDS3 + LCDS4 + LCDS5 + LCDS6 + LCDS7 + LCDS8 + LCDS9 + LCDS10 + LCDS11;
    P5SEL = 0xFC; // use LCD driver
}
void BackLightEnable()
{
    P8DIR |= BIT0;
    P8OUT |= BIT0;
}
void LCD_Set(const char is_launched)
{
    if (is_launched == 1)
    {
        LCDBCTL0 |= LCDON;
    }
    else if (is_launched == 0)
    {
        LCDBCTL0 &= ~LCDON;
    }
}
void LCD_Clear()
{
    unsigned char index;
    for (index = 0; index < 12; ++index)
    {
        LCDMEM[index] = 0;
    }
}
int his[8];
int temp;
void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;            //關閉看門狗
    P3DIR |= BIT4+BIT5+BIT2; //設置MSP430端口和TM1638相連的引腳
    ADC12CTL0 |= ADC12ON + ADC12SHT0_2 + ADC12REFON; //打開ADC,設置采樣時間,打開內部參考電壓發生器
    ADC12CTL1 |= ADC12SHP; //選擇SAMPON來自采樣定時器,單通道單次采樣模式(默認)
    ADC12MCTL0 = ADC12SREF_0 + ADC12INCH_6;
    ADC12IE = BIT0; //開中斷使能
    ADC12CTL0 |= ADC12ENC; //ADC使能
    Init_TS3A5017DR();
    Init_LCD();
    LCD_Set(1);
    LCD_Clear();
    BackLightEnable();
    while(1)
    {
        ADC12CTL0 |= ADC12SC;   //啟動轉換
        _BIS_SR(CPUOFF + GIE);    //CPU休眠,開啟總中斷,等待轉換完成
        volatile int i;
        for (i = 7; i > 0; --i)
            his[i] = his[i - 1];
        his[0] = temp;
        double sum = 0;
        for (i = 0; i < 8; ++i)
            sum += his[i];
        sum = sum / 8 * 15000 / 4095;
        unsigned int result = sum;
        LCDMEM[4] = LCD_NUM[result % 10];
        LCDMEM[3] = LCD_NUM[result / 10 % 10];
        LCDMEM[2] = LCD_NUM[result / 100 % 10];
        LCDMEM[1] = LCD_NUM[result / 1000 % 10];
        LCDMEM[0] = LCD_NUM[result / 10000 % 10];
    }
}
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
{
    temp = ADC12MEM0;
    _BIC_SR_IRQ(CPUOFF);   //退出低功耗模式,相當于LPM0_EXIT;
}

//TM1638資料見上一條帖子
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 婷婷国产一区二区三区 | 亚州无限乱码 | 欧美午夜在线 | 黄色电影在线免费观看 | 日韩国产中文字幕 | 中文字幕日韩一区 | 欧美日韩18 | 亚洲视频欧美视频 | 91精品国产乱码久久久久久久久 | 美国一级毛片a | 狠狠操狠狠色 | 在线中文字幕亚洲 | 亚洲国产一区二区在线 | 久久国产精品精品国产色婷婷 | 一区二区三区国产在线观看 | 欧美国产一区二区 | 欧美视频一区二区三区 | 91在线影院 | 不卡一区 | 日韩中文字幕在线观看 | 麻豆久久久久 | 午夜免费电影 | 国产综合欧美 | a级片在线观看 | 视频在线h| 日本精品视频 | 免费看啪啪网站 | 国产精品视频一区二区三区四蜜臂 | 一区二区在线 | 天天综合网91| 日韩成人在线网站 | 一级aaaaaa毛片免费同男同女 | 欧美日韩不卡合集视频 | 免费看av大片| 韩日精品视频 | 在线播放一区二区三区 | 日日爱视频 | 高清久久久 | 色www精品视频在线观看 | 欧美综合在线观看 | 国产一区不卡在线观看 |