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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4591|回復: 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資料見上一條帖子
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色网址大全在线观看 | 亚洲国产精品精华素 | 台湾佬伊人| 在线三级网址 | 日韩精品免费一区二区在线观看 | 99精品国产一区二区青青牛奶 | 久久久久久天堂 | 久久久这里只有17精品 | 一级毛片视频 | 99精品欧美一区二区三区 | www国产成人免费观看视频,深夜成人网 | 久久亚洲春色中文字幕久久久 | 欧美成视频 | 欧美福利在线 | 亚洲精品1区 | 一区二区三区视频在线观看 | 免费a网站 | 成人亚洲精品久久久久软件 | 中文字幕日韩欧美一区二区三区 | 国产精品久久久久无码av | 国产精品毛片一区二区三区 | 成人性生交大免费 | 久久精品久久久 | 一区二区三区在线播放 | 久久日韩精品一区二区三区 | 免费观看一级视频 | 日本高清视频在线播放 | 欧美成人性生活 | 欧美一区二区三区视频在线观看 | 国产精品乱码一区二区三区 | 黄色大片在线视频 | 日韩免费高清视频 | 国产一区中文 | 免费观看日韩精品 | 国产精品一区久久久 | 成人免费观看网站 | 九九国产| 亚洲精品日日夜夜 | 很很干很很日 | 在线观看第一区 | 伊人二区 |