用msp430f4250让1602显示的问题

2019-07-22 17:16发布

我的主控芯片用的是msp430f4250,想让1602显示固定的数字1234,程序如下:
#include  <msp430f4250.h>//引用头文件
#define  uchar unsigned char
#define  uint unsigned int

void delay(long unsigned int n)
{uint i;
uchar j;
for(i=n;i>0;i--)
   for(j=0;j<2;j++);
     //延时子程序
}
void  WriteCommandLcd(unsigned char wdata)//向1602液晶写入命令子程序;
{
   
   P5OUT&=~0x10;//RS清零,代表命令;  
   P5OUT&=~0x08;//RW清零;   
   P5OUT&=~0x04;//使能E清零;
   delay(500); //短暂延时,代替检测忙状态
   P5OUT|= 0x04;//使能E置1;
   P2OUT=wdata;//送出命令或数据
   delay(500);//短暂延时,代替检测忙状态
   P5OUT&=~0x04;//使能E清零,下降沿将命令或数据送入1602;   
}
void  WriteDataLcd(unsigned  char wdata)//向1602液晶写入数据子程序;
{   
   P5OUT|= 0x10;//RS置1,代表数据;
   P5OUT&=~0x08;//RW清零;
   P5OUT&=~0x04;//使能E清零;
   delay(500); //短暂延时,代替检测忙状态
   P5OUT|= 0x04;//使能E置1;
   P2OUT=wdata;//送出命令或数据
   delay(500);//短暂延时,代替检测忙状态
   P5OUT&=~0x04;//使能E清零,下降沿将命令或数据送入1602;
}
//LCD初始化
void  lcd_init(void)
{
     delay(5000);
     WriteCommandLcd(0x38);//显示模式设置,设置为16X2显示,5X7点阵,8位数据接口
     delay(500);
     WriteCommandLcd(0x01); //显示清屏
     //WriteCommandLcd(0x0c); //开显示,关闭光标,当然光标也就不能显示了;(1)
     //WriteCommandLcd(0x0e); //开显示,显示光标,但是光标不闪烁;(2)
     WriteCommandLcd(0x0f); //开显示,显示光标,光标闪烁;(3)
     WriteCommandLcd(0x06); //读写操作时地址自动加1
}

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;  // 关闭看门狗复位
  while(1)
  {
  P2DIR = 0xff;//设置P2为输出状态
  P5DIR = 0xff;//设置P6为输出状态
  lcd_init();           //初始化子程序;
  WriteCommandLcd(0x80);//从第一行第一个位置开始显示数据,第一行第一个位置的地址是80H;
                        
  WriteDataLcd(0x30+0);//在第一行第一个位置显示数字0;让1602显示0必须向其送ASCII码,0的ASCII是30H;  
  WriteDataLcd(0x30+1);//在第一行第二个位置显示数字1;1的ASCII是31H,以下类推  
  WriteDataLcd(0x30+2);//显示数字2;
  WriteDataLcd(0x30+3);//显示数字3;
   
   while(1);//程序停
  }
}
我把程序下到板子里,背光亮,但是显示不出来数值,各位帮我看看是什么问题?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
像风儿一样清
2019-07-23 06:51
dirtwillfly 发表于 2016-4-23 21:28
找个逻辑分析仪或者示波器看看时序
这类程序最常见就是mcu的运行频率改变了,原来的程序就运行失败了 ...

虽然您的回复,没有解决我的问题,还是决定给分您,因为通过您的回答我还是学到了东西的

一周热门 更多>