原创 AT91sam7s64的LCD1602简便6线显示

2008-9-19 01:17 3427 14 16 分类: MCU/ 嵌入式

     手头只有lcd1602和st7920的lcd128*64两款lcm,现在是基于at91sam7s64的lcd1602显示,过几天在把st7920的显示发上来。


     lcd显示只要把时序做好就可以了,在此基础上可以把at91sam7s64的AD和RTC都可以在lcd上显示,为了保护at91sam7s64,接口电路最好接电平转换芯片或者电阻。


/*--------------------------lcd.h----------------------------------------*/


主要源码:


void E_Pulse()
{
  l_pPio->PIO_SODR = BIT10; 
  Delay_mS(100);            
  l_pPio->PIO_CODR = BIT10;  
}


void LCDInit()
{
  l_pPio->PIO_OER = (BIT28|BIT29|BIT30|BIT31|BIT8|BIT9|BIT10);


  l_pPio->PIO_PER = (BIT28|BIT29|BIT30|BIT31|BIT8|BIT9|BIT10);



  l_pPio->PIO_CODR = BIT8|BIT9|BIT10; 
  Delay_mS(1100000);                    


  l_pPio->PIO_SODR = BIT28|BIT29;        
  E_Pulse();                            


  Delay_mS(100000);                    


  l_pPio->PIO_SODR = BIT28|BIT29;      
  E_Pulse();                            


  Delay_mS(100000);                     


  l_pPio->PIO_SODR = BIT28|BIT29;      
  E_Pulse();                             


  Delay_mS(100000);                    


  l_pPio->PIO_CODR = BIT28;             
  l_pPio->PIO_SODR = BIT29;             
  E_Pulse();                             


  Delay_mS(100000);                     
}


void LCDSendCommand(unsigned long a)
{


  l_pPio->PIO_CODR =  BIT9;                


  Delay_mS(20000);                           


  data = 0x0;                             


  data = 0xffffff0f | a;                     


  l_pPio->PIO_CODR = BIT28|BIT29|BIT30|BIT31;


  data = data << 24;                       


  l_pPio->PIO_SODR = 0xf0000000 & data;     


  l_pPio->PIO_CODR =  BIT8;             


  E_Pulse();                               


  data = 0x0;                               


  a = a<<4;                                  


  data = 0xffffff0f | a;                    


  l_pPio->PIO_CODR = BIT28|BIT29|BIT30|BIT31;


  data = data <<24;                        


  l_pPio->PIO_SODR = 0xf0000000 & data;     
  l_pPio->PIO_CODR =  BIT8;                 


  E_Pulse();                                 


}


void LCDSendChar(unsigned long a)
{
  l_pPio->PIO_CODR =  BIT9;                


  Delay_mS(20000);                        


  data = 0x0;                              


  data = 0xffffff0f | a;                     


  l_pPio->PIO_CODR = BIT28|BIT29|BIT30|BIT31;


  data = data << 24;                         


  l_pPio->PIO_SODR = 0xf0000000 & data;     
  l_pPio->PIO_SODR =  BIT8;               


  E_Pulse();                                


  data = 0x0;                               


  a = a<<4;                                  


  data = 0xffffff0f | a;                     


  l_pPio->PIO_CODR = BIT28|BIT29|BIT30|BIT31;


  data = data << 24;                        


  l_pPio->PIO_SODR = 0xf0000000 & data;      


  l_pPio->PIO_SODR =  BIT8;            


  E_Pulse();                               
}


void LCDSendTxt(char* a)
{
  for(int i="0"; i<strlen(a); i++)
  {
    LCDSendChar(a);
  }
}


void LCDSendInt(int a)
{
  int h = 0;
  int l = 0;


  l = a%10;
  h = a/10;


  LCDSendChar(h+48);
  LCDSendChar(l+48);
}


void SmartUp(void)
{
  for(int i="0"; i<40; i++) LCDSendCommand(CUR_RIGHT);
}


void SmartDown(void)
{
  for(int i="0"; i<40; i++) LCDSendCommand(CUR_LEFT);
}


下面为整个工程:https://static.assets-stash.eet-china.com/album/old-resources/2008/9/19/8a740fa3-aa6f-4315-9f77-30daeccb295e.rar有什么问题请跟贴留言。


 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户925035 2008-9-19 17:33

4线只是说D4~D7的数据线,6线就要加上控制线RS和E线。

用户461316 2008-9-19 08:44

以前只知道4线和8线的,看到你是6线,先顶在看!!
相关推荐阅读
用户925035 2009-11-15 00:44
通用按键消抖函数 -- 数据与过程分离
AUTO:  nicksean 不务正业          项目里经常处理按键消抖, 本来这个消抖的过程是与具体按下的键无关的, 可以前的代码总是在消抖的同时处理具体的按键值, 再加上长按 短按 组合...
用户925035 2009-11-13 13:16
液晶ST7920串行显示
液晶显示128*64以7920为主控制器,采用3线制,比较经济简单。代码如下.....
用户925035 2009-11-13 13:11
DS18B20 C51完整版
使用WINBOND W78C516单片机,11.0592MHZ晶振,用共阳LED数码管P0口输出段码,P1口扫描/*******************************************...
用户925035 2009-11-12 13:19
74HC164驱动数码管
          74HC164是串行输入,并行输出接口器件,可用在单向的并行输出/并行地址锁存等. 74HC164因为价格便宜,容易使用特别适合使用在在需要用到数码管显示IO口又比较紧张的电子产品...
用户925035 2009-11-10 20:13
at24c512多字节读写函数 欢迎测试
刚写的at24c512多字节读写函数,欢迎测试。/********************************************************************函数功能:EE...
用户925035 2009-11-10 19:59
旋转编码器
    很好的旋转编码器的读码程序,设旋转编码器的输出波形如下                 ______        ______        ______        ______正转时:...
EE直播间
更多
我要评论
2
14
关闭 站长推荐上一条 /3 下一条