标题: MSP430单片机测频率、电压 2016北京市电子设计竞赛题目及代码 [打印本页]
作者: hobcat 时间: 2016-12-30 08:44
标题: MSP430单片机测频率、电压 2016北京市电子设计竞赛题目及代码
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;
复制代码
作者: innovation_bupt 时间: 2018-3-27 19:35
感谢您!!正需要!!学习一个!!
作者: kelbupt 时间: 2018-3-29 15:50
非常感谢
作者: tiandailan 时间: 2018-4-6 10:17
非常感谢您的分享,现在正需要!
作者: 15021245 时间: 2018-4-6 14:54
哇,感谢楼主,太关键了
作者: CrankRong 时间: 2018-4-7 20:50
感谢!急需
作者: neumann 时间: 2018-4-8 14:57
需要,赞一个
作者: foreverseer 时间: 2018-4-10 13:30
赞一个,正急用,谢谢楼主
作者: foreverseer 时间: 2018-4-10 14:13
太感谢了,我正需要这个
作者: OliveDS 时间: 2018-4-10 17:30
太感谢了!
作者: 嘤嘤嘤哇咔咔 时间: 2018-4-10 19:35
很好,谢谢
作者: miracle123 时间: 2018-4-10 19:42
谢谢楼主
作者: linshizhiyu 时间: 2018-4-10 22:30
谢谢楼主
作者: fuycj 时间: 2019-3-25 09:42
谢谢楼主
作者: liscman 时间: 2019-3-31 00:29
请问有完整的代码吗
全部四道题的
作者: oO机器骑士 时间: 2019-3-31 15:20
方便给出你的430的原理图吗
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |