原创 LCD1602显示(C语言)转战PIC

2009-5-12 16:27 2897 6 8 分类: MCU/ 嵌入式

https://static.assets-stash.eet-china.com/album/old-resources/2009/5/12/24889110-de14-4408-b3af-77e778a743b5.rarLCD1602显示(C语言)


/*显示"  Shan qing gong  "
       " tong xin 06-2 "    (呵呵,我是学通信的)
                lcd基本显示程序
四条数据线输入:DB4—RB0,DB5—RB1,DB6—RB2,DB7—RB3
寄存器选择RS接RB4,为"L"指令寄存器,为"H"数据寄存器
读写使能控制线E,接RE2,每当E线向LCD模块发送一个正脉冲,LCD模块与单片机之间将进行一次数据交换;
声明:之前一直在整51单片机,现在开始学PIC,整了一个液晶显示程序,和大家分享*/
//**********定义与声明*******************
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
#define E RE2
#define RS RB4
uchar i,num,byte,ys;

uchar const table[]="  Shan qing gong  ";          //为什么2009前面要空开两个才能显示后空开1个儿呢?这个定义要小心!一定要用uchar const,不要丢了uchar,也不要用code
uchar const table1[]=" tong xin 06-2 ";    //4第二数组定义初值
void lcd_init(void);
void writecom(char);
void writedata(char);

void delay(uint z)   //5延迟函数常用
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

//***************主函数*****************
void main()
{
lcd_init();

   while(1)
    {
      ;
   
    }
}
//*******lcd initial***************关于LCD的初始化
void lcd_init()
{
TRISB=0x00;
TRISE=0x00;
PORTB=0X00;
writecom(0x28);     //将LCD设置成4为数据方式,两行显示,5*7点阵
writecom(0x0C);     //显示控制:打开显示,
writecom(0x06);     //设置输入模式
writecom(0x01);     //清LCD
     writecom(0x80);
       for(num=0;num<16;num++)  //循环
                {
                        writedata(table[num]);
            
                        delay(1);
                }
        writecom(0x80+0x40);  //11液晶显示第二行时分秒
        for(num=0;num<15;num++)
                {
                        writedata(table1[num]);
         
                        delay(1);
                }
}
//********写命令控制*****************
void writecom(char i)
{
byte=i;
i=i>>4;
PORTB=i;
RS=0;
E=1;
for(ys=10;ys>0;ys--);
E=0;

PORTB=byte;
RS=0;
E=1;
for(ys=10;ys>0;ys--);
E=0;
}
//********写数据控制*****************
void writedata(char i)
{
byte=i;
i=i>>4;
PORTB=i;
RS=1;
E=1;
for(ys=10;ys>0;ys--);
E=0;

PORTB=byte;
RS=1;
E=1;
for(ys=10;ys>0;ys--);
E=0;
}
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2012-4-12 13:04

您好,想请教一下主函数里面的那个while是不是有错,我运行的时候总是在while里面循环

tengjingshu_112148725 2009-5-12 17:29

哈哈,什么单片机都被你玩转了
相关推荐阅读
用户1457811 2009-05-09 20:08
彻底征服LCD1602+DS1302
https://static.assets-stash.eet-china.com/album/old-resources/2009/5/9/043b858b-5d89-44e1-8188-7e97d...
用户1457811 2009-05-09 20:08
彻底征服LCD1602+DS1302+DS18B20(超易理解和移植)
https://static.assets-stash.eet-china.com/album/old-resources/2009/5/9/b0a823cb-8d0f-4cc4-8a2b-d7e50...
用户1457811 2009-04-24 21:48
走的太急了,备战09全国电子设计大赛
大三了,九月份就参加全国电子设计大赛了,可发现自己会的东西真的很少!这段时间似乎挺忙的,又学单片机,又学ARM,又学linux,又学AD6.9。但真的太杂了,力不从心啊,自己真的太急了!应该一步一步脚...
用户1457811 2009-04-11 20:41
fedora 10 3D桌面(ATI HD 3200驱动安装)
昨天因为ATI显卡(我的是ATI HD3200)原因没能体验3D桌面的绚丽,今天找了些帖子终于安上了显卡驱动,方法是:1. 安装驱动su -rpm -Uvh http://download1.rpmf...
用户1457811 2009-04-10 17:49
安装配置fedora 10
   昨天安装了fedora 10(硬盘安装,光盘引导,光盘是用nero软件刻录的),由于以前一直用的是虚拟机安装,所有这次有点不一样。   1 昨天安装过程很顺利(主要是自定义分区时要小心),可参考...
EE直播间
更多
我要评论
2
6
关闭 站长推荐上一条 /3 下一条