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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

MSP430單片機超級終端人機對話程序

[復制鏈接]
ID:108615 發(fā)表于 2016-3-14 19:25 | 顯示全部樓層 |閱讀模式
本程序是《MSP430系列單片機系統(tǒng)工程設計與實踐》書里面的源碼,(包含工程文件 (例4.1.123)))完整例程下載:http://www.zg4o1577.cn/bbs/dpj-46245-1.html

關于本程序的詳細解說大家可以下載電子書點擊上圖即可
  1. /*
  2.                
  3.                   MSP430F4XX系列單片機超級終端交互范例程序

  4.   說明:該程序示范用串口作為標準終端輸入/輸出設備的范例。Windows自帶有"超級
  5.         終端"軟件,運行后可以將PC機模擬成一個標準終端設備,其中PC機的屏幕變
  6.         成字符型輸出終端設備,PC機鍵盤變成標準字符輸入設備。printf/scanf函數
  7.         可以向標準字符終端設備打印/獲取信息,因此,通過串口連接到PC機并運行
  8.         超級終端軟件后,可以將printf函數的結果打印在PC機屏幕上,也能從PC機鍵
  9.         盤向單片機輸入數據和信息。終端最常用的場合有:
  10.         1。利用超級終端軟件,能夠在沒有顯示、鍵盤設備的單片機系統(tǒng)上方便地構
  11.            造一種人機交互方法。且?guī)缀鯚o成本。
  12.         2。對于某些隱蔽的功能(如系統(tǒng)校準菜單),不向用戶開放,由終端進行操作,
  13.            供廠家維護使用。
  14.         3。系統(tǒng)運行過程中,從終端輸出日志信息、系統(tǒng)狀態(tài)、各種參數等數據。從
  15.            而為檢修提供便利。
  16.         4。軟件設計過程中,用于調試軟件。特別對于某些不允許暫停的程序(比如對
  17.            機械系統(tǒng)的控制),開發(fā)環(huán)境提供的變量查看功能要求暫停程序才能查看,
  18.            而利用終端可以在運行中察看變量、跟蹤路徑等。

  19.             從 開始->程序->附件->通訊->超級終端 運行軟件,第一次運行會要求輸
  20.         入電話和區(qū)號(早期Modem設備的要求,隨便填)。輸入文件名,選擇串口號,設
  21.         置波特率4800,8位數據,無校驗,無流量控制,連接。程序由6段范例構成,
  22.         演示時,依次恢復每一段運行。
  23.             scanf/printf函數只負責格式化輸入/輸出字符數據流,printf函數具體輸
  24.         出到何種設備上由putchar()函數決定。scanf函數從何設備上獲取字符數據流
  25.         由getchar()函數決定。在UART.c文件中提供了向串口發(fā)送數據的putchar函數
  26.         和從串口讀入字符的函數getchar函數,因此scanf/printf函數所操作的設備是
  27.         串口。超級終端軟件可以將串口字符映射到屏幕上,也可將PC鍵盤的輸入發(fā)送到
  28.         串口上,并能解析控制字符(\n\r\f\t等)。因此借助超級終端軟件可以將計算機
  29.         的屏幕和鍵盤映射為單片機的屏幕和鍵盤。當然,也可編寫其他的putchar函數
  30.         例如將字符顯示在LCD上,則printf的打印結果會輸出在LCD上。(參考《深入剖
  31.         析printf函數》程序范例);或編寫從按鈕讀入字符的getchar函數,則scanf的
  32.         輸入從按鈕得到(參考《scanf函數移植》程序范例)
  33.             在所有的C語言編譯器中,均有printf/scanf等IO接口函數,一般由編譯器
  34.         廠商以庫程序的形式提供。IAR的編譯器提供兩種庫程序:CLIB和DLIB,其默認
  35.         是DLIB。但DLIB是為C++語言提供的庫,若用C語言編程應該使用CLIB。在工程
  36.         管理窗口的工程名上右鍵->Options 彈出設置菜單,在General Options項內選
  37.         擇Library Configuration頁,選擇當前庫為CLIB。還可在Library Option頁內
  38.         設置printf/scanf函數的大小。越大兼容的格式越多,但程序編譯出來也越大。
  39.         可根據實際需要自行配置。
  40.             除了printf/scanf函數外,CLIB庫還提供上百個標準C語言函數,各個函數
  41.         的功能、用法、頭文件可參考<<IAR C LIBRARY FUNCTIONS Reference Guide>>
  42.         該文件位于 EW430安裝目錄\430\doc\clib.pdf
  43.             

  44. //=========================================================================


  45.   (C)西安電子科技大學 測控技術與儀器教研中心 編寫:謝楷
  46.   
  47. */
  48. //******************************************************************************
  49. //                        
  50. //               MSP430FE425
  51. //           +-----------------+
  52. //           |              XIN|-
  53. //           |                 | 32kHz
  54. //           |             XOUT|-
  55. //           |                 |
  56. //           |        (TXD)P2.4|----------->(TTL/232)----> RXD(2)
  57. //           |                 | 4800 bps ,n,8,1            
  58. //           |        (RXD)P2.5|<-----------(TTL/232)<---- TXD(3)  PC(DB9)
  59. //           |                 |
  60. //           |             GND |---------------------------GND(5)
  61. //
  62. //******************************************************************************
  63. #include "msp430x42x.h"    /*430寄存器頭文件*/
  64. #include "UART.h"          /*串口通訊程序庫頭文件*/
  65. #include "stdio.h"         /*標準IO設備頭文件(printf/scanf函數所需)*/
  66. #include "math.h"          /*數學函數庫*/
  67. #include "LCD_Display.h"   /*LCD顯示函數庫頭文件*/
  68. #include "ADC16.h"         /*ADCc采樣函數庫頭文件*/
  69. int Count=0;                      //打印次數
  70. long Number;
  71. long High,Weight,BMI;  
  72. int ADC_Value,i;
  73.   
  74. void main( void )
  75. { unsigned long int i=0;
  76.   WDTCTL=WDTPW+WDTHOLD;  //停止看門狗
  77.   FLL_CTL0|=XCAP18PF;          //配置晶振負載電容
  78.   P1DIR|=BIT0+BIT1+BIT2+BIT3+BIT4;
  79.   P2DIR|=BIT0+BIT1+BIT2+BIT3;       //不用的IO設為輸出
  80.   P1OUT=0;P2OUT=0;                  //以免不確定電平造成額外耗電
  81.   BTCTL=0;//LCD會用到BasicTimer,BTCTL在復位過程不會自動初始化,需要人工清零
  82.   LCD_Init();              //初始化液晶顯示
  83.   UART_Init(4800,'n',8,1); //串口初始化,設置成4800bps,無校驗,8位數據,1位停止
  84.   ADC16_Init(2,0,'S',1);   //ADC2設為外部輸入,數據格式有符號,1倍放大
  85.    while(1)
  86.    {
  87.      for(i=0;i<80000;i++);                      //延遲
  88. //---------------------------------------------------------------------     
  89.    //基本功能演示范例
  90.      printf("\nHello World!\n");                //打印到超級終端
  91.      printf("歡迎光臨\n");                      //中文也支持!
  92.      //Count++;
  93.      //printf("第%d次打印\n",Count);              //能夠支持格式化數據打印
  94.      //printf("根號%d等于%f\n",Count,sqrt(Count));      //能夠支持浮點數
  95.      //printf("根號%d約等于%.2f\n",Count,sqrt(Count));  //能夠支持小數格式
  96.      
  97. //---------------------------------------------------------------------
  98. /*   //輸入數字到變量
  99.    printf("請輸入數:");
  100.    scanf("%ld",&Number);
  101.    printf("%ld平方等于%ld\n\n",Number,Number*Number);
  102. */
  103. //---------------------------------------------------------------------
  104. /*   //調試顯示函數的例子      
  105.    printf("請輸入顯示數值:");
  106.    scanf("%ld",&Number);
  107.    LCD_DisplayLongNumber(Number);
  108. */
  109. //---------------------------------------------------------------------      
  110. /* //暫停程序,單步調試的例子
  111.    getchar();                //暫停在此,每按回車一次,運行一次
  112.    Count++;
  113.    LCD_DisplayNumber(Count);
  114.    printf("Count=%d\n",Count);
  115. */
  116. //---------------------------------------------------------------------
  117. /*  //調試ADC的例子
  118.   ADC16_VrefOn();        //打開基準源
  119.   Analog_On();           //打開外設電源P2.2(如果有必要)
  120.   for(i=0;i<100;i++);    //略延遲,等待穩(wěn)定
  121.   ADC_Value=ADC16_Sample(2,1); //ADC2單次采樣
  122.   ADC16_VrefOff();        //打開基準源
  123.   Analog_Off();           //關閉外設電源P2.2(如果有必要)
  124.   printf("ADC2的采樣值=%d   ",ADC_Value);
  125.   printf("對應電壓=%.4fV\n",(float)ADC_Value*0.6/32768);   
  126. */
  127. //---------------------------------------------------------------------      
  128. /* //計算肥胖率的例子(人機對話)
  129.     printf("請輸入身高(cm):");
  130.     scanf("%ld",&High);
  131.     printf("請輸入體重(kg):");
  132.     scanf("%ld",&Weight);
  133.     BMI=Weight*100000/(High*High);
  134.     printf("您的肥胖率=%ld.%ld\n",BMI/10,BMI%10);
  135.     if(BMI<180)      printf("太瘦了,多吃點!!\n\n");
  136.     else if(BMI<240) printf("太帥了,請保持!!\n\n");
  137.     else if(BMI<280) printf("再瘦一點點就帥了,加油!!\n\n");
  138.     else if(BMI<320) printf("輕度肥胖,要注意哦!!\n\n");
  139.     else if(BMI<360) printf("中度肥胖,要減肥了!!\n\n");
  140.     else             printf("重度肥胖,隨便吃吧,已經沒救了!!\n\n");
  141. */
  142. //---------------------------------------------------------------------      
  143.    }
  144. }
復制代碼



回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九色视频网站 | 成人亚洲精品久久久久软件 | 国产不卡视频在线 | 国产精品a免费一区久久电影 | 播放一级毛片 | 精品国产青草久久久久福利 | 激情黄色在线观看 | 国产亚洲人成a在线v网站 | 香蕉视频在线播放 | 精品一区在线看 | 国产在线观看网站 | 中文字幕视频在线观看 | 亚洲色图第一页 | 国产一区在线免费 | 色综久久 | 亚洲一区视频在线播放 | 久久久亚洲 | 久久久91精品国产一区二区三区 | www.日本在线播放 | 国产成人精品一区二三区在线观看 | 欧美激情综合网 | 欧美日韩在线免费观看 | 人妖av| 国产精品91网站 | 精品一区二区三区在线观看 | 国产午夜三级一区二区三 | 久草网视频 | 美女视频一区二区三区 | 亚洲乱码国产乱码精品精98午夜 | 日本a v在线播放 | 国产精品美女久久久久aⅴ国产馆 | 欧美一级久久 | 黄色片在线观看网址 | 亚洲国产精品自拍 | 国产日韩久久 | 精精国产xxxx视频在线播放 | 欧美日韩高清一区 | 精品久久久一区 | 午夜极品| 亚洲精品日韩在线 | 国产黄色大片 |