久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
MSP430單片機超級終端人機對話程序
[打印本頁]
作者:
51hei單片
時間:
2016-3-14 19:25
標題:
MSP430單片機超級終端人機對話程序
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件 (例4.1.123)))完整例程下載:
http://m.zg4o1577.cn/bbs/dpj-46245-1.html
‘
關于本程序的詳細解說大家可以下載電子書點擊上圖即可
/*
MSP430F4XX系列單片機超級終端交互范例程序
說明:該程序示范用串口作為標準終端輸入/輸出設備的范例。Windows自帶有"超級
終端"軟件,運行后可以將PC機模擬成一個標準終端設備,其中PC機的屏幕變
成字符型輸出終端設備,PC機鍵盤變成標準字符輸入設備。printf/scanf函數
可以向標準字符終端設備打印/獲取信息,因此,通過串口連接到PC機并運行
超級終端軟件后,可以將printf函數的結果打印在PC機屏幕上,也能從PC機鍵
盤向單片機輸入數據和信息。終端最常用的場合有:
1。利用超級終端軟件,能夠在沒有顯示、鍵盤設備的單片機系統上方便地構
造一種人機交互方法。且幾乎無成本。
2。對于某些隱蔽的功能(如系統校準菜單),不向用戶開放,由終端進行操作,
供廠家維護使用。
3。系統運行過程中,從終端輸出日志信息、系統狀態、各種參數等數據。從
而為檢修提供便利。
4。軟件設計過程中,用于調試軟件。特別對于某些不允許暫停的程序(比如對
機械系統的控制),開發環境提供的變量查看功能要求暫停程序才能查看,
而利用終端可以在運行中察看變量、跟蹤路徑等。
從 開始->程序->附件->通訊->超級終端 運行軟件,第一次運行會要求輸
入電話和區號(早期Modem設備的要求,隨便填)。輸入文件名,選擇串口號,設
置波特率4800,8位數據,無校驗,無流量控制,連接。程序由6段范例構成,
演示時,依次恢復每一段運行。
scanf/printf函數只負責格式化輸入/輸出字符數據流,printf函數具體輸
出到何種設備上由putchar()函數決定。scanf函數從何設備上獲取字符數據流
由getchar()函數決定。在UART.c文件中提供了向串口發送數據的putchar函數
和從串口讀入字符的函數getchar函數,因此scanf/printf函數所操作的設備是
串口。超級終端軟件可以將串口字符映射到屏幕上,也可將PC鍵盤的輸入發送到
串口上,并能解析控制字符(\n\r\f\t等)。因此借助超級終端軟件可以將計算機
的屏幕和鍵盤映射為單片機的屏幕和鍵盤。當然,也可編寫其他的putchar函數
例如將字符顯示在LCD上,則printf的打印結果會輸出在LCD上。(參考《深入剖
析printf函數》程序范例);或編寫從按鈕讀入字符的getchar函數,則scanf的
輸入從按鈕得到(參考《scanf函數移植》程序范例)
在所有的C語言編譯器中,均有printf/scanf等IO接口函數,一般由編譯器
廠商以庫程序的形式提供。IAR的編譯器提供兩種庫程序:CLIB和DLIB,其默認
是DLIB。但DLIB是為C++語言提供的庫,若用C語言編程應該使用CLIB。在工程
管理窗口的工程名上右鍵->Options 彈出設置菜單,在General Options項內選
擇Library Configuration頁,選擇當前庫為CLIB。還可在Library Option頁內
設置printf/scanf函數的大小。越大兼容的格式越多,但程序編譯出來也越大。
可根據實際需要自行配置。
除了printf/scanf函數外,CLIB庫還提供上百個標準C語言函數,各個函數
的功能、用法、頭文件可參考<<IAR C LIBRARY FUNCTIONS Reference Guide>>
該文件位于 EW430安裝目錄\430\doc\clib.pdf
//=========================================================================
(C)西安電子科技大學 測控技術與儀器教研中心 編寫:謝楷
*/
//******************************************************************************
//
// MSP430FE425
// +-----------------+
// | XIN|-
// | | 32kHz
// | XOUT|-
// | |
// | (TXD)P2.4|----------->(TTL/232)----> RXD(2)
// | | 4800 bps ,n,8,1
// | (RXD)P2.5|<-----------(TTL/232)<---- TXD(3) PC(DB9)
// | |
// | GND |---------------------------GND(5)
//
//******************************************************************************
#include "msp430x42x.h" /*430寄存器頭文件*/
#include "UART.h" /*串口通訊程序庫頭文件*/
#include "stdio.h" /*標準IO設備頭文件(printf/scanf函數所需)*/
#include "math.h" /*數學函數庫*/
#include "LCD_Display.h" /*LCD顯示函數庫頭文件*/
#include "ADC16.h" /*ADCc采樣函數庫頭文件*/
int Count=0; //打印次數
long Number;
long High,Weight,BMI;
int ADC_Value,i;
void main( void )
{ unsigned long int i=0;
WDTCTL=WDTPW+WDTHOLD; //停止看門狗
FLL_CTL0|=XCAP18PF; //配置晶振負載電容
P1DIR|=BIT0+BIT1+BIT2+BIT3+BIT4;
P2DIR|=BIT0+BIT1+BIT2+BIT3; //不用的IO設為輸出
P1OUT=0;P2OUT=0; //以免不確定電平造成額外耗電
BTCTL=0;//LCD會用到BasicTimer,BTCTL在復位過程不會自動初始化,需要人工清零
LCD_Init(); //初始化液晶顯示
UART_Init(4800,'n',8,1); //串口初始化,設置成4800bps,無校驗,8位數據,1位停止
ADC16_Init(2,0,'S',1); //ADC2設為外部輸入,數據格式有符號,1倍放大
while(1)
{
for(i=0;i<80000;i++); //延遲
//---------------------------------------------------------------------
//基本功能演示范例
printf("\nHello World!\n"); //打印到超級終端
printf("歡迎光臨\n"); //中文也支持!
//Count++;
//printf("第%d次打印\n",Count); //能夠支持格式化數據打印
//printf("根號%d等于%f\n",Count,sqrt(Count)); //能夠支持浮點數
//printf("根號%d約等于%.2f\n",Count,sqrt(Count)); //能夠支持小數格式
//---------------------------------------------------------------------
/* //輸入數字到變量
printf("請輸入數:");
scanf("%ld",&Number);
printf("%ld平方等于%ld\n\n",Number,Number*Number);
*/
//---------------------------------------------------------------------
/* //調試顯示函數的例子
printf("請輸入顯示數值:");
scanf("%ld",&Number);
LCD_DisplayLongNumber(Number);
*/
//---------------------------------------------------------------------
/* //暫停程序,單步調試的例子
getchar(); //暫停在此,每按回車一次,運行一次
Count++;
LCD_DisplayNumber(Count);
printf("Count=%d\n",Count);
*/
//---------------------------------------------------------------------
/* //調試ADC的例子
ADC16_VrefOn(); //打開基準源
Analog_On(); //打開外設電源P2.2(如果有必要)
for(i=0;i<100;i++); //略延遲,等待穩定
ADC_Value=ADC16_Sample(2,1); //ADC2單次采樣
ADC16_VrefOff(); //打開基準源
Analog_Off(); //關閉外設電源P2.2(如果有必要)
printf("ADC2的采樣值=%d ",ADC_Value);
printf("對應電壓=%.4fV\n",(float)ADC_Value*0.6/32768);
*/
//---------------------------------------------------------------------
/* //計算肥胖率的例子(人機對話)
printf("請輸入身高(cm):");
scanf("%ld",&High);
printf("請輸入體重(kg):");
scanf("%ld",&Weight);
BMI=Weight*100000/(High*High);
printf("您的肥胖率=%ld.%ld\n",BMI/10,BMI%10);
if(BMI<180) printf("太瘦了,多吃點!!\n\n");
else if(BMI<240) printf("太帥了,請保持!!\n\n");
else if(BMI<280) printf("再瘦一點點就帥了,加油!!\n\n");
else if(BMI<320) printf("輕度肥胖,要注意哦!!\n\n");
else if(BMI<360) printf("中度肥胖,要減肥了!!\n\n");
else printf("重度肥胖,隨便吃吧,已經沒救了!!\n\n");
*/
//---------------------------------------------------------------------
}
}
復制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品va
|
在线观看免费黄色
|
成人做爰69片免费
|
欧美成人专区
|
精品少妇
|
国产一区二区av
|
日韩在线视频一区
|
国产欧美日韩在线
|
国产黄网
|
国产黄色一区
|
日韩一级片视频
|
99精品视频在线观看
|
91日韩欧美
|
免费黄色av
|
亚洲在线一区二区
|
中文在线一区
|
人人爱av
|
欧美黑人一区二区三区
|
av一区二区三区
|
福利视频1000
|
99视频网
|
97色综合
|
国产精品视频免费看
|
成人a在线
|
日韩视频网
|
亚洲午夜视频在线观看
|
黄色精品网站
|
国产福利av
|
一级久久
|
亚洲精品www久久久久久广东
|
国产精品久久久久久久久久久久午夜片
|
中文字幕在线播放视频
|
av福利网
|
欧美成人精品欧美一级私黄
|
午夜成人在线视频
|
成人免费看片视频
|
97国产在线
|
精品小视频
|
一本不卡
|
www久
|
欧美做受69
|