444|1

1427

帖子

0

资源

纯净的硅(高级)

基于msp430的点阵显示设计 [复制链接]

单片机用的是ti的Launchpad msp430,点阵是8*8点阵,驱动芯片是两个74HC595;

image.png image.png

#include<msp430.h>
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;
        }
    }
}

 


回复

3131

帖子

0

资源

纯净的硅(高级)

基础例程,不错的分享啊


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/8 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表