打印

DSP2812 显示1602的问题

[复制链接]
790|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hongwei258258|  楼主 | 2015-9-15 21:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "DSP28_Device.h"    //有问题
#define          D0            GpioDataRegs.GPFDAT.bit.GPIOF0 ////串行数据输出高
#define          D1            GpioDataRegs.GPFDAT.bit.GPIOF1 ////串行数据输出高
#define          D2            GpioDataRegs.GPFDAT.bit.GPIOF9 ////串行数据输出高
#define          D3            GpioDataRegs.GPFDAT.bit.GPIOF8 ////串行数据输出高
#define          D4            GpioDataRegs.GPFDAT.bit.GPIOF13 ////串行数据输出高
#define          D5            GpioDataRegs.GPFDAT.bit.GPIOF12 ////串行数据输出高
#define          D6            GpioDataRegs.GPFDAT.bit.GPIOF11 ////串行数据输出高
#define          D7            GpioDataRegs.GPFDAT.bit.GPIOF10 ////串行数据输出高

#define          RS            GpioDataRegs.GPFDAT.bit.GPIOF2 ////串行数据输出高
#define          EN             GpioDataRegs.GPFDAT.bit.GPIOF3 ////串行数据输出高

#define   uint   unsigned int
#define   uchar  unsigned char

void LCD_disp_char(uchar x,uchar y,uchar dat);  //x=0-16,y=1-2
void WriteLcdCom(unsigned char c);
void WriteLcdDat(unsigned char d);
void delay(unsigned int data);

/*要显示的字符*/
unsigned int k;
unsigned char str1[]={"1234567890123456"};
unsigned char str2[]={"1234123412341234"};


/*主函数*/
void main(void)
{
        /*初始化系统*/
        InitSysCtrl();
        /*关中断*/
        DINT;
        IER = 0x0000;
        IFR = 0x0000;
        /*初始化PIE*/
        InitPieCtrl();
        /*初始化PIE中断矢量表*/
        InitPieVectTable();       
        /*Gpio初始化函数*/
    InitGpio();

     delay(2000);

     EN=0;  //开始时和结束时都为低电平,写指令或者数据中为高电平,1-0执行指令

         WriteLcdCom(0x38);                //显示模式设置
         WriteLcdCom(0x0c);                //开显示,无光标,光标不闪烁
         WriteLcdCom(0x06);                //读写字符后地址指针加一设置
         WriteLcdCom(0x01);                //清屏

       
        /*        WriteLcdCom(0x01);        //清屏
                           
                 WriteLcdCom(0x80);        //第一行数据指针地址
                for(k=0;k<16;k++)   //16个字节
        {
                      WriteLcdDat(str1[k]);
            delay(200);
        }   
     */   
                WriteLcdCom(0xc0);         //第二行数据指针的地址
                for(k=0;k<16;k++)
                    {
                      WriteLcdDat(str2[k]);
                      delay(200);
                    }
        /*
        LCD_disp_char(5,1,'a');
        delay(10000);
    */
          
}         

/*************显示一个字符函数*********/
void LCD_disp_char(uchar x,uchar y,uchar dat)
{
   uchar address;
   if(y==1)
      address=0x80+x;
   else
      address=0xc0+x;
   WriteLcdCom(address);
   WriteLcdDat(dat);
}


/**************写地址函数*****************/
void WriteLcdCom(unsigned char str)
{
    RS=0; //写指令
   if(str&0x01)//并行口8位二进制数据一起写,不需要延时
     D0=1;
   else
     D0=0;    //先写高位还是地位??

   if(str&0x02)
     D1=1;
   else
     D1=0;

   if(str&0x04)
     D2=1;
   else
     D2=0;

   if(str&0x08)
     D3=1;
   else
     D3=0;

   if(str&0x10)
     D4=1;
   else
     D4=0;

   if(str&0x20)
     D5=1;
   else
     D5=0;

   if(str&0x40)
     D6=1;
   else
     D6=0;

   if(str&0x80)
     D7=1;
   else
     D7=0;

  EN=1;   //1-0下降沿 执行指令
  delay(1);
  EN=0;      //20很长时间
  delay(20);  //执行完指令后,为低电平
}

/**************写数据函数*****************/
void WriteLcdDat(unsigned char str)
{
    RS=1;//写数据
   if(str&0x01)
     D0=1;
   else
     D0=0;

   if(str&0x02)
     D1=1;
   else
     D1=0;

   if(str&0x04)
     D2=1;
   else
     D2=0;

   if(str&0x08)
     D3=1;
   else
     D3=0;

   if(str&0x10)
     D4=1;
   else
     D4=0;

   if(str&0x20)
     D5=1;
   else
     D5=0;

   if(str&0x40)
     D6=1;
   else
     D6=0;

   if(str&0x80)
     D7=1;
   else
     D7=0;

  EN=1;
  delay(1);
  EN=0;
  delay(20);
}

/*延时函数*/
void delay(unsigned int data)
{
     unsigned int delayt;
     while(data--)
      {
        for(delayt=0;delayt<100;delayt++);
      }  
}

//===========================================================================
// No more.
//===========================================================================

        LCD_disp_char(5,1,'a');这条语句中为什么第三个一定要加引号,我不加引号显示的是乱码 它不是char么?  不加引号应该可以的啊。不加引号源程序要怎么改~~急求要做一个AD采集显示的 搞了好几天都没搞出来





相关帖子

沙发
zhangmangui| | 2015-9-15 23:12 | 只看该作者
字符和字符串的区别啊   ""   ''

使用特权

评论回复
板凳
hongwei258258|  楼主 | 2015-9-16 12:40 | 只看该作者
zhangmangui 发表于 2015-9-15 23:12
字符和字符串的区别啊   ""   ''

我就是想问没有单引号为什么不可以?  能不能说详细点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

11

帖子

1

粉丝