打印
[PIC®/AVR®/dsPIC®产品]

PIC 驱动1602程序,显示一排方块,大家帮忙看看啥问题

[复制链接]
1504|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 haorenyigea 于 2014-6-10 14:56 编辑

#include "pic.h"

__CONFIG(FOSC_INTOSC&CLKOUTEN_OFF&MCLRE_ON&WDTE_OFF);//&PWRTE_ON&BOREN_ON

#define _XTAL_FREQ      4000000L            //内部4MHz

#define uint unsigned int
#define uchar unsigned char

#define RS RB0
#define RW RB1
#define EN RB2
#define BLK_CON RB4

uchar table[]="LCD1602 check ok";
uchar table1[]="study up";
//*******************************************************************//
//                          系统初始化
//*******************************************************************//


void System_Init(void)
{
        OSCCON = 0b01101000;            //内部4MHz
        OSCTUNE= 0b00000000;            //出厂校准

   
        TRISA  = 0b00000000;            //RA0-RA3输出、RA5输入
        ANSELA = 0b00000000;            //RA5 模拟输入  
                  
        TRISB  = 0b00000000;            //RB0-RB3触摸按键
        ANSELB = 0b00000000;            //4个触摸按键
        WPUB   = 0b00000000;            //无上拉
   
        IOCBP  = 0b00000000;            //关电平变化中断
        IOCBN  = 0b00000000;
        
        TRISD  = 0b00000000;            //PORTD输出
        ANSELD = 0b00000000;            //数字  I/O
   
        TRISC  = 0b10011000;            //串口 I2C
   
        TRISE  = 0b00000000;            //PORTE输出
        ANSELE = 0b00000000;            //数字  I/O
        WPUE   = 0b00000000;            //无上拉

}
        

//*******************************************************************//
//                             主程序部分
//*******************************************************************//


void delay(uint n)
{  uint  i;
   uchar j;
     for(i=0;i<n;i++)
                {asm("CLRWDT");
       for(j=0;j<100;j++);
                }
}
void lcd_wcom(uchar com)
{
        RS=0;
        RW=0;
        PORTD=com;
        delay(5);
        EN=1;
        EN=0;
}
void lcd_wdat(uchar dat)
{
        RS=1;
        RW=0;
        PORTD=dat;
        delay(5);
        EN=1;
        EN=0;
}


bit lcd_check_busy()
{
        static bit busy_flag;
        RS=0;
        RW=1;
        EN=1;
        asm("nop");
        asm("nop");
        asm("nop");
        if(PORTD&0X80)
        busy_flag=1;
        else
        busy_flag=0;
        EN=0;
        return busy_flag;
}



void lcd_init()
{
        
        lcd_wcom(0x38);
        delay(5);//稳定
//        lcd_wcom(0x01);//清屏
        lcd_wcom(0x0c); //开显示,不显示光标
        lcd_wcom(0x06); //写数据后地址自动后移
        lcd_wcom(0x01); //显示指针起始位置               
}

void LCD_Write_Char(uchar x,uchar y,uchar s)
{
        if(x==1)
                lcd_wcom(0x80+y);
        else
                lcd_wcom(0xc0+y);
        lcd_wdat(s);
}
void LCD_Write_String(uchar x,uchar y,uchar *s)
{
        if(x==1)
                lcd_wcom(0x80+y);
        else
                lcd_wcom(0xc0+y);
        while(*s)
        {
                lcd_wdat(*s);
                s++;
        }
}
void main (void)
{
System_Init();

lcd_init();
uchar n,m=0;
lcd_wcom(0x80);



for(m=0;m<16;m++)
{
        lcd_wdat(table[m]);
        delay(200);
}
lcd_wcom(0x80+0x44);
for(n=0;n<8;n++)
{
        lcd_wdat(table1[n]);
        delay(200);
}
while(1);



QQ截图20140610145515.jpg (249.02 KB )

QQ截图20140610145515.jpg
沙发
lzhp1999| | 2014-6-10 14:16 | 只看该作者
只发个程序谁看的出来,你那个脚啥功能都不知道。一般是并口8位。还是比较简单。

使用特权

评论回复
板凳
haorenyigea|  楼主 | 2014-6-10 14:56 | 只看该作者
lzhp1999 发表于 2014-6-10 14:16
只发个程序谁看的出来,你那个脚啥功能都不知道。一般是并口8位。还是比较简单。 ...

上图了。。

使用特权

评论回复
地板
lx911gt| | 2014-6-10 16:51 | 只看该作者
如果程序没问题的话,调节一下1602的亮度,我第一次用1602的时候怎么弄都是大黑格,后来扭了几下调亮度的电位器就好了

使用特权

评论回复
5
haorenyigea|  楼主 | 2014-6-10 17:28 | 只看该作者
晕了  为啥KIT3 不能在线仿真1602 ?程序下进去就正常了,真是奇怪,耽误一下午时间

使用特权

评论回复
6
小鱼儿1045| | 2014-6-10 17:34 | 只看该作者
貌似不能在线仿真,我的也不行

使用特权

评论回复
7
haorenyigea|  楼主 | 2014-6-11 08:29 | 只看该作者
小鱼儿1045 发表于 2014-6-10 17:34
貌似不能在线仿真,我的也不行

哇 都是这样啊 还好后来下载了,否则不知道要折腾几天呢

你还遇到过别的不能仿真的外设吗?

使用特权

评论回复
8
haorenyigea|  楼主 | 2014-6-11 08:31 | 只看该作者
lx911gt 发表于 2014-6-10 16:51
如果程序没问题的话,调节一下1602的亮度,我第一次用1602的时候怎么弄都是大黑格,后来扭了几下调亮度的电 ...

哦 调电位器也能改变黑块的问题啊,我的直接接地,下载程序后,显示正常

使用特权

评论回复
9
小鱼儿1045| | 2014-6-11 08:43 | 只看该作者
haorenyigea 发表于 2014-6-11 08:29
哇 都是这样啊 还好后来下载了,否则不知道要折腾几天呢

你还遇到过别的不能仿真的外设吗? ...

ICD2 和PICkit2、3都用过,多貌似不能在线仿真!郁闷

使用特权

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

本版积分规则

12

主题

32

帖子

0

粉丝