2529|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430 驱动DS1302和LCD1602 [复制链接]


#include "MSP430F149.h"
/*****************************************软件延时************************************/
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
/**************************************************************************************/
#define uint unsigned int
#define uchar unsigned char
#define DSCLKH P2OUT |= 0X01;
#define DSCLKL P2OUT &=~ 0X01;
#define DSDAH P2OUT |= 0X02;
#define DSDAL P2OUT &=~ 0X02;
#define DSRSTH P2OUT |= 0X04;
#define DSRSTL P2OUT &=~ 0X04;
#define LCDDATE    P5OUT|=BIT5
#define LCDCOMD    P5OUT&=~BIT5;
#define LCDENH     P5OUT|=BIT7;
#define LCDENL     P5OUT&=~BIT7;
uchar table[];
uchar miao,aa,bb;
void delay(uint xms)
{
         unsigned int i,h;
         for (i = xms; i >0 ; i--)
           for(h=1140;h>0;h--);
}

void delaysome(uint xms)
{
  uint aa;
  for(aa=xms;aa>0;aa--);
}

void writedate(uchar date)
{
    LCDDATE;
    P4OUT = date;
    delay(10);
    LCDENH;
    delay(10);
    LCDENL;
}

void writecomd(uchar date)
{
    LCDCOMD;
    P4OUT = date;
    delay(10);
    LCDENH;
    delay(10);
    LCDENL;
}

void init()
{
    writecomd(0x38);
    writecomd(0x01);
    writecomd(0x0c);
    writecomd(0x06);
}

void dswrdate(uchar rr)
{
   uchar temp;
   P2DIR = 0XFF;
   DSRSTH;
   temp = rr;
   for(char xx=8;xx>0;xx--)
   {
   if(temp&0x01)
   {

     DSDAH;
      DSCLKL;
     _NOP();
     _NOP();
       _NOP();
      _NOP();  _NOP();
      _NOP();
     DSCLKH;
     _NOP();
     _NOP();
       _NOP();
      _NOP();  _NOP();
      _NOP();

   }
   else
   {

     DSDAL;
      DSCLKL;
     _NOP();
     _NOP();
       _NOP();
      _NOP();  _NOP();
      _NOP();
     DSCLKH;
     _NOP();
     _NOP();
       _NOP();
      _NOP();  _NOP();
      _NOP();
   }
   temp>>=1;
   }

}

char dsredate()
{

  uchar cc;
  for(uchar xx=8;xx>0;xx--)
  {
      P2DIR = 0XFF;

      DSCLKH;
        _NOP();
      _NOP();
        _NOP();
      _NOP();
        _NOP();
      _NOP();
        _NOP();
      _NOP();
        DSCLKL;
      _NOP();
      _NOP();
        _NOP();
      _NOP();
        _NOP();
      _NOP();
        _NOP();
      _NOP();
      P2DIR = 0X00;
      cc = cc|((P2IN&0X01)<<7);
      cc>>=1;
      _NOP();
        _NOP();
      _NOP();
  }
  return(cc);
}

void dsinit()
{
    P2DIR=0XFF;
    DSCLKL;
    DSRSTL;
    delay_ms(10);
    DSCLKH;
}

char dsreaddate(uchar add)
{
    P2DIR = 0XFF;
    uchar date;
    DSRSTL;
    DSCLKL;
    _NOP();
    DSRSTH;
    dswrdate(add);
    date = dsredate();
    DSCLKH;
    DSRSTL;
    return(date);
}

void dswritedate(uchar add,uchar date)
{
    P2DIR = 0XFF;
    DSRSTL;
    DSCLKL;
    DSRSTH;
    dswrdate(add);
    dswrdate(date);
    DSCLKH;
    DSRSTL;
}
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  BCSCTL2|=SELS;
   BCSCTL1 &=~ XT2OFF;
  do
  {
    uchar bb;
    IFG1 &=~ OFIFG;
    for(bb=0xff;bb>0;bb--);
  }
  while((IFG1&OFIFG)!=0);
  BCSCTL2|=SELM_2+SELS+DIVS_3;

  P4SEL = 0x00;
  P4DIR = 0xFF;                   //数据口输出模式
  P5SEL = 0x00;
  P5DIR|= BIT5 + BIT6 + BIT7;
  P5OUT&=~BIT6;
  LCDENL;
  _EINT();//控制口设置为输出模式
  init();
   dsinit();
   dswritedate(0x8e,0x00);
   dswritedate(0x90,0xa9);
   dswritedate(0x8c,0x50);
   dswritedate(0x8a,0x02);
   dswritedate(0x88,0x02);
   dswritedate(0x86,0x10);
   dswritedate(0x84,0x10);
   dswritedate(0x82,0x10);
   dswritedate(0x80,0x10);
   dswritedate(0x8e,0x80);
  while(1)
  {
      aa=dsreaddate(0x81);

      writecomd(0x80);
      writedate(0x30+aa/26);
      writedate(0x30+aa%16);

  }
}
驱动不正常  哪位大神给看看。。。。O(∩_∩)O谢谢
 
点赞 关注

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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