找回密码
 注册
搜索
查看: 1325|回复: 0

[资料] UPD78F9234(NEC)+BU9793FS

[复制链接]
发表于 2012-5-15 10:33:12 | 显示全部楼层 |阅读模式
/*****************************************************
  本例程为UPD78F9234(NEC)+BU9793FS(ROHM 88段LCDdrive)例程。
  采用I2C方式传送数据,若使用其他厂家的I2C方式通讯的LCDdrive可能需要稍加改动,ISP 通讯方式不可使用。
  
  *****************************************************/
  
  #define uchar unsigned char
  #define slave_addr 0x7c //slave地址
  #define ICSET 0xea //ICSET
  #define BLKCTL 0xf0
  //#define DISCTL 0xa0 //正常
  #define DISCTL 0xbc //低功耗
  #define ADSET 0x00
  #define MODESET 0xc8
  #define APCTL8 0xfe
  #define APCTL 0xfc
  #define EVRSET0 0xe0
  #define EVRSET1 0xe5
  #define EVRSET2 0xf8
  #define SDA P6.1
  #define MSDA PM6.1
  #define SCL P6.2
  #define MSCL PM6.2
  unsigned char buff[24];
  void start_i2c();
  void stop_i2c();
  void send_byte(uchar tempb);
  void data_display(void);
  void ini_display(void);
  void on_display(void);
  void main(void)
  {
  ini_display();
  on_display();
  while(1)
  {data_display();
  }
  }
  /*****************************************************
  起动总线函数
  函数原型: void start_i2c();
  Function: start on the I2C bus
  *****************************************************/
  void start_i2c()
  {
  SDA=1;
  nop();
  SCL=1;
  nop();nop();nop();nop();
  SDA=0;
  nop();nop();nop();nop();
  SCL=0;
  }
  /*****************************************************
  停止总线函数
  函数原型: void stop_i2c();
  Function: stop the I2C bus
  *****************************************************/
  void stop_i2c()
  {
  SDA=0;
  nop();
  SCL=1;
  nop();nop();
  SDA=1;
  nop();
  }
  
  参考 http://www.originic.hk/Item/Show.asp?m=1&d=1368
  /*****************************************************
  字节数据传送函数
  函数原型: void send_byte(uchar tempb);
  Function: 将数据C发送出去,可以是地址,也可以是数据,发
  完后等待回应,并对此状态位进行操作(不应答或非应答都使
  ack=0 ),发送数据正常,ack=1;ack=0 表示被控器无应答或损坏。
  *****************************************************/
  void send_byte(uchar tempb)
  {
  uchar bit_count;
  for (bit_count=0;bit_count<8;bit_count++)
  {
  if ((tempb<  else {SDA=0;}
  nop();
  SCL=1;
  nop();nop();nop();nop();nop();
  SCL=0;
  }
  MSDA=1;
  nop();nop();
  // SDA=1;
  nop();nop();
  SCL=1;
  if (SDA==1) ack=0;
  else ack=1;
  MSDA=0;
  SCL=0;
  nop();
  }
  void data_display(void)
  { register uchar i;
  flag_dis=0;
  stop_i2c();
  start_i2c();
  send_byte(slave_addr);
  // send_byte(DISCTL);
  // send_byte(BLKCTL);
  // send_byte(APCTL);
  // send_byte(MODESET);
  // if(LVIF)
  // send_byte(EVRSET0);//3V
  // else
  // send_byte(EVRSET1); //5V
  // send_byte(EVRSET2);
  send_byte(ADSET);
  clrwdt();
  for(i=0;i<25;i++)
  {send_byte(buff);}
  stop_i2c();
  }
  /************初始化LCD-DRIVER**************/
  void ini_display(void)
  {register uchar i;
  MSCL=0;
  MSDA=0;
  stop_i2c();
  start_i2c();
  send_byte(slave_addr);
  send_byte(ICSET);
  send_byte(DISCTL);
  send_byte(ADSET);
  for(i=0;i<25;i++)
  send_byte(0x0);
  stop_i2c();
  }
  void on_display(void)
  {start_i2c();
  send_byte(slave_addr);
  send_byte(DISCTL);
  // send_byte(BLKCTL);
  send_byte(APCTL);
  send_byte(MODESET);
  stop_i2c();
  }
  
  
  参考 http://originic.blog.163.com/blog/static/1914961612012324115710381/
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-5-30 11:52 , Processed in 0.046570 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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