2016年北京市電子設計競賽試題 一、任務:在給定的MSP平臺上設計制作一數字表; 二、具體任務:數字表有下列功能: 1. 測量直流電壓(30分) (1)范圍:5mV-100mV; (2)誤差不大于1%; (3)有顯示功能; (4)具有自動換量程功能,顯示有效位3位; 2. 測量直流電流(20分) (1)范圍:5mA-40mA; (2)具有自動換量程功能,顯示有效位3位; (3)誤差不大于1%; 3. 測量交流電壓有效值(20分) (1)電壓范圍(有效值):5mV-80mV; (2)頻率范圍:100Hz-5KHz; (3)具有自動換量程功能,顯示有效位3位; (4)誤差不大于5%; 4. 測量交流電壓的頻率(30分) (1)頻率范圍:100Hz-5KHz;輸入信號電壓(有效值)為20mV; (2)具有自動換量程功能,顯示有效位3位; (3)誤差不大于1%; (4)有顯示單位功能;[用第4個數碼管顯示,如“1”代表Hz,“2”代表KHz];
競賽采用“FPGA最小系統單元+MSP-EXP430G2開發板單元+萬用板單元”的架構模式,FPGA最小系統和MSP-EXP430G2開發模塊均可以獨立使用,也可以相互配合組合設計使用。萬用板單元采用標準的2.54mm間距焊接孔組成,用于搭建焊接比賽時所設計的應用電路。 MSP430代碼見附件! - #include "msp430g2553.h"
- #define uchar unsigned char
- #define uint unsigned int
- /****************************************第四題***********************/
- unsigned long TimeBase=0;
- //8M時鐘,如果數據不準微調這里
- #define SYSTEMCLOCK 1000000
- // 看門狗分頻的時鐘中斷
- #pragma vector = WDT_VECTOR
- __interrupt void watchdog_timer(void) //
- {
- TimeBase++;
- }
- unsigned long TA0_Frequency=0; //TA0計數方式測量的頻率值(HZ單位)
- unsigned long TA0_Flowover_Time=0; //上次溢出時的時間點
- #pragma vector = TIMER0_A1_VECTOR
- __interrupt void Timer_A0C1 (void)
- {
- TA0CTL &= ~TAIFG;//清除中斷標志
- TA0R=0xffff-4096;//累計8192個
- TA0_Frequency=(TimeBase-TA0_Flowover_Time);//時間差值
- TA0_Frequency=(unsigned long)(SYSTEMCLOCK)/TA0_Frequency/2;//累計速度乘在這里SYSTEMCLOCK*X
- TA0_Flowover_Time=TimeBase; //當前時間更新為上次溢出時間
- }
- /*****串口發送數據函數*****/
- void Send_Byte4(unsigned char data)
- {
- while(!(IFG2 & UCA0TXIFG));//發送寄存器空的時候發送數據
- UCA0TXBUF = data;
- }
- /*****串口發送,數碼管顯示******/
- void displayHZ(unsigned int dis)
- {
- unsigned char shi,ge,bai,qian;
- ge = dis % 10;
- shi = (dis / 10) % 10;
- bai = (dis / 100) % 10;
- qian = (dis / 1000) % 10;
- if (dis>=5500) return;
- if (dis>=1000) {
- Send_Byte4(2|0x10);//第四位數碼管顯示1
- Send_Byte4(qian|0x20);//第三位數碼管顯示qian位
- Send_Byte4(0x2b);//第二位數碼管顯示小數點
- Send_Byte4(bai|0x40);//第二位數碼管顯示百位
- Send_Byte4(shi|0x80);//第一位數碼管顯示十位
- } else {
- Send_Byte4(1|0x10);//第四位數碼管顯示1
- Send_Byte4(bai|0x20);//第三位數碼管顯示bai位
- Send_Byte4(shi|0x40);//第二位數碼管顯示位
- Send_Byte4(ge |0x80);//第一位數碼管顯示位
-
- }
- }
- /****************************************第四題end***********************/
- /****************************************第一題 main外部分***********************/
- uint a[4];
- /*****串口發送,數碼管顯示******/
- void display(uint dis)
- {
- uchar shi,ge,bai,qian;
- ge = dis % 10;
- shi = (dis / 10) % 10;
- bai = (dis / 100) % 10;
- qian = (dis / 1000) % 10;
復制代碼 |