心电信号采集模块的设计与开发课程设计 - 图文(3)

2019-03-11 08:51

信息学院电科专业课程设计报告

具。

CCS有两种工作模式,即

软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。

硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。

CCS的开发系统主要由以下组件构成: ① TMS320C54x集成代码产生工具; ② CCS集成开发环境;

③ DSP/BIOS实时内核插件及其应用程序接口API; ④ 实时数据交换的RTDX插件以及相应的程序接口API; ⑤ 由TI公司以外的第三方提供的各种应用模块插件。

CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程。

4.2 软件总体设计框图

F5529 显示logo 模拟信号 ADC12 显示工程相关 数据处 LCD

-8-

信息学院电科专业课程设计报告

4.3 软件分步配置:

4.3.1 配置ADC12:

F5529内部ADC为8位12通道模数转换器。实验中将P6.4作为模拟 信号的输入端口。时钟源为MCLK的3分频。

ADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time, ADC12 on ADC12CTL1 |= ADC12SSEL0 + ADC12DIV2;

ADC12IE = 0x01; // Enable interrupt ADC12CTL0 |= ADC12ENC;

P6SEL |= 0x10; // P6.4 ADC option select

//ADC12SSEL 0:mclk 1:smclk

ADC12CTL1 |= ADC12SHP; // Use sampling timer ,0 clock

4.3.2 配置LCD1602:

采用F5529内置的点阵屏,相关详细配置参见F5529官方“HAL_Dogs102x6.c”

4.4 软件主程序

//******************************************************************************

// MSP430F552x // ----------------- // /|\\| | // | | | // --|RST | // | | // Vin -->|P6.4/CB0/A0 | //

//******************************************************************************

#include #include \ #include\ #include

-9-

信息学院电科专业课程设计报告

int read;

volatile unsigned int x = 0; volatile unsigned int flag = 0; volatile unsigned int value = 0; volatile unsigned int count = 0; volatile float freq = 1.4; volatile unsigned int i; #define Num_of_Results 2

volatile unsigned int results[Num_of_Results];

// Needs to be global in this // example. Otherwise, the // compiler removes it because it // is not used for anything. uint16_t timeoutCounter;

void init_lcd() {

// Dogs102x6_setBacklight(brightness); //设置初始背光值 // Dogs102x6_setContrast(contrast); //设置初始对比度值 }

int main(void)

Dogs102x6_clearScreen(); //显示文字说明:

//Dogs102x6_stringDraw(3, 0, \ // Brightness not programed in Flash Yet

if (brightness == 0xFF) //若当前FLASH中无背光值,则 // Set Default Brightness brightness = 0x11;

uint8_t contrast = *((unsigned char *)contrastSetpointAddress); uint8_t brightness = *((unsigned char *)brightnessSetpointAddress); // Set up LCD

Dogs102x6_init(); //初始化LCD Dogs102x6_backlightInit(); //背光初始化 // Contrast not programed in Flash Yet

if (contrast == 0xFF) //若当前FLASH中无对比度值, // Set Default Contrast contrast = 11; //读取FLASH中对比度值 //读取FLASH中背光值

则将对比度值设为11(默认)

将背光值设为11(默认)

-10-

信息学院电科专业课程设计报告

{

WDTCTL = WDTPW + WDTHOLD; // Stop WDT //Board_init(); //初始化GPIO // Globally enable interrupts

ADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time, ADC12 on ADC12CTL1 |= ADC12SSEL0 + ADC12DIV2; 1:smclk

ADC12CTL1 |= ADC12SHP; // Use sampling timer ,0 clock

ADC12IE = 0x01; // Enable interrupt ADC12CTL0 |= ADC12ENC;

P7DIR |= 0x01; // P7.0 output

P6SEL |= 0x10; // P6.4 ADC option select P1DIR |= 0x01; // P1.0 output

TA1CCTL0 = CCIE; // CCR0 interrupt enabled TA1CCR0 = 2040;// (1/32768)*205 =5 ms ??

TA1CTL = TASSEL_1 + MC_1 + TACLR; // ACLK, upmode, clear TAR init_lcd(); //logo_init();

__enable_interrupt(); //使能全局中断 //info_init();

Dogs102x6_clearScreen(); buttonsPressed = 0;

//__disable_interrupt(); //关闭全局中断 while (1) {

ADC12CTL0 |= ADC12SC; // Start sampling/conversion __bis_SR_register(LPM0_bits + GIE); // LPM0, ADC12_ISR will force exit __no_operation(); // For debugger

//Dogs102x6_stringDraw(8, 0, \ } }

// Timer0_A5 Interrupt Vector (TAIV) handler #pragma vector=TIMER1_A0_VECTOR __interrupt void TIMER1_A0_ISR(void) {

P7OUT ^= 0x01; // Toggle P1.0 }

#pragma vector = ADC12_VECTOR __interrupt void ADC12_ISR(void) {

//ADC12SSEL 0:mclk -11-

信息学院电科专业课程设计报告

static unsigned char index = 0; if(x<103) { } else {

x++;

if (buttonsPressed){

if(freq>1.0 && freq <1.5) {

ADC12IE = 0x00; // Enable interrupt __bic_SR_register_on_exit(LPM0_bits); // Exit active CPU } else { flag = 0; value = 0; count = 0;

buttonsPressed = 0; Dogs102x6_clearScreen(); x=0; }

} else {

Dogs102x6_clearScreen(); x=0; } {

case 0: break; // Vector 0: No interrupt case 2: break; // Vector 2: ADC overflow case 4: break; // Vector 4: ADC timing overflow case 6: // Vector 6: ADC12IFG0

if (index == 2) {

index = 0; }

Dogs102x6_pixelDraw(x,41-ADC12MEM0/100 + 10,DOGS102x6_DRAW_NORMAL); read = ADC12MEM0;

results[index] = ADC12MEM0; // Move results

index++; // Increment results index, }

switch(__even_in_range(ADC12IV,34))

modulo; Set Breakpoint1 here

if( x>1 && abs(results[0]-results[1]) > 200 && x < 102/*the last line don't draw*/)

-12-


心电信号采集模块的设计与开发课程设计 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电机轴承外圈故障诊断装置的设计1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: