[问答] 为什么这个基于MSP430F5529的LCD12864显示程序没反应呢?

[复制链接]

实习生

发表于 7 天前   150 查看 0 回复 显示全部楼层 倒序浏览
分享
本帖最后由 Gramymonk 于 2018-7-12 14:35 编辑

#include "msp430.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 uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
/*12864应用指令*/
#define CLEAR_SCREEN        0x01                    //清屏指令:清屏且AC值为00H
#define AC_INIT                0x02                    //将AC设置为00H。且游标移到原点位置
#define CURSE_ADD        0x06                    //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)
#define FUN_MODE        0x30                    //工作模式:8位基本指令集
#define DISPLAY_ON        0x0c                    //显示开,显示游标,且游标位置反白
#define DISPLAY_OFF        0x08                    //显示关
#define CURSE_DIR        0x14                    //游标向右移动:AC=AC+1
#define SET_CG_AC        0x40                    //设置AC,范围为:00H~3FH
#define SET_DD_AC        0x80
#define RS_CLR        P2OUT &= ~BIT7       //RS置低
#define RS_SET        P2OUT |= BIT7         //RS置高
#define RW_CLR        P2OUT &= ~BIT6       //RW置低
#define RW_SET        P2OUT |= BIT6         //RW置高
#define EN_CLR        P2OUT &= ~BIT5        //E置低
#define EN_SET        P2OUT |= BIT5         //E置高
#define PSB_CLR                P1OUT &= ~BIT5            //PSB置低,串口方式
#define PSB_SET                P1OUT |=  BIT5            //PSB置高,并口方式
#define DataPort      P3OUT              //P3口为数据口
//*************************************************************************
//                    系统时钟初始化
//*************************************************************************
void Clock_Init()
{
  UCSCTL1 = DCORSEL_2;                             //  设置DCO范围
  UCSCTL3 |= SELREF_2;                             //  选择FLL参考源自REFO
  UCSCTL4 = SELM_3 + SELA_2 + SELS_4;              //  配置 MCLK = DCOC,SMCLK =DCODIV,ACLK=REFO
  while (SFRIFG1 & OFIFG)                          //  清除 OFIFG,and  XT1OFFG ,DCOFFG
    {
      UCSCTL7 &= ~(  XT1LFOFFG + DCOFFG);
      SFRIFG1 &= ~OFIFG;
    }
}
//*************************************************************************
//              MSP430内部看门狗初始化
//*************************************************************************
void WDT_Init()
{
   WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
}
//*************************************************************************
//                        初始化IO口子程序
//*************************************************************************
void Port_init()
{
        P3SEL = 0x00;
        P3DIR = 0xFF;
        P2SEL = 0x00;
        P2DIR|= BIT5 + BIT6 + BIT7;
        PSB_SET;
}
//***********************************************************************
//        显示屏命令写入函数
//***********************************************************************
void LCD_write_com(unsigned char com)
{
        RS_CLR;
        RW_CLR;
        EN_SET;
        DataPort = com;
        delay_ms(5);
        EN_CLR;
}
//***********************************************************************
//        显示屏数据写入函数
//***********************************************************************
void LCD_write_data(unsigned char data)
{
        RS_SET;
        RW_CLR;
        EN_SET;
        DataPort = data;
        delay_ms(5);
        EN_CLR;
}
//***********************************************************************
//        显示屏清空显示
//***********************************************************************
void LCD_clear(void)
{
        LCD_write_com(0x01);
        delay_ms(5);
}
//***********************************************************************
//函数名称:DisplayCgrom(uchar hz)显示CGROM里的汉字
//***********************************************************************
void DisplayCgrom(uchar addr,uchar *hz)
{
        LCD_write_com(addr);
        delay_ms(5);
        while(*hz != '\0')
        {
                LCD_write_data(*hz);
                hz++;
                delay_ms(5);
        }
}
//****************************************************************
//函数名称:Display()显示测试结果
//****************************************************************
void Display(void)
{
        DisplayCgrom(0x80,"测试程序");
        DisplayCgrom(0x88,"helloworld");
        DisplayCgrom(0x90,"helloworld");
        DisplayCgrom(0x98,"12344667");
}
//***********************************************************************
//        显示屏初始化函数
//***********************************************************************
void LCD_init(void)
{
        LCD_write_com(FUN_MODE);                        //显示模式设置
        delay_ms(5);
        LCD_write_com(FUN_MODE);                        //显示模式设置
        delay_ms(5);
        LCD_write_com(DISPLAY_ON);                        //显示开
        delay_ms(5);
        LCD_write_com(CLEAR_SCREEN);                        //清屏
        delay_ms(5);
}
//***********************************************************************
//      主程序
//***********************************************************************
void main(void)
{
        WDT_Init();                                   //看门狗设置
        Clock_Init();                                 //系统时钟设置
        Port_init();                                  //系统初始化,设置IO口属性
        delay_ms(100);                                //延时100ms
        LCD_init();                                   //液晶参数初始化设置
        LCD_clear();                                  //清屏
        while(1)
        {
        Display();                                    //显示汉字
        }
}


P3.0~P3.7为普通输出I/O口,P2.5,P2.6,P2.7为控制口,P1.5为PSB,RST悬空
第一次接后LCD正常,在几次重新接线后就没反应了
标签:MSPF5529

实习生

发表于 7 天前    楼主|
本帖最后由 Gramymonk 于 2018-7-12 14:37 编辑

求教!!!!
回复

举报

高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

PIC单片机论坛

DSP论坛

瑞萨单片机论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

电子展览展会专区

芯片求购|供应发布区