单片机MSP430G2553--四位扫描数码管动态显示.txt
时间: 2023-10-26 20:40:11 浏览: 176
本文将介绍如何使用MSP430G2553单片机实现四位扫描数码管动态显示。
1. 硬件连接
将四位共阳数码管连接至单片机的P1口,具体接法如下:
数码管A口接P1.0口,数码管B口接P1.1口,数码管C口接P1.2口,数码管D口接P1.3口;数码管E口接P1.4口,数码管F口接P1.5口,数码管G口接P1.6口,数码管DP口接P1.7口。
2. 程序设计
首先定义数码管显示的数字和对应的P1口输出值,如下所示:
unsigned char num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示的数字
unsigned char pos[]={0xfe,0xfd,0xfb,0xf7}; //四个数码管的位置
num数组中存储了0~9的数码管显示值,pos数组中存储了四个数码管的位置,在程序中会循环使用这两个数组来实现动态显示。
然后定义一个函数实现数码管显示,函数中使用循环语句逐位输出数码管的值,如下所示:
void show(unsigned int x) //数码管显示函数
{
unsigned char i;
for(i=0;i<4;i++)
{
P1OUT=num[x%10]; //输出数码管显示值
P1OUT|=pos[i]; //输出数码管位置
__delay_cycles(500); //延时
P1OUT&=0x0f; //清除数码管位置
x/=10; //下一位
}
}
在主函数中,使用一个循环不断调用show函数实现数码管动态显示,如下所示:
void main(void)
{
WDTCTL=WDTPW+WDTHOLD; //停用看门狗定时器
P1DIR=0xff; //P1口全部设置为输出
while(1)
{
unsigned int i;
for(i=0;i<10000;i++) //循环10000次
{
show(i); //调用数码管显示函数
}
}
}
程序中使用了循环语句实现了数码管的动态显示,每次循环调用show函数输出一个数字,并在下次循环前延时一段时间。
3. 程序下载
将程序下载至MSP430G2553单片机中,可以看到数码管动态显示了0~9999的数字。
阅读全文