久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
G2口袋板MSP430G2553 slope adc源碼
[打印本頁]
作者:
zxuan0905
時(shí)間:
2018-4-7 13:45
標(biāo)題:
G2口袋板MSP430G2553 slope adc源碼
利用G2口袋板,改變電位器阻值,使用adc測量阻值,再使用LCD和led顯示
單片機(jī)源程序如下:
/*警告:由于G2 LaunchPad上的LED2使用了P1.6(I2C引腳),所以所有涉及到I2C的實(shí)驗(yàn)都必須把P1.6跳線拔除,包含本例程!
* main.c
*/
#include"MSP430G2553.h"
#include "Slope.h"
#include "TCA6416A.h"
#include "HT1621.h"
#include "LCD_128.h"
unsigned char Key=0; //輪盤電位器的電阻等效按鍵值
//-----待測“傳感器電阻”的分檔值,實(shí)際接入了5k定值電阻+10k輪盤電位器-----
const unsigned char R_Class[8]={55,67,82,97,113,128,138,144}; //單位為百歐
void WDT_OnTime();
void Slope_R_Dect(); //測得待測電阻后的事件處理函數(shù)
void TCA6416A_LED(unsigned char num); //LED燈柱顯示函數(shù)
void Display_SLOPE();
void Display_RSENS(unsigned char Rsens);
void main(void) {
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1 = CALBC1_16MHZ; /* Set DCO to16MHz */
DCOCTL = CALDCO_16MHZ;
__delay_cycles(100000); //等待電壓穩(wěn)定
TCA6416A_Init();
Slope_Measure_Init();
HT1621_init();
LCD_Clear();
Display_SLOPE();
HT1621_Reflash(LCD_Buffer);
//-----設(shè)定WDT為16ms定時(shí)中斷-----
WDTCTL=WDT_ADLY_16;
//-----WDT中斷使能-----
IE1|=WDTIE;
_enable_interrupts();
while(1);
}
/******************************************************************************************************
* 名 稱:WDT_ISR(void)
* 功 能:WDT定時(shí)中斷子函數(shù)
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明:直接調(diào)用事件處理函數(shù)即可
* 范 例:無
******************************************************************************************************/
#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR(void)
{
IE1&=~WDTIE;
WDT_OnTime();
IE1|=WDTIE;
}
/******************************************************************************************************
* 名 稱:WDT_OnTime()
* 功 能:WDT定時(shí)中斷的事件處理函數(shù)
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明:主要工作都在事件處理函數(shù)中體現(xiàn)
* 范 例:無
******************************************************************************************************/
void WDT_OnTime()
{
static unsigned char Charge_Ready=0; //充滿電標(biāo)志位
static unsigned char REF_Mreasure_Ready=0; //等于8表明參考電阻已測完
static unsigned long R_REF_Sum=0; //暫存參考電阻的累加值
if(Charge_Ready==0) //未充滿電
{
Slope_Port_Charge(); //充電
Slope_R_Dect(); //執(zhí)行顯示LED的任務(wù)
Charge_Ready=1; //充滿電標(biāo)志
}
else
{
//-----測量8次參考電阻值-----
if(REF_Mreasure_Ready<8) // 判斷是否繼續(xù)測量參考電阻值
{
Slope_Measure_REF(); //測參考電阻值
R_REF_Sum=R_REF_Sum+R_REF; //累加電阻值
if(REF_Mreasure_Ready==7) R_REF=R_REF_Sum>>3; //測量完畢求出參考電阻的平均值
REF_Mreasure_Ready++; //測量次數(shù)累加
}
//-----得到參考電阻值后,開始不停的測量傳感器電阻值-----
else
Slope_Measure_SENS(); //測完參考電阻才測傳感器電阻
Charge_Ready=0; //測完一次,又該充電了
}
}
/******************************************************************************************************
* 名 稱:Slope_R_Dect()
* 功 能:對傳感器電阻判斷檔位,調(diào)用LED顯示程序
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明:主要工作都在事件處理函數(shù)中體現(xiàn)
* 范 例:無
******************************************************************************************************/
void Slope_R_Dect()
{
static unsigned int Rsens=0;
unsigned char Key_Last=0; //用于判斷是否數(shù)據(jù)有更新
Key_Last=Key;
//-----通過10k參考電阻,計(jì)算電阻絕對值,單位百歐-----
Rsens=(((unsigned long int)100)*(unsigned long int)R_SENS)/R_REF;
//-----傳感器電阻分檔判斷,5k至15k之間,分8檔-----
if(Rsens<=R_Class[0]) Key=0;
else if (Rsens<=R_Class[1]) Key=1;
else if (Rsens<=R_Class[2]) Key=2;
else if (Rsens<=R_Class[3]) Key=3;
else if (Rsens<=R_Class[4]) Key=4;
else if (Rsens<=R_Class[5]) Key=5;
else if (Rsens<=R_Class[6]) Key=6;
else if(Rsens<=R_Class[7]) Key=7;
else Key=8;
//-----調(diào)用一系列顯示任務(wù)-----
Display_RSENS(Rsens); //顯示實(shí)際電阻值
if(!(Key==Key_Last)) //顯示電阻分檔值
{
LCD_DisplayDigit(LCD_DIGIT_CLEAR ,6);
LCD_DisplayDigit(Key,6);
HT1621_Reflash_Digit(6);
}
TCA6416A_LED(Key); //LED燈柱顯示
}
/******************************************************************************************************
* 名 稱:TCA6416A_LED()
* 功 能:根據(jù)傳感器電阻值,實(shí)現(xiàn)LED燈柱效果
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明:需要調(diào)用I2C和TCA6416控制LED
* 范 例:無
******************************************************************************************************/
void TCA6416A_LED(unsigned char num)
{
unsigned char i = 0;
for(i=0;i<8;i++)
{
if(i<num) // 判斷當(dāng)前需要點(diǎn)亮幾盞燈
PinOUT(i,0); //根據(jù)LED接法,IO低電平為點(diǎn)亮LED
else
PinOUT(i,1); //根據(jù)LED接法,IO高電平為熄滅LED
}
}
/******************************************************************************************************
* 名 稱:Display_SLOPE()
* 功 能:在LED上顯示固定不變的內(nèi)容
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明:包括顯示SLOPE,2個(gè)小數(shù)點(diǎn),logo,kΩ單位。
* 范 例:無
******************************************************************************************************/
void Display_SLOPE()
{
//-----顯示S-----
LCD_DisplayDigit(5,1);
//-----顯示L-----
LCD_DisplayDigit(0,2);
LCD_ClearSeg(_LCD_2A);
LCD_ClearSeg(_LCD_2B);
LCD_ClearSeg(_LCD_2C);
//-----顯示O-----
LCD_DisplayDigit(0,3);
//-----顯示P-----
LCD_DisplayDigit(8,4);
LCD_ClearSeg(_LCD_4C);
LCD_ClearSeg(_LCD_4D);
//-----顯示E-----
LCD_DisplayDigit(8,5);
LCD_ClearSeg(_LCD_5B);
LCD_ClearSeg(_LCD_5C);
//-----顯示小數(shù)點(diǎn)-----
LCD_DisplaySeg(_LCD_DOT4);
LCD_DisplaySeg(_LCD_DOT6);
//-----顯示logo-----
LCD_DisplaySeg(_LCD_TI_logo);
LCD_DisplaySeg(_LCD_QDU_logo);
//-----顯示kΩ-----
LCD_DisplaySeg(_LCD_k_OHOM);
LCD_DisplaySeg(_LCD_OHOM);
}
/******************************************************************************************************
* 名 稱:Display_RSENS()
* 功 能:在LED的小8字段上顯示實(shí)測傳感器電阻值
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明:哪位內(nèi)容有改變才更新該位的顯存。
* 范 例:無
******************************************************************************************************/
void Display_RSENS(unsigned char Rsens)
{
unsigned char i=0;
static unsigned char Digit[3]={0};
unsigned char Digit_Past[3]={0}; //用于對比數(shù)值是否有改變
for(i=0;i<3;i++){
Digit_Past[i]=Digit[i];
}
//-----拆分?jǐn)?shù)字-----
Digit[2]=Rsens/100;
Digit[1]=(Rsens%100)/10;
Digit[0]=Rsens%10;
//-----判別數(shù)位的改變,并更新該位顯存-----
for(i=0;i<3;i++)
{
if(!(Digit[i]==Digit_Past[i])) //如果有變化
{
LCD_DisplayDigit(LCD_DIGIT_CLEAR ,i+8); //清除該8字段
LCD_DisplayDigit(Digit[i],i+8); //寫顯存映射
HT1621_Reflash_Digit(i+8); //僅更新該8字段的顯存
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
17_Slope_ADC.rar
(93.4 KB, 下載次數(shù): 21)
2018-4-7 13:44 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
一区二区在线不卡
|
北条麻妃99精品青青久久主播
|
波多野结衣在线观看一区二区三区
|
欧美做暖暖视频
|
91在线免费视频
|
婷婷综合
|
免费一级片
|
久久丝袜视频
|
久草在线
|
可以免费观看的av
|
色秀网站
|
国产在线观看一区
|
91在线第一页
|
欧美日韩第一页
|
日本福利一区
|
精品婷婷
|
在线免费中文字幕
|
在线观看视频91
|
久久久国产一区二区三区
|
欧美成人在线影院
|
国产精品99久久久久久www
|
国产成人在线观看免费
|
成人精品在线视频
|
久久99精品视频
|
日韩久久精品电影
|
国产精品毛片
|
秋霞av国产精品一区
|
免费黄网站在线观看
|
久久不卡
|
日韩欧美视频
|
久久大陆
|
激情六月丁香婷婷
|
免费一区
|
精品国产乱码一区二区三区a
|
亚洲视频不卡
|
特级做a爰片毛片免费看108
|
欧美一区二区三区在线视频
|
91黄色片免费看
|
日产精品久久久一区二区福利
|
久久久www成人免费精品张筱雨
|
成人精品鲁一区一区二区
|