[求助] MSP430控制数码管程序

聪明的诸葛亮   2017-5-10 18:53 楼主
用MSP430实现数码管显示
原理图作为附件发出,现在求助如何用IAR软件实现MSP430F149实现数码管显示,求助程序。

回复评论 (3)

不会就找个例程呗。你这问题,让人无法回答。 WCTR,DCTR,AD7--AD0控制好。你老这数据管是共阴还是共阳的? 假如是共阴的,那么显示过程是这样。 初始化过程: 1 --> WCTR; 1 --> DCTR; 0x00 --> AD; 0 --> DCTR; 0xff -- > AD; 0 --> WCTR; 1 --> WCTR; 1 --> DCTR; 下面是正式显示循环: 第1位显示数据-- >AD; 0 --> DCTR; 0xfe-- >AD; 0 --> WCTR; 延时10ms; 1 --> WCTR; 1 --> DCTR; 第2位显示数据-- >AD; 0 --> DCTR; 0xfd-- >AD; 0 --> WCTR; 延时10ms; 1 --> WCTR; 1 --> DCTR; 依此累推,直到8位全显示完。 第8位显示数据-- >AD; 0 --> DCTR; 0x7f-- >AD; 0 --> WCTR; 延时10ms; 1 --> WCTR; 1 --> DCTR; 本帖最后由 gs001588 于 2017-5-15 11:32 编辑
点赞  2017-5-15 11:24
怎么我看着这么郁闷呢!
点赞  2017-5-16 23:49
引用: 聪明的诸葛亮 发表于 2017-5-16 23:49
怎么我看着这么郁闷呢!


#include
#define CPU_F ((double)8000000)                    //内部延时函数所需要的时钟频率大小,单位为HZ   
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms级延时函数
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us级延时函数

#define LED8PORT P2OUT
#define LEDSEL   P2SEL
#define LED8DIR  P2DIR
//************************************************************************************
//            MSP 430单片机内部看门狗初始化函数
//************************************************************************************
void WDT_Init()
{
  WDTCTL = WDTPW + WDTHOLD;         //关闭看门狗
}
//************************************************************************************
//                          端口初始化函数
//************************************************************************************
void Port_Init()
{
LEDSEL  = 0X00;                 //设置P2口为普通I/O模式
LED8DIR = 0XFF;                 //设置P2孔输出模式
LED8PORT= 0XFF;                 //P2口初始值为0xff;
}
//************************************************************************************
//                          初始化时钟函数
//************************************************************************************
void Clock_Init()
{
  DCOCTL = DCO0 +DCO1+DCO2;     //
  BCSCTL1|=XT2OFF;             //基本时钟控制寄存器,关闭外部高频晶体
  BCSCTL1 =RSEL0 + RSEL1 + RSEL2;//最大频率为5M
}
void main(void)
{
WDT_Init();                     //看门狗初始化函数  
Clock_Init();                   //系统时钟初始化配置函数  
Port_Init();                    //端口初始化函数,用于控制LED灯I/O初始化

    while(1)
    {
     LED8PORT=0X00;             //LED灯点亮
     delay_ms(500);             //延时500ms
     LED8PORT=0XFF;             //LED灯关闭
     delay_ms(500);             //延时500ms
    }



我写的程序可都是这样,
下面是正式显示循环:
第1位显示数据-- >AD;
0 --> DCTR;
0xfe-- >AD;
0 --> WCTR;
延时10ms;
1 --> WCTR;
1 --> DCTR;

第2位显示数据-- >AD;
0 --> DCTR;
0xfd-- >AD;
0 --> WCTR;
延时10ms;
1 --> WCTR;
1 --> DCTR;
你这是什么意思?
点赞  2017-5-16 23:52
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复