基于msp430g2553四位数码管流动显示数字21010814,四位八段数码管型号 3641AS,是 4 位共阴型数码管,代码怎么写
时间: 2024-03-26 09:35:50 浏览: 65
MSP430在八个数码管实现0-7显示
您可以参考以下代码实现基于msp430g2553四位数码管流动显示数字21010814:
```c
#include <msp430g2553.h>
#define uchar unsigned char
#define uint unsigned int
uchar code[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; // 数码管段码表
void delay(uint n) // 延时函数,n为延时时间
{
uint i;
for(i = 0; i < n; i++);
}
void main(void)
{
uchar i, j, k, l; // 定义四个变量分别代表千位、百位、十位和个位的数码
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
P1DIR |= 0xF0; // P1.4~P1.7设置为输出
P2DIR |= 0x3F; // P2.0~P2.5设置为输出
while(1)
{
for(i = 0; i < 10; i++) // 千位
{
for(j = 0; j < 10; j++) // 百位
{
for(k = 0; k < 10; k++) // 十位
{
for(l = 0; l < 10; l++) // 个位
{
P1OUT |= 0xF0; // 将P1.4~P1.7全部置高,关闭数码管
P2OUT |= 0x3F; // 将P2.0~P2.5全部置高,关闭数码管
P1OUT &= ~0x10; // 将P1.4置低,打开千位数码管
P2OUT = code[i]; // 显示千位数码
delay(200); // 延时一段时间
P1OUT |= 0x10; // 将P1.4置高,关闭千位数码管
P1OUT &= ~0x20; // 将P1.5置低,打开百位数码管
P2OUT = code[j]; // 显示百位数码
delay(200); // 延时一段时间
P1OUT |= 0x20; // 将P1.5置高,关闭百位数码管
P1OUT &= ~0x40; // 将P1.6置低,打开十位数码管
P2OUT = code[k]; // 显示十位数码
delay(200); // 延时一段时间
P1OUT |= 0x40; // 将P1.6置高,关闭十位数码管
P1OUT &= ~0x80; // 将P1.7置低,打开个位数码管
P2OUT = code[l]; // 显示个位数码
delay(200); // 延时一段时间
P1OUT |= 0x80; // 将P1.7置高,关闭个位数码管
}
}
}
}
}
}
```
注意,这是一个基础的流动显示代码,它会按照千位、百位、十位、个位的顺序依次显示数字21010814,您可以根据自己的需求进行修改。此外,由于使用的是共阴型数码管,因此在代码中需要将P1.4~P1.7和P2.0~P2.5全部置高才能关闭数码管。
阅读全文