MSP430单片机七段数码管显示实验电路图及C程序.docVIP

  • 46
  • 0
  • 约1.75千字
  • 约 4页
  • 2019-08-17 发布于江西
  • 举报

MSP430单片机七段数码管显示实验电路图及C程序.doc

实验电路图如下: 程序: #include msp430x14x.h #include led.h unsigned char seg[]={ 0x3f,0x06,0x5b,0x4f, /* 0 1 2 3*/ 0x66,0x6d,0x7d,0x07, /* 4 5 6 7 */ 0x7f,0x6f,0x77,0x7c, /* 8 9 A B */ 0x39,0x5e,0x79,0x71 /* C D E F */ }; void Init_Port(void) { //将P1口所有的管脚在初始化的时候设置为输入方式 P1DIR = 0; //将P1口所有的管脚设置为一般I/O口 P1SEL = 0; // 将P1.0 P1.1 P1.2 设置为输出方向 P1DIR |= BIT0; P1DIR |= BIT1; P1DIR |= BIT2; return; } void SHCLK_Hi(void) { //P1.2管脚输出高电平 P1OUT |= BIT2; return; } void SHCLK_Lo(void) { //P1.2管脚输出低电平 P1OUT = ~(BIT2); return; } void STCLK_Hi(void) { //P1.1管脚输出高电平 P1OUT |= BIT1; return; } void STCLK_Lo(void) { //P1.1管脚输出低电平 P1OUT = ~(BIT1); return; } void DataOut(unsigned char nValue) { int i; int j; for(i = 0;i 8;i++) { if ((nValue 0x01) == 1) { P1OUT |= BIT0;//输出高电平 } else { P1OUT = ~(BIT0);//输出低电平 } SHCLK_Hi();//时钟高电平,上升沿有效 for(j = 10; j 0; j--) ;//延迟一点时间 SHCLK_Lo();//时钟低电平 for(j = 10; j 0; j--) ; nValue = 1; } return; } void main(void) { unsigned char nValue; //初始化时钟 Init_CLK(); //端口初始化 Init_Port(); //清除锁存信号 STCLK_Lo(); //输出0 nValue = 0; DataOut(seg[nValue]); //输出2 nValue = 2; DataOut(seg[nValue]); //给锁存信号,显示上面的两位数据 STCLK_Hi(); return; } void Init_CLK(void) { unsigned int i; BCSCTL1 = 0X00; //将寄存器的内容清零 //XT2震荡器开启 //LFTX1工作在低频模式 //ACLK的分频因子为1 do { IFG1 = ~OFIFG; // 清除OSCFault标志 for (i = 0x20; i 0; i--); } while ((IFG1 OFIFG) == OFIFG); // 如果OSCFault =1 BCSCTL2 = 0X00; //将寄存器的内容清零 BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1 BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1 }

文档评论(0)

1亿VIP精品文档

相关文档