微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 16位PIC单片机的问题

16位PIC单片机的问题

时间:10-02 整理:3721RD 点击:

#define SCL_1  PORTAbits.RA11  //74ls164

#define SDA_1  PORTAbits.RA10

#define E      PORTBbits.RB13    //lcd

#define RS     PORTBbits.RB12

#define LCD    PORTBbits.RB11

void delay_us(unsigned int j)

{

   unsigned int i;

   for(i=0;i++;i<j)

   {

    Nop();   

   }

}

void __delay_ms(unsigned int i)              

{

  unsigned int j;

  for(;i>0;i--)

  for(j=0;j<130;j++);                     

}

void write_command(unsigned char data)//lcd写指令

{

  unsigned char i ,temp;

  for(i=0;i<8;i++)

{

   temp=data;

   temp&=0x80;

   if(temp==0x80)

   SDA_1=1;

     else

      SDA_1=0;

      data=data<<1;

      SCL_1=0;

    // __delay_us(1);

      delay_us(1);

      SCL_1=1;

}

  RS=0;

  E=1;

//  __delay_us(1);

    delay_us(1);


   E=0;

}

void write_data(unsigned char data) //lcd写数据

{

    unsigned char i ,temp;

    for(i=0;i<8;i++)

    {

      temp=data;

      temp&=0x80;

      if(temp==0x80)

        SDA_1=1;

        else

         SDA_1=0;

         data=data<<1;

         SCL_1=0;

        //__delay_us(1);

         delay_us(1);

         SCL_1=1;

     }

      RS=1;

      E=1;

//  __delay_us(1);

     delay_us(1);

      E=0;

}

void lcd_write_char(unsigned char x, unsigned char y,unsigned char dat)

{


     write_data(dat);


}

void lcd_init(void)

{

    write_command(0x01);  /*清除显示*/

    __delay_ms(10);

    write_command(0x38);  /*设置 8 位格式,2 行,5*7*/

    __delay_ms(10);

    write_command(0x0c);  /*整体显示,关光标,不闪烁*/

    __delay_ms(10);

    write_command(0x06);  /*设定输入方式,增量不移位*/

    __delay_ms(10);

}

void display2(void)

{

write_command(0xc0);  /*初始位置*/

lcd_write_char(0,2‘2’);

          lcd_write_char(1,2,‘3’);

          lcd_write_char(2,2,'.');

}

void init(void)

{

        PORTA=0x0000;

        TRISA=0x0000;

        PORTB=0x0000;

        TRISB=0xc000;  ///RB14 RB15  为输入

        PORTC=0x0000;

        TRISC=0x0001;  ////RC0为输入

        lcd_init();             ////液晶屏显示初始化

void main(void)

{

  init();

  while(1)

{

      write_command(0x38);  /*设置 8 位格式, 2行, 5*7*/

      write_command(0x0c);  /*整体显示,关光标,不闪烁*/

      write_command(0x06);  /*设定输入方式,增量不移位*/

       LCD=1;

       display2();

}

之前改程序用在PIC18F2420上能正常驱动1602正常显示(SDL_1    SCL_1 用的是74LS164)  但是现在把该程序用在PIC24FV32KA304上时显示屏不能正常显示 屏幕出现闪动     不知道是为什么?    与配置位和端口复用有关吗


MICROCHIP ATMEL代理 如需支持烦请联系 QQ776514862

dddddddddddddddddddddddddddddddddd

谢谢,小编提供的场地。
MICROCHIP 原装正品,另有可替换单片机(无需修改PCB资料,程序可共用PIC的) 有用到的兄弟多多支持!  电话13430885511(微信同号),QQ2355910801

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top