导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→提供一个测试程序,仅供参考

* 96645: 请教各位,用51做液晶显示,显示驱动是ht1621

   Lichunfu 
Lichunfu发表的帖子 

 提供一个测试程序,仅供参考
; 这个程序只是一个模块测试程序,但是基本操作已经有了,具体程序与硬件有关
; 开机时要先对HT1621进行初始化,初始化内容和LCD结构也有关系,比如COM口数量等
;//****************************************************************
;//  模块名称: LCD_Initialize
;//  功能描述: HT1621初始化
;//****************************************************************
LCD_Initialize:
 MOV A, #cntSYS_EN  ;// 系统允许
 CALL LCD_Command
 MOV A, #cntBASE_COM  ;// 设置:1/3 偏压、4COM
 CALL LCD_Command
 MOV A, #cntOSC_SEL  ;// 选择内部RC振荡器:256KHz
 CALL LCD_Command
 MOV A, #cntLCD_ON  ;// LCDON
 CALL LCD_Command
 RET

;//****************************************************************
;//  功能描述: 把显存中的数据写入HT1621中
;//  入口参数: R7=缓冲区字节数
;//****************************************************************
LCD_WriteData:
 CLR ioLCD_CS ;
 NOP
 NOP
 SETB ioLCD_Data ;
 NOP
 NOP
 NOP
 NOP
 CLR ioLCD_WR ;
 NOP
 NOP
 NOP
 NOP
 ; 送写命令和6位起始地址:101000000,从HT121显存00单元开始写
 SETB ioLCD_WR  ; // 写第9位“1”
 NOP
 NOP
 MOV A, #01000000B ;  // 01 A5 A4 A3 A2 A1 A0  101即写指令
 CALL LCD_SendByte
 ; 送数据,显示缓冲区中的1个字节对应HT1621两个连续的单元(HT1621一个单元是4BIT)
 ; 所以缓冲区字节数是液晶屏段(Segment)数的1半
 MOV R0, #ucLCDBUF0 ; 显示缓冲区地址 -->  R0
LCD_WRD00:
 MOV A, @R0
 CALL LCD_SendByte
 INC R0
 DJNZ R7, LCD_WRD00
 SETB ioLCD_CS
 SETB ioLCD_Data
 RET

;//****************************************************************
;//  模块名称: LCD_Command
;//  功能描述: HT1621命令模式
;//  入口参数: A=命令字;
;//****************************************************************
LCD_Command:
 CLR ioLCD_CS ;
 NOP
 NOP
 NOP
 NOP
 SETB ioLCD_Data ;// send 1
 NOP
 NOP
 NOP
 NOP
 CLR ioLCD_WR ;
 NOP
 NOP
 NOP
 NOP
 SETB ioLCD_WR ;
 NOP
 NOP
 NOP
 NOP
 CLR ioLCD_Data ;// send 0
 NOP
 NOP
 NOP
 NOP
 CLR ioLCD_WR ;
 NOP
 NOP
 NOP
 NOP
 SETB ioLCD_WR ;
 NOP
 NOP
 NOP
 NOP   ;// send 0
 CLR ioLCD_WR ;
 NOP
 NOP
 NOP
 NOP
 SETB ioLCD_WR ;
 CALL LCD_SendByte ;
 SETB ioLCD_Data
 NOP
 NOP
 NOP
 NOP   ; // 送任意位
 CLR ioLCD_WR ;
 NOP
 NOP
 NOP
 NOP
 SETB ioLCD_WR
 NOP
 NOP
 NOP
 NOP
 SETB ioLCD_CS ;
 RET

;//****************************************************************
;//  模块名称: LCD_SendByte
;//  功能描述: 向HT1621送8Bit数据
;//  入口参数: A=数据;
;//****************************************************************
LCD_SendByte:
 MOV B, #8   ; 8BIT
LCD_SDBLP:
 RLC A
 MOV ioLCD_Data, C
 NOP
 NOP
 NOP
 CLR ioLCD_WR ;
 NOP
 NOP
 NOP
 NOP
 SETB ioLCD_WR ;
 NOP
 NOP
 NOP
 DJNZ B, LCD_SDBLP
 RET


发表时间:2006年8月12日15:32:04

  
回复该帖

本主题共有 4 帖,分页:>>>>>该主题的所有内容[4]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  98082.[详细]HT1621是一种128点阵式存储映射多功能LCD驱动电路
摘要:[upload=jpg]uploadfile/2006-9-25_10-1-12_45.jpg[/upload] 上海毅钧商贸有限公司 联系人: 白先生  IC108@126.com&nbs......(5759字)
- [szic108][1803次] 2006年9月25日

[上一篇帖子]:向各位请教我是一个新手,今天向各位请教个问题:如何用pspice对锁相环电路进行分析和设计
[下一篇帖子]:电话与电脑实现家电远程控制各位大家好啊!我最近一直在寻找电话和电脑远程控制家电的设计方案,可是头绪越