打印
[AVR单片机]

51驱动 NOKIA 3310 参考程序

[复制链接]
1628|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lovelyegle|  楼主 | 2009-11-5 23:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参考程序:


#include<reg51.h>
#include"DELAY.h"

sbit SCLK = P2^3;
sbit SDIN = P2^4;
sbit DC  = P2^5;
sbit SCE =    P2^6;
sbit RES =    P2^7;
void LCD_write_byte (unsigned char outdata, unsigned char command);
void LCD_init(void);
void clear(void);
void set_xy(unsigned char x,unsigned char y);


void LCD_init(void)
{
RES = 0;
delay_1us();
RES = 1;

LCD_write_byte(0x21, 0);// 芯片是活动的 水平寻址 使用扩展命令设置LCD模式
LCD_write_byte(0xd5, 0);
LCD_write_byte(0x20, 0);// 使用基本命令
LCD_write_byte(0x0c, 0);// 设定显示模式,正常显示
}


void LCD_write_byte (unsigned char outdata, unsigned char command)
{
unsigned char i;
DC = command;
SCE = 0;
for (i=1;i<8;i++)
  {
    SDIN = (bit)(outdata&0x80);
    SCLK = 1;
    _nop_();
    SCLK = 0;
    outdata <<= 1;   
  }
SCE = 1;
}


void write_english_char(unsigned char x,unsigned char y,char *s)
{
    set_xy(x,y);
    while(*s)
    {
      //write_char(x,y,*s);
      LCD_write_byte(*s);
        s++;
      // x+=6;
      // if(x>84) y++;
    }      
}

/*
清除屏幕函数

*/
void clear(void)
{    unsigned int i,j;
  for(i=0;i<6;i++)
      { for(j=0;j<84;j++)
        {
            set_xy(j,i);
            LCD_write_byte(0,1);
        }
      }
}

void set_xy(unsigned char x,unsigned char y)
{
  LCD_write_byte(y|0x40,0);//设置y轴。
  LCD_write_byte(x|0x80,0);//设置x轴。   
}


void main()
{
LCD_init();

    clear();
    while(1)
    {
    write_english_char(0,4,"0123456789");
    }

}

相关帖子

沙发
god_like| | 2009-11-6 10:06 | 只看该作者
不错,谢谢LZ

使用特权

评论回复
板凳
suoma| | 2009-11-7 22:04 | 只看该作者
支持楼主!

使用特权

评论回复
地板
laslison| | 2009-11-8 22:54 | 只看该作者
给楼主一个:)

使用特权

评论回复
5
lovelyegle|  楼主 | 2009-11-9 12:59 | 只看该作者
:P

使用特权

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

本版积分规则

77

主题

640

帖子

1

粉丝