EDN首页   博客首页

最新日志

发表于:2007-11-27 11:06:24
标签:photoshop  12864LCD  图像字模提取  

2

PS做128*64LCD显示图片

         成功地利用PS或Windows画图工具制作出了适合128*64LCD显示的图片,点击看大图(点击清晰)

代码:0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0B,0xE9,0xAF,0xA6,0xED,0xF9,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xE0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF0,0xF8,0x78,0x78,
0x70,0x78,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xDC,0x56,0x97,0x17,0xDC,0x80,0x00,0x00,0x00,0x00,0xF8,0x04,0x02,0x02,0x03,
0x82,0x82,0x44,0xD8,0x00,0x40,0x80,0x80,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x80,0xF0,0x7E,0x7F,0x3F,0x3F,0x7E,0xFC,0xF0,0x00,0x03,0x0F,0x0F,
0x8F,0x8F,0x8F,0x8F,0x0F,0x1F,0x3F,0x1F,0x0F,0x03,0x01,0x60,0x20,0x70,0x70,0xF8,
0xF8,0xF8,0xF0,0xF0,0xE1,0xC1,0x07,0x07,0x0F,0x0F,0x0F,0x04,0x00,0x00,0x00,0x00,
0x03,0xCF,0x00,0x80,0xC1,0xCF,0xC7,0xC0,0x80,0x00,0x00,0xE0,0x31,0x12,0x02,0x1E,
0x22,0x52,0x51,0xA0,0x80,0x40,0x40,0x21,0x0E,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x7F,0xFF,0xFC,0xFC,0xF8,0xFC,0xFC,0xFF,0xFF,0x00,0x00,0x00,0x00,
0xF1,0xF1,0xF1,0xF1,0xF0,0x30,0x18,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x00,0x80,
0xE1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0x02,0x00,0x00,0x00,0x80,
0x00,0x01,0xBA,0xAA,0xAB,0x28,0x00,0x01,0x0F,0x00,0x00,0x07,0x8C,0x10,0x50,0x40,
0x50,0x50,0x88,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x07,0x07,0x07,0x0E,0x0C,0x08,0x08,0x08,0x0C,
0x0F,0x0F,0x0F,0x0F,0x0F,0x18,0x00,0x00,0x02,0x0F,0x0E,0x0E,0x0E,0x0E,0x1F,0x1F,
0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0x0F,0x0F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x0A,
0x00,0x82,0x2A,0xFA,0xCA,0x72,0x16,0x0C,0x0C,0x00,0x00,0x33,0x21,0x40,0x00,0x80,
0x00,0x40,0x40,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,
0x1C,0x91,0xF1,0x9D,0x86,0xFE,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
呵呵,蛮好玩的。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(377)
发表于:2007-11-21 22:54:17
标签:舒怀  

1

武功与学习

       记得金庸的《天龙八部》里曾有这么一个情节,是关于大名鼎鼎的“南慕容,北乔峰”各自的父亲偷学少林寺武功的。乔峰之父萧远山,和慕容复之父慕容博两人均潜入少林寺四十余年,苦学少林绝技,虽然身怀绝世武功,可是也身患恶疾,每天痛苦不堪,生不如死。灰僧人有段发人深省的话:

      “本寺七十二绝技,每一项功夫都能伤人要害、取人性命,凌厉狠 辣,大干天和,是以每一项绝技,均须有相应的慈悲佛法为之化解。这道理本寺僧人 倒也并非人人皆知,只是一人练到四五项绝技之后,在禅理上的领悟,自然而然的会 受到障碍。在我少林派,那便叫做‘武学障’,与别宗别派的‘知见障’道理相同。 须知佛法在求渡世,武功在于杀生,两者背道而驰,相互制。只有佛法越高,慈悲 之念越盛,武功绝技才能练得越我,但修为上到了如此境界的高僧,却又不屑去多学 各种厉害的杀人法门了。” 

     即使你武学修为再高,没有心灵上的洗涤,始终是不健全的。一味的学习,而不注重思想,性情的陶冶,就会如同灰僧人所然,遇到‘知见障’,要想再往深处修炼,比登天还难,欲强练者更会伤害身体。学习,思想,性情是同步发展的,修炼之余莫忘记陶冶性情也。

     忽然想起《大秦帝国》里面的苏秦,每天傍晚,学习之余都喜欢牵着心爱的狗

--大黑,四处逛,对天舒怀的情景,满天星空下,一人一狗,人畅,狗听,四周一片安静…………

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类:    |    来源: 原创

评论(0) | 阅读(427)
发表于:2007-11-21 9:49:13
标签:1602  I2C  

2

I2C+1602

         刚开blog不久,充实下,发个I2C(24c64)+1602的程序,供大家参考,请多多指教pdf

rar

部分如下:

//调试用
const char error[]={"ERROR writeACK  "};
const char error2[]={"ERROR  readACK  "};
const char error3[]={" ERROR readACK3 "};
void delay_I2C()
   {
     int x;
  x++;
  x++;
   }


void I2C_send_start()
   {
     SCL="1";
  SDA="1";
  delay_I2C();
  SDA="0";
  delay_I2C();         //generate start condition
  SCL="0";          //generate clock pules
   }


void I2C_send_stop()
   {
      SCL="0";
   SDA="0";
   delay_I2C();
   SCL="1";         //generate stop condition
    delay_I2C();
   SDA="1";
   }


bit I2C_get_ACK_from_slave()
   {
     SCL="1";
  SDA="1";
 delay_I2C();
 if(SDA)
    {SCL=0;return 1;}
    SCL=0;
 return 0;        //OK!
   }


bit I2C_write_byte(char Data)
   {
      char Bit="0";
      for(Bit=0;Bit<8;Bit++)
     {
     SDA=(bit)((Data&0x80)>>7);

     SCL="1";
     delay_I2C();
     SCL="0";
     Data<<=1;
  }
      if(I2C_get_ACK_from_slave())
     {
    return 1;
  }
      return 0;
   }


char I2C_read_byte()
   {
      char Bit="0";
   char result="0";
      for(Bit=0;Bit<8;Bit++)
    {
      SCL="1";
   SDA="1";
   delay_I2C();
   result<<=1;
   if(SDA)
   {result|=0x01;}
      SCL="0";
   delay_I2C();//1.2us
     }
   return (result); 
   }


void I2C_master_ACK()
   {
     SDA="0";
  SCL="1";
  delay_I2C();
  SCL="0"; 
   }


void I2C_master_NACK()
   {
    SDA="1";
  SCL="1";
  delay_I2C();
  SCL="0";
   }

void I2C_write_byte_at24c64(const int address,const char content)
   {
     char MSbyte;
  char LSbyte ;

     I2C_send_start();
     if(I2C_write_byte(0xA0))
     {
   delay(50);
   write_string_LCD(0,error);//调试用,下同。可删除
   return ;
  }

      MSbyte=(address>>8)&0x00FF;
   LSbyte="address"&0x00FF;

   if(I2C_write_byte(MSbyte))
     {
   delay(50);
   write_string_LCD(0,error);
   return ;
  }
  
      if(I2C_write_byte(LSbyte))
     {
   delay(50);
   write_string_LCD(0,error);
   return ;
  }
      if(I2C_write_byte(content))
     {
   delay(50);
   write_string_LCD(0,error);
   return ;
  }
       I2C_send_stop();
   }


char I2C_read_byte_at24c64(const int address)
   {
     char MSbyte;
  char LSbyte;
  char result;

     I2C_send_start();
     if(I2C_write_byte(0xA0))
     {
    delay(50);
   write_string_LCD(1,error3);
   return 0;
  }
     MSbyte=((address&0xFF00)>>8);
  LSbyte="address"&0x00FF;

   if(I2C_write_byte(MSbyte))
     {
   delay(50);
   write_string_LCD(1,error2);
   return 0;
  }
      if(I2C_write_byte(LSbyte))
     {
   delay(50);
   write_string_LCD(1,error2);
   return 0;
  }
  
   I2C_send_start();
      if(I2C_write_byte(0xA1))
     {
    delay(50);
   write_string_LCD(1,error2);
   return 0;
  }
    result="I2C"_read_byte();
       I2C_master_NACK();
       I2C_send_stop();
    return (result);
   }

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(384)
发表于:2007-11-20 22:15:36
标签:数组  函数  参数传递  

2

学习C语言

      而家系度学紧128*64LCD既驱动,好多人系编写硬件驱动个阵,都中意抄人地的程序,硬件驱动有阵下真系唔难,但就系麻烦,于是系哩度抄D,个度抄D。再拼起来就系下面标上************XXX 原创***********。呵呵,有阵组合程序都系一种“原创”来噶。曾经听过一个词语,叫“程序搬运工”,想落又几甘贴切的,好啦,胡思乱语一通了,回归正吧。

     I:当数组作为函数的参数传递时,数组将退化为指针,这时候,在函数里面是无法计算实参数组的大少的,比喻void ks0108_Write_string(tbyte x, tbyte y,tbyte **ptr)  ;将指针数组*number[10]={zero,one,two,three,four,five,six,seven,eight,nine};  传递给函数,此时ptr为指针数组number的地址,欲在函数里面确定数组number的大少bytes=sizeof(ptr); 将不能获取数组number的大少,这里btyte=3 (根据计算机不同而不同),3是ptr所指地址,即一个变量占据的字节数。

数组作为函数的参数传递时,传递的仅仅是一个地址,不带有任何的信息,所以sizeof函数无法计算数组的大少。

    II,C语言中运算符">>"不是循环右移,高位将被0补充,所以在对ds1302时钟芯片读数时,是不可能读取正确的数值的。  

  III: 转个贴,http://topic.csdn.net/t/20060205/18/4540750.html#

当你定义一个数组的时候:  
  int   a[]   =   {1,   2,   3};     //   实际上被编译为   int   a[3]   =   {1,2,3}  
   
  数组名代表的是数组的地址。注意   ——   你绝对没有办法通过数组名动态获得数组的大小。当你丢失a的长度信息的时候,你永远不可能知道他的长度。  
   
  那么   sizeof   是怎么回事呢?他不是通过   a   的名字获得   a的大小了么?   ——   大错特错!  
   
  关键字   sizeof   产生的是一个编译期常量(注1)   他的运作方式是这样的:  
   
  当你写:  
  sizeof   a    
  实质是:  
  sizeof   (   a的类型   )  
   
  而a的类型是什么呢?编译器察看   a的定义发现,   是   int   [3]  
  就是说,这里   sizeof   a   实质是:  
  sizeof   (   int[3]   )  
  完全等同于常量   12   (假定int为4字节)。  
   
   
  考虑一个函数  
  void   func(   int   a[]   );      
  //   写成   int   a[3]   也不会有本质区别——也许你该试试写成   int   (&a)   [3]   ?  
   
  C++规定,数组作为形参的时候,a代表数组首地址。  
  他的底层意义是:   a   退化为了一个4字节的指针,没有任何变量表示数组的大小会“自动”被传递进来。  
   
  我们看看这个时候   sizeof   a是什么:  
  sizeof(   函数形参的a[]   )     =   sizeof(   int*   const   )   =   4     //   当然a[]不是合法的C++类型  
   
   
   
  仍然不服气?好——我们反问一个问题:若你是C   /C++的设计者,   你怎么在兼容原有设计的基础上让void   func(   int   a[]   )同时传递地址和大小?  
   
  首先,a是一个变量,而且类似数组。他必须是一个地址,否则你不知道如何索引元素。  
  他怎么再带上一个变量表示他的大小呢?  
   
  扩充   sizeof   (a)   的能力?  
   
  sizeof   a   必须产生代码——不管是常量还是什么。   要让他在运行时决定   a的值,   a就必须带上他的大小信息。    
   
  1   你必须修改C标准,让C支持“两种”数组。一种是定义处的数组,他分配大片连续内存,和原来的C标准相同。  
   
  2   另一种是作为参数传递数组。   你必须传递地址和数组大小;这个数组实际上是一个8字节的结构{   地址;   大小}(事实上可能更加复杂,考虑多纬数组如何实现?   )    
   
  3   系统必须根据两种不同数组分别实现其   []、*   、&等。   原有的数组根据其首地址偏移(这是个常量)和下标寻址;   而参数数组则首先取“地址”内容(这是个变量),然后根据这个地址寻址....  
   
  厄...   再考虑多维数组——听起来这不是一整套vector模型么?  
   
  -----------------------------------------------  
  注1:   对于C99支持的   flexible   array   ,其   sizeof   运算是运行时求值                                                    

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 整理

评论(0) | 阅读(366)
总共 , 当前 /