社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 1251|回复: 11

[求助] 16位PIC单片机

[复制链接]

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-9 17:13:51 | 显示全部楼层 |阅读模式
#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上时显示屏不能正常显示 屏幕出现闪动     不知道是为什么?    与配置位和端口复用有关吗

此帖出自PIC单片机论坛


回复

使用道具 举报

2863

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2017-1-9 18:07:30 | 显示全部楼层
两个芯片的时钟一样吗?

点评

晶振不是一样的 2420用的4M PIC24FV32KA304用的8M 我之前给2420换过8M的晶振也能正常显示  详情 回复 发表于 2017-1-9 18:30


回复

使用道具 举报

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-9 18:29:15 | 显示全部楼层
您是指的晶振频率这一块吗?


回复

使用道具 举报

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-9 18:30:17 | 显示全部楼层
suoma 发表于 2017-1-9 18:07
两个芯片的时钟一样吗?

晶振不是一样的  2420用的4M   PIC24FV32KA304用的8M  我之前给2420换过8M的晶振也能正常显示


回复

使用道具 举报

3404

TA的帖子

11

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2017-1-9 20:25:25 | 显示全部楼层
除了单片机本身,对外的接口,连接的电路,两种情况是否一样。先确保一样。再看两种情况的时序是否一致,你说复用是不是和屏幕通信的io复用了别的功能? 看复用有没有破坏原有时序,先把其它功能去掉,看看效果。

点评

我感觉是时序的事 我测了一下 8M晶振 我的一条空指令大约是4us 不是1us吗  详情 回复 发表于 2017-1-10 11:40


回复

使用道具 举报

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-10 11:40:08 | 显示全部楼层
ienglgge 发表于 2017-1-9 20:25
除了单片机本身,对外的接口,连接的电路,两种情况是否一样。先确保一样。再看两种情况的时序是否一致,你 ...

我感觉是时序的事   我测了一下 8M晶振 我的一条空指令大约是4us    不是1us吗

点评

cpu的主频和晶振频率不见得一样。要看对应的配置寄存器。分频,倍频什么的。既然能看波形,就把正常和不正常的波形都看看,就比较出区别来了。  详情 回复 发表于 2017-1-10 13:24


回复

使用道具 举报

3404

TA的帖子

11

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2017-1-10 13:24:53 | 显示全部楼层
shimingyan1992 发表于 2017-1-10 11:40
我感觉是时序的事   我测了一下 8M晶振 我的一条空指令大约是4us    不是1us吗

cpu的主频和晶振频率不见得一样。要看对应的配置寄存器。分频,倍频什么的。既然能看波形,就把正常和不正常的波形都看看,就比较出区别来了。

点评

我用的75LS164 发现不正常的时钟脉冲有丢失 我用的16位的PIC 8M晶振 配置字该如何设置啊  详情 回复 发表于 2017-1-10 13:41
我用的75LS164 发现不正常的时钟脉冲有丢失 我用的16位的PIC 8M晶振 配置字该如何设置啊  详情 回复 发表于 2017-1-10 13:41


回复

使用道具 举报

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-10 13:41:43 | 显示全部楼层
ienglgge 发表于 2017-1-10 13:24
cpu的主频和晶振频率不见得一样。要看对应的配置寄存器。分频,倍频什么的。既然能看波形,就把正常和不 ...

我用的75LS164 发现不正常的时钟脉冲有丢失   我用的16位的PIC 8M晶振   配置字该如何设置啊

点评

看手册关于时钟配置的部分啊,时钟树框图,还有选择时钟源,频率的设置。我给你的别的型号的手册中,相关内容的截图,你找你的手册里,肯定有这些东西,哪个寄存器,哪个位怎么配,都有说明。好好找找。  详情 回复 发表于 2017-1-10 21:33


回复

使用道具 举报

40

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-10 13:41:54 | 显示全部楼层
ienglgge 发表于 2017-1-10 13:24
cpu的主频和晶振频率不见得一样。要看对应的配置寄存器。分频,倍频什么的。既然能看波形,就把正常和不 ...

我用的75LS164 发现不正常的时钟脉冲有丢失   我用的16位的PIC 8M晶振   配置字该如何设置啊


回复

使用道具 举报

3404

TA的帖子

11

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2017-1-10 21:33:35 | 显示全部楼层
shimingyan1992 发表于 2017-1-10 13:41
我用的75LS164 发现不正常的时钟脉冲有丢失   我用的16位的PIC 8M晶振   配置字该如何设置啊

看手册关于时钟配置的部分啊,时钟树框图,还有选择时钟源,频率的设置。我给你的别的型号的手册中,相关内容的截图,你找你的手册里,肯定有这些东西,哪个寄存器,哪个位怎么配,都有说明。好好找找。
QQ截图20170110212855.png
QQ截图20170110213048.png
QQ截图20170110213136.png


回复

使用道具 举报

433

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-18 22:48:10 | 显示全部楼层
用示波器看看三个IO口的波形和原来板子的区别,在对症下药


回复

使用道具 举报

10

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-2-4 11:30:43 | 显示全部楼层
首先确认配置端口是否正确,一般换芯片都是配置出现问题的多。


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-4-25 08:30 , Processed in 0.394578 second(s), 22 queries , Redis On.

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