【MSP430F149学习】11数码管显示
准备工具:电脑;TS8900--MSP430F149开发板;USB线一根
开发环境:IAR EW for MSP430 V5.30
控制板载八位数码管上显示八个数字01234567
数码管原理图 两片74HC573锁存器U3控制断选U11控制位选
硬件图
程序代码
/**********************************************
程序功能:在板载八位数码管上显示八个数字01234567
***********************************************/
#include
typedef unsigned char uchar;
#define wei_h P5OUT |= BIT5
#define wei_l P5OUT &= ~BIT5
#define duan_l P6OUT &= ~BIT6
#define duan_h P6OUT |= BIT6
//共阴极数码管7位段码:0--f
uchar scandata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//记录显示位数的全局变量
uchar cnt = 0;
/********************主函数********************/
void main(void)
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF1OUT = 0XFF;
P2DIR = 0XFF2OUT = 0XFF;
P3DIR = 0XFF3OUT = 0XFF;
P4DIR = 0XFF4OUT = 0XFF;
P5DIR = 0XFF5OUT = 0XFF;
P6DIR = 0XFF6OUT = 0XFF;
//WDTCTL = WDT_ADLY_250; // 设置内部看门狗工作在定时器模式,250ms中断一次
WDTCTL = WDT_ADLY_1_9; // 设置内部看门狗工作在定时器模式,1.9ms中断一次
IE1 |= WDTIE; // 使能看门狗中断
P4DIR = 0xff; // 设置P4的IO方向为输出
P4OUT = 0xff; // 关闭显示
_EINT(); // 总中断开
while(1); // 死循环
}
/*******************************************
函数名称:watchdog_timer
功 能:看门狗中断服务函数,在这里输出数码管的
段选和位选信号
参 数:无
返回值 :无
********************************************/
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
P4OUT = scandata[cnt]; // 输出段选信号
duan_h;
duan_l;
P4OUT = ~(1 << cnt); // 输出位选信号
wei_h;
wei_l;
cnt++; // 位计数变量在0~8之间循环
if(cnt == 8) cnt = 0;
}
下载运行效果
WDTCTL = WDT_ADLY_250; // 设置内部看门狗工作在定时器模式,250ms中断一次
WDTCTL = WDT_ADLY_1_9; // 设置内部看门狗工作在定时器模式,1.9ms中断一次
【MSP430F149学习】汇总贴
|