MSP430技术论坛
直播中

633861

12年用户 166经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[经验]

基于msp430的点阵显示设计

` 本帖最后由 liu1032042013 于 2015-1-2 16:56 编辑

单片机用的是ti的Launchpad msp430,点阵是8*8点阵,驱动芯片是两个74HC595;视频连接:http://pan.baidu.com/s/1c0gu620               原理图见附件

#include
const unsigned char  tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
const unsigned char  digittab[10][8]={   //字模取模方式 阴码 逆向 逐列式
{0x7C,0x55,0x5F,0x45,0x5F,0x55,0x7C,0x00},/*"西",0*/

{0x16,0x12,0xB2,0x5B,0xB6,0x12,0x12,0x16},/*"安",1*/

{0x7C,0x54,0x7F,0x54,0x7C,0xFE,0x2A,0x3E},/*"邮",2*/

{0x00,0x3E,0x2A,0xFF,0xAA,0xBE,0xC0,0x00},/*"电",3*/

{0x44,0x24,0x14,0x0F,0x14,0x24,0x44,0x00},/*"大",4*/

{0x06,0x23,0xAA,0xAB,0xFA,0x23,0x22,0x06},/*"学",5*/

{0x00,0x00,0x3E,0x49,0x49,0x32,0x00,0x00},/*"6",6*/

{0x00,0x00,0x03,0x71,0x09,0x07,0x00,0x00},/*"7",7*/

{0x00,0x00,0x36,0x49,0x49,0x36,0x00,0x00},/*"8",8*/

{0x00,0x00,0x26,0x49,0x49,0x3E,0x00,0x00},/*"9",9*/
};
unsigned int timecount;
unsigned char cnta;
unsigned char cntb;
#define SD_H      P1OUT|=BIT4;        //串行数据输入
#define SD_L      P1OUT&=~BIT4;
#define ST_H    P1OUT|=BIT5;        //存储寄存器时钟输入
#define ST_L    P1OUT&=~BIT5;
#define SH_H    P1OUT|=BIT6;   //移位寄存器时钟输入
#define SH_L    P1OUT&=~BIT6;

void Ser_IN(unsigned char Data)
{
        unsigned char i;
        for(i=0; i < 8; i++)
        {
                SH_L;                        //CLOCK_MAX=100MHz
                if(Data&0x80)
                {
                    SD_H;
                }
                else
                {
                    SD_L;
                }
                Data <<= 1;
                SH_H;
        }
}
void Par_OUT(void)
{
        ST_L;
        ST_H;
}
void sysclock()
{
   TACTL=TASSEL0+TACLR;
   CCTL0=CCIE;
   CCR0=2000;
   TACTL|=MC0;
   _EINT();
   //LPM0;
}
void main()
{
    WDTCTL=WDTPW+WDTHOLD;
    P1SEL&=~(BIT4+BIT5+BIT6);
    P1DIR|=BIT4+BIT5+BIT6;
    sysclock();
    while(1)
    {
        Ser_IN(tab[cnta]);//8X8点阵列扫描
        Ser_IN(digittab[cntb][cnta]);//8X8点阵行送扫描数据
        Par_OUT();//74HC595输出显示
        cnta++;
        if(cnta==8)
       {
        cnta=0;
       }         
    }

}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void timeA0(void)
{
       // Ser_IN(tab[cnta]);//8X8点阵列扫描
        //Ser_IN(digittab[cntb][cnta]);//8X8点阵行送扫描数据
        //Par_OUT();//74HC595输出显示        
        //cnta++;

   timecount++;
  if(timecount==1)
   {
      timecount=0;
      cntb++;
    if(cntb==6)
        {
          cntb=0;
        }
    }
}


` 点阵原理图.jpg 实物图.JPG

回帖(27)

xxh2009

2014-12-28 12:56:54
学习了。感谢。
举报

ezss

2015-4-23 16:22:08

沙发 我fei跃过 发表于 2014-5-15 09:32:24
谢谢楼主顶一个很好
举报

杜嘟嘟

2015-4-27 13:05:01
不错不错,谢谢楼主
举报

九天浴火龙

2015-4-28 06:37:51
谢谢分享自己资料,THX
举报

小翔哥

2015-5-9 17:08:33
学习 学习 谢谢分享 论坛有你更精彩
举报

小翔哥

2015-5-9 17:08:44
学习 学习 谢谢分享 论坛有你更精彩
举报

花木成畦

2015-5-12 21:00:45
楼主,如果是16*16的点阵,程序需要哪些修改呢?求教!
举报

633861

2015-5-19 11:47:13
引用: 花木成畦 发表于 2015-5-12 21:00
楼主,如果是16*16的点阵,程序需要哪些修改呢?求教!

不好意思,我没用过16*16的,你可以比较一下8*8的和16*16的点阵有哪些不同,然后再找一些资料看看,参考着我这些东西去改改,就好了
举报

青苹果IPAD

2015-5-26 14:40:43
手里也有几块点阵的板子,有时间参考楼主的程序点亮一下。
举报

斗牛士223

2015-5-29 22:29:41
学习                                                            
举报

李洁雯

2015-12-23 15:58:32
留着,有用,准备开始要做
举报

李洁雯

2015-12-23 16:12:04
不错,想下载,下载不了
举报

高强

2015-12-27 20:55:41
谢谢楼主分享
举报

h1654155919.9174

2016-1-7 10:07:41
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

antimatter2333

2016-4-6 13:56:47
为什么我用MSP430 F249
举报

antimatter2333

2016-4-6 13:57:00
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

633861

2016-4-8 22:49:27
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

633861

2016-4-8 22:50:07
引用: antimatter2333 发表于 2016-4-6 13:56
为什么我用MSP430 F249

都一样的,肯定能用
举报

antimatter2333

2016-4-10 11:12:19
引用: liu1032042013 发表于 2016-4-8 22:49
不知道,没用过

应该是软件的问题
举报

更多回帖

发帖
×
20
完善资料,
赚取积分