❶ 如何在TI官網上找到MSP430的程序常式
以下是單片機實踐團為您解答:
1、以MSP430F2132為例簡單說明如下:
1)進入ti官網:http://www.ti.com.cn/tihome/cn/docs/homepage.tsp
2)所有的搜索欄填入:msp430f2132點擊goon
3)點擊第一個搜索結果(一般第一個就可以,可以嘗試看看)。
4)點擊右邊紅色按鈕「軟體和工具」在培訓內容裡面找到「MSP430F21x2CodeExamples」
5)點擊下載即可。
6)請參考我插入的圖片。
2、其他的型號都是如此操作,注意一般是一個小類為一個集合,f2132屬於f21x2類的。
3、平時多看看官網,注意細節問題,嘗試自己找,有一顆追求知識、渴望知識的心態固然很重要。
4、樓上有些偏激,不過也是實話,希望您再接再勵,通過自己的努力,完善自己,這些小問題,應該自己有能力解決。
5、常在線,不明白的hi我,熱心的團長為您解答!
❷ 我看到大俠有類似《病房點滴輸液監控系統的設計》論文
你要哪一篇?
1. 基於CC1100的無線輸液監控系統的設計與實現
馬黎明 科技信息 2010年 第11期
主要介紹了基於射頻技術的無線輸液監控系統,由護士站的監控伺服器和病房中的多台輸液採集器組成。採集器通過紅外技術對液滴信號進行採集並上傳至伺服器,當輸液結束或出現異常時,採集器和伺服器兩者同時報警,可達到對輸液過程的實時監控的目的 。
參考文獻 - 相似文獻 - 下載指數:
2. 智能化的液體點滴控制裝置
韓秀莉 姜學思 大眾科技 2010年 第02期
文章針對目前現代醫院液體點滴自動化裝置的各種缺陷和不足,設計一種智能輸液監控系統,採用AT89C58單片機作為主從機的核心,利用MAX232進行遠程數據信息的傳輸,構成了一個分布式的主從局域控制網,採用光電感測原理實現對液體點滴速度的測量和檢測,用步進電動機拖動控制儲液瓶的高度,實現點滴速度的自動調節,並把液體點滴的速...
參考文獻 - 相似文獻 - 下載指數:
3. 基於ZigBee的嵌入式醫療輸液監控系統的研究
王茂金 南昌大學 發表時間:2009-12-25
3.4.3輸液監控系統軟體設計方案輸液監控系統軟體部分包括兩大部分:一是輸液監控系統節點軟體;二是輸液監控中心軟體。輸液監控系統節點軟體必須實現以下功能:協調器節點能夠建立網路,終端節點加入或離開網路,協調器和終端節點間相互通信,終端設備...
參考文獻 - 相似文獻 - 下載指數:
4. 一種面向醫院的輸液監控系統的設計
江勇 段文群 醫療裝備 2009年 第12期
王紫婷,王瑞峰,嚴天蜂.智能液體點滴速度監控儀.自動化與儀器儀表,2004,(5).李寶連,王劍鋼.基於RS485介面的醫院輸液監控系統.山西電子技術,2004,(5).
參考文獻 - 相似文獻 - 下載指數:
5. 基於AT89S52的輸液監控系統的設計與實現
單巍 合肥工業大學 發表時間:2009-12-01
分布式輸液監控系統的研究與實現.太原:太原理工大學,200729~3★Richard Swim.Deployment of an Enterprise Wireless Infusion Pump Management System, Biomedical Instrumentation and Technol...
參考文獻 - 相似文獻 - 下載指數:
6. 一種面向醫院的輸液監控系統的設計
江勇 段文群 感測器世界 2009年 第11期
介紹了一種由AT89C51單片機構成的醫院輸液監控系統。本系統包括上位機(PC機)和下位機(AT89C51單片機)。本文對系統如何實現自動檢測、自動報警等功能做了詳細的分析與研究,利用光電感測器採集點滴的有無,用AT89C51作為中央處理器進行信號分析與處理,用RS—485實現上位機(PC機)和下位機(單片機)的通信,...
參考文獻 - 相似文獻 - 下載指數:
7. 靜脈輸液監控系統的研製與應用
王穎 刁惠民 季兵 護理學雜志 2009年 第20期
2靜脈輸液監控系統的組成與功能該靜脈輸液監控系統由主機和監控中心兩部分組成。見示意圖1、圖2。2.1主機主機長148cm、寬97cm、厚42cm,外殼由ABS材料注塑而成。在主機上可設定相關信息,如床位號(1~99)、輸液總量(10~5000ml)、輸液速度(8~180gtt/min)、...
參考文獻 - 相似文獻 - 下載指數:
8. 基於M430/OS的超低功耗輸液監控系統的研究與設計
蘇英 陳春華 科技資訊 2009年 第28期
山東濱州256600本文介紹了一種超低功耗輸液監控系統的設計與實現方法。該系統基於MSP430F1232單片機和M430/OS嵌入式實時操作系統,採用上下位機模式,實現了重力輸液的本地及遠程監控和管理,且具有檢測精度高,操作方便、功耗低、體積小、程序設計模塊化、可擴展...
參考文獻 - 相似文獻 - 下載指數:
9. 基於光電技術智能輸液監控系統設計
陳宇 王璽 核電子學與探測技術 2009年 第05期
部分醫院採用以病人求救線作為CAN匯流排實現分布式輸液監控系統設計取得了一定的成效,但絕大多數中小醫院特別是社區醫院缺少此類設備。因此,本文針對這些問題,基於光電技術、調制解調技術、單片機技術、無線網路傳輸技術和模糊控制技術,研究設計了一套分布式智能...
參考文獻 - 相似文獻 - 下載指數:
10. 一種低功耗無人值守輸液監控系統的研製
宋茹 鄭玉山 張麗萍 徐曉宏 陳勇華 遲歸兵 ... 醫療衛生裝備 2009年 第09期
4護士站輸液監控系統的設計護士站上位機輸液監控系統由Visual C++編寫完成,通過調用現有的串口控制項,對下位機的監控結果進行顯示,在緊急情況下予以報警。此系統可同時對百台輸液監控器的結果進行監視,方便了護士站的管理,提高了工作效率,提高了患者輸液的
❸ MSP430程序解釋
看你這程序是Timer_A控制的Uart程序,我沒弄過,沒有發言權。
不過下面是我編的一個串口中斷的接收發送程序(不是用定時器模擬的),你可以看一下。
/******************************************************
程序功能:接收PC機十六進制數據後回傳至PC機
數據格式:十六進制
幀頭:FD
幀尾: FE
*******************************************************/
#include <msp430x14x.h>
unsigned char RecBuf[255]; //接收數據緩存
unsigned char *SDat; //指向要發送的數據
unsigned char Rindex; //接收數據計數
unsigned char Tindex; //發送數據計數
unsigned char SendLen; //發送數據長度
/*************************************************
函數名稱:ConfigUart0
功 能:配置UART0,使用SMCLK,N.8.1, 9600
無校驗,8個數據位,1個停止位,波特率9600
參 數:無
返回值 :無
**************************************************/
void ConfigUart0()
{
P3SEL |= 0x30; // 選擇P3.4和P3.5做UART通信埠
ME1 |= UTXE0 + URXE0; // 使能USART0的發送和接受
UCTL0 |= CHAR; // 選擇8位字元
UTCTL0 |= SSEL1; // UCLK = SMCLK
UBR00 = 0xD0; // 波特率9600
UBR10 = 0x00; //
UMCTL0 = 0x40; // Molation
UCTL0 &= ~SWRST; // 初始化UART狀態機
IE1 |= URXIE0 + UTXIE0; // 使能USART0的收發中斷
}
/********************主函數********************/
void main(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // 關閉看門狗
BCSCTL1 &= ~XT2OFF; //使TX2有效,TX2上電默認是關閉的
do
{
IFG1 &= ~OFIFG; //清除振盪器失效標志
for(i=0xff;i>0;i--); //延時,待穩定
}
while((IFG1 & OFIFG)!=0); //若振盪器失效標志有效
BCSCTL2 |= SELM1; //使MCLK=XT2
BCSCTL2 |= SELS+DIVS1; //SMCLK=XT2,4分頻,即2MHZ
BoardConfig(0xb8); // 關閉數碼管、流水燈和電平轉換
ConfigUart0(); //配置UART0
_EINT(); //打開全局中斷
while(1)
{
LPM1;
}
}
/*******************************************
函數名稱:UART0_RXISR
功 能:UART0的接收中斷服務函數,在這里喚醒
CPU,使它退出低功耗模式
參 數:無
返回值 :無
********************************************/
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
RecBuf[Rindex++] = RXBUF0;
if(RecBuf[Rindex-1]==0xfe) //接收完畢
{
if(RecBuf[0]==0xfd) //幀頭正確
{
LPM1_EXIT;
SDat = RecBuf;
IFG1 |= UTXIFG0; // 設置中斷標志,進入發送中斷程序
SendLen = Rindex;
Rindex=0;
}
}
}
/*******************************************
函數名稱:UART0_TXISR
功 能:UART0的發送中斷服務函數
參 數:無
返回值 :無
********************************************/
#pragma vector = UART0TX_VECTOR
__interrupt void UART0_TXISR(void)
{
if(Tindex < SendLen)
{
TXBUF0 = *(SDat+Tindex);
Tindex++;
}
else
{
Tindex=0;
//LPM1;
}
}
❹ MSP430單片機用C語言編寫程序需要用什麼軟體
MSP430用IAREmbeddedWorkbench軟體編寫程序和編譯代碼。
MSP430單片機稱之為混合信號處理器,是由於其針對實際應用需求,將多個不同功能的模擬電路、數字電路模塊和微處理器集成在一個晶元上,以提供「單片機」解決方案。該系列單片機多應用於需要電池供電的攜帶型儀器儀表中。
(4)msp430f1232程序擴展閱讀:
MSP430系列部分產品具有快閃記憶體,在系統設計、開發、調試和實際應用中具有明顯優勢。TI公司引入了具有快閃記憶體和JTAG邊界掃描技術的廉價開發工具MSP-Fet430x110,並將國際先進的JTAG技術和Flash在線編程技術引入到MSP430中。
這種將Flash技術與FET開發工具相結合,具有方便、便宜、實用等優點,為用戶提供了更理想的原型開發方式。
❺ 求助,關於msp430編寫一個流水燈程序
|程序如下,專
/*
* main.c
*/
int main(void) {
WDTCTL = WDTPW |屬 WDTHOLD; // Stop watchdog timer
PM5CTL0 &= ~LOCKLPM5;
P1SEL1=0x00;
P1SEL0=0x00;
P1DIR=0xFF;
while(1)
{
P1OUT|=BIT3;
__delay_cycles(8000000);
P1OUT&=BIT3;
__delay_cycles(8000000);
P1OUT|=BIT4;
__delay_cycles(8000000);
P1OUT&=BIT4;
__delay_cycles(8000000);
P1OUT|=BIT5;
__delay_cycles(8000000);
P1OUT&=BIT5;
__delay_cycles(8000000);
}
return 0;
}
❻ MSP430單片機兩位數碼管程序
硬體介紹:
這里所用到的硬體資源包括8個數碼管、和msp430單片機的兩個8位IO口(這里用的是P3和P5口,如有改變,可以通過宏定義更改)。
數碼管是8個共陰的數碼管,a-h 8段通過一個200Ω的電阻接到430單片機的P5口。共陰端是由單片機的P3口控制,單片機的一位IO通過一個三極體接到數碼管的共陰端,以完成位選。
單片機的P3口時數碼管的位選口,某位為高則選中;P5口時段選口;要數碼管顯示時,通過P3位選,選中某個數碼管亮,P5段選選擇8段(a-h)中的那些亮,從而控制某一位顯示數字或字元。
要同時顯示多個數碼管,就要動態掃描;動態掃描時,本程序選用的是由看門狗的中斷掃描顯示:每1.9ms顯示其中的一位,動態掃描顯示每一位,從而讓數碼管看起來是同時亮的。
程序實現:
數碼管顯示首先要有一個數碼管顯示的斷碼表(完成數字和字元到數碼管段值的表),程序中採用了《MSP430系列單片機系統工程設計與實踐》這本書推薦的方式實現的這個數碼表:先用宏定義定義每段對應的單片機要輸出的段值,然後再實現是個表,當硬體改變時,只需更改前面的每段的段值定義即可,改動的地方少了很多,代碼如下:
/*宏定義,數碼管a-h各段對應的比特,更換硬體只用改動以下8行*/
#define a 0x01 // AAAA
#define b 0x02 // F B
#define c 0x04 // F B
#define d 0x08 // GGGG
#define e 0x10 // E C
#define f 0x20 // E C
#define g 0x40 // DDDD HH
#define h 0x80 //小數點
/*用宏定義自動生成段碼表,很好的寫法,值得學習*/
/*更換硬體無需重寫段碼表*/
const char Tab[] = {
a + b + c + d + e + f, // Displays "0"
b + c, // Displays "1"
a + b + d + e + g, // Displays "2"
a + b + c + d + g, // Displays "3"
b + c + f + g, // Displays "4"
a + c + d + f +g, // Displays "5"
a + c + d + e + f + g, // Displays "6"
a + b + c, // Displays "7"
a + b + c + d + e + f + g, // Displays "8"
a + b + c + d + f + g, // Displays "9"
a + b + c + e + f + g, // Displays "A"
c + d + e + f + g, // Displays "B"
a + d + e + f, // Displays "C"
b + c + d + e + g, // Displays "D"
a + d + e + f + g, // Displays "E"
a + e + f + g, // Displays "F"
a + c + d + e + f, // Displays "G"
b + c + e + f + g, // Displays "H"
e + f, // Displays "I"
b + c + d + e, // Displays "J"
b + d + e + f + g, // Displays "K"
d + e + f, // Displays "L"
a + c + e + g, // Displays "M"
a + b + c + e + f, // Displays "N"
c + e + g, // Displays "n"
c + d + e + g, // Displays "o"
a + b + c + d + e + f, // Displays "O"
a + b + e + f + g, // Displays "P"
a + b + c + f + g, // Displays "Q"
e + g, // Displays "r"
a + c + d + f +g, // Displays "S"
d + e + f + g, // Displays "t"
a + e + f , // Displays "T"
b + c + d + e + f, // Displays "U"
c + d + e, // Displays "v"
b + d + f + g, // Displays "W"
b + c + d + f + g, // Displays "Y"
a + b + d + e + g, // Displays "Z"
g, // Displays "-"
h, // Displays "."
0 // Displays " "
};
#undef a
#undef b
#undef c
#undef d
#undef e
#undef f
#undef g
0-9的位置對應顯示0-9,之後的是A開始往後顯示,為了方便訪問這個表格,定義了AA等一系列的常量,方便訪問這個表。
A從10開始訪問這個表格,如果要顯示A只需這樣用Tab[AA],即可得到需要的段值,AA-空格的宏定義放在H文件里,方便其他文件訪問(當要調用顯示函數的時候需要AA等宏定義)。為什麼是AA而不是A呢?主要原因是單字母的有幾個已經在單片機430的頭文件里定義了,為了訪問的時候一致,就都用兩個字母的了。
為了動態掃描,這里定義了一個全局數組(數碼管的程序可以訪問)Nixie[8]在這個裡面的8個char對應8個數碼管要顯示的段值。初始值是8個數碼管都不顯示:
char Nixie[8] = "\0\0\0\0\0\0\0\0"; //初始狀態 不顯示
動態掃描時,函數每1.9ms(設的看門狗定時中斷)調用一次顯示函數,每次顯示一位(為了讓中斷佔用更少的時間,這樣中斷里只需賦值即可)。函數如下:
void Display()
{
static char i = 0; //記錄掃描顯示到哪位
CTRL_OUT = 1<<i;
DATA_OUT = Nixie[i];
i++;
if(i>7)
i = 0;
}
這個函數供中斷調用,i用來保存要顯示哪一位。CTRL_OUT 、DATA_OUT 是宏定義的位選和段選口。中斷程序如下:
#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR()
{
Display();
}
中斷只調用了一個函數,這樣很方便換其他中斷來定時。
中斷是必須初始設置的,還有IO口,要設為輸出方向 ,初始化函數完成數碼管用到的單片機資源的初始工作:
void NixiettubeInit()
{
WDTCTL = WDT_ADLY_1_9; //看門狗內部定時器模式16ms
IE1 |= WDTIE; //允許看門狗中斷
CTRL_DIR_OUT;
DATA_DIR_OUT;
}
首先,設置中斷並允許中斷;然後設置位選和段選所用的埠為輸出方向。CTRL_DIR_OUT; DATA_DIR_OUT; 和剛才用到的兩個OUT的宏定義如下:
#define DATA_DIR_OUT P5DIR|=0XFF
#define CTRL_DIR_OUT P3DIR|=0XFF
#define DATA_OUT P5OUT
#define CTRL_OUT P3OUT
這樣處理之後,要顯示數字就很簡單了:只需把要顯示的數字或字元的段碼值放入Nixie[8]數組對應的位置即可,如顯示韓輸入下:
void NixiettubeDisplayChar(char ch,char addr)
{
if(ch == DOT) //小數點,不需單獨佔一位
{
Nixie[addr] |= Tab[ch];
}
else
{
Nixie[addr] = Tab[ch];
}
}
如果是小數點,放入對應位置的h段即可,其他直接覆蓋。
插入字元函數:在最右端插入數字或字元.
void NixiettubeInsertChar(char ch)
{
if(ch == DOT) ////小數點,不需單獨佔一位
{
Nixie[0] |= Tab[ch];
return;
}
for(int i = 7;i > 0;i--)
Nixie[i] = Nixie[i - 1]; //已顯示字元左移一位
Nixie[0] = Tab[ch];
}
這個也是先判斷小數點,小數點直接放到h段,其他的,則要已顯示的左移再覆蓋最右一位,源程序的注釋很詳細,可具體才、可以下載附件的程序庫。
數碼管清除函數,這個函數把數碼管全部顯示去掉,即把緩存數組內每項都置為0:
void NixiettubeClear()
{
for(int i = 0;i < 8;i++)
Nixie[i] = Tab[SP]; //顯示空格
}
程序比較簡單,這里就不多解釋了。
數碼管的程序就這么多了,所有函數都列出來了。下面開始介紹printf的移植,具體過程不再詳細說了,詳細過程參考:MSP430程序庫<四>printf和scanf函數移植。這里主要介紹所需程序。
單片機printf使用需要用戶提供底層驅動-putchar函數,printf完成格式化等一系列活動後調用putchar輸出字元流。只要實現putchar,包含stdio.h文件,就可以使用printf函數。移植的數碼管的putchar函數如下:
#include <stdio.h>
#include "ctype.h" /*isdigit函數需要該頭文件*/
#include "Nixietube.h"
int putchar(int ch)
{
//'\f'表示走紙翻頁,相當於清除顯示
if(ch=='\n'||ch=='\r')
NixiettubeClear();
//數字和對應ASCII字母之間差0x30 '1'=0x31 '2'=0x32...
//isdigit也是C語言標准函數
if(isdigit(ch))
NixiettubeInsertChar(ch-0x30); //若字元是數字則顯示數字
else //否則,不是數字,是字母
{
switch(ch) //根據字母選擇程序分支
{
case 'A': case 'a': NixiettubeInsertChar(AA);break; //字元A
case 'B': case 'b': NixiettubeInsertChar(BB);break; //字元B
case 'C': case 'c': NixiettubeInsertChar(CC);break; //...
case 'D': case 'd': NixiettubeInsertChar(DD);break;
case 'E': case 'e': NixiettubeInsertChar(EE);break;
case 'F': case 'f': NixiettubeInsertChar(FF);break;
case 'G': case 'g': NixiettubeInsertChar(GG);break;
case 'H': case 'h': NixiettubeInsertChar(HH);break;
case 'I': case 'i': NixiettubeInsertChar(II);break;
case 'J': case 'j': NixiettubeInsertChar(JJ);break;
case 'K': case 'k': NixiettubeInsertChar(KK);break;
case 'L': case 'l': NixiettubeInsertChar(LL);break;
case 'M': case 'm': NixiettubeInsertChar(mm);break;
case 'N': NixiettubeInsertChar(NN);break;
case 'n': NixiettubeInsertChar(nn);break;
case 'O': NixiettubeInsertChar(OO);break;
case 'o': NixiettubeInsertChar(oo);break;
case 'P': case 'p': NixiettubeInsertChar(PP);break;
case 'Q': case 'q': NixiettubeInsertChar(QQ);break;
case 'R': case 'r': NixiettubeInsertChar(rr);break;
case 'S': case 's': NixiettubeInsertChar(SS);break;
case 'T': case 't': NixiettubeInsertChar(tt);break;
case 'U': case 'v': NixiettubeInsertChar(UU);break;
case 'V': case 'u': NixiettubeInsertChar(VV);break;
case 'W': case 'w': NixiettubeInsertChar(WW);break;
case 'Y': case 'y': NixiettubeInsertChar(YY);break; //...
case 'Z': case 'z': NixiettubeInsertChar(ZZ);break; //字元Z
case '-': NixiettubeInsertChar(NEG);break;//字元-
case '.': NixiettubeInsertChar(DOT);break;//小數點,直接顯示在右下角
case ' ': NixiettubeInsertChar(SP);break; //空格
default : NixiettubeInsertChar(SP);break;//顯示不出來的字母用空格替代
}
}
return(ch); //返回顯示的字元(putchar函數標准格式要求返回顯示字元)
}
頭文件必須包含stdio.h,這樣告訴編譯器printf調用時,用這里的putchar函數。然後判斷字元,分類進行顯示,不能顯示的空一格。
數碼管的程序就完成了,如果需要可以自己添加改寫函數,如:當和鍵盤共同使用時,如果鍵盤移植了scanf函數,並且支持退格;可以改寫函數-讓數碼管的putchar支持退格操作。或者用的是我的鍵盤程序,需要10多ms調用一次鍵盤處理函數,這樣可以和這個數碼管掃描公用一個中斷:
void Display()
{
static char i = 0; //記錄掃描顯示到哪位
CTRL_OUT = 1<<i;
DATA_OUT = Nixie[i];
i++;
if(i>7)
{
i = 0;
KeyProcess();
}
}
這樣改寫,然後把鍵盤的中斷去掉(別忘了key.h包含和加入KeyProcess(); 的聲明;如果程序中有兩個指向同一個中斷時,會編譯錯誤);這樣就可以鍵盤、和數碼管共同使用了。
使用示例:
使用方法還是和之前一樣,工程中加入Nixietube.c文件,然後在要調用的地方加入Nixietube.h的包含;如puchr函數,和示例工程的main.c
main.c調用的方式如下:
#include <msp430x16x.h>
#include <stdio.h>
#include "Nixietube.h"
void ClkInit()
{
char i;
BCSCTL1 &= ~XT2OFF; //打開XT2振盪器
IFG1&=~OFIFG; //清除振盪錯誤標志
while((IFG1&OFIFG)!=0)
{
for(i=0;i<0xff;i++);
IFG1&=~OFIFG; //清除振盪錯誤標志
}
BCSCTL2 |= SELM_2+SELS+DIVS_3; //MCLK為8MHz,SMCLK為1MHz
}
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
ClkInit();
NixiettubeInit();
_EINT();
//while(1)
{
NixiettubeDisplayChar(AA,5);
NixiettubeDisplayChar(DOT,5);
NixiettubeInsertChar(2);
NixiettubeInsertChar(DOT);
NixiettubeInsertChar(2);
printf("%1.2f",1.2);
}
}
包含msp430的頭文件,以便使用430單片機的先關資源;加入stdio.h以使用printf函數;加入Nixietube.h使用數碼管的相關程序。
還要注意,為了數碼管正常顯示,必須打開總中斷,以使數碼管動態掃描顯示。另外,本程序單步調試看不到數碼管正常顯示,因為沒有掃描。只有全速運行才可以看到數碼管的顯示情況。
通過以上的設置,就可通過MSP430來控制兩位數碼管顯示任意的字元。