《匠人手记》推荐网上购书渠道:
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
卓越亚马逊网 购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

 匠人观点: 好记性不如烂笔头  
 黑色幽默:三鹿门——后世畅想

1621驱动程序
程序匠人 发表于 2006-8-1 14:29:00  阅读全文 | 回复(1) | 引用通告 | 编辑

;LCD 设定(命令模式字的低8位数据)
BIAS EQU 52H 1/3 偏压4背极
RC256 EQU 30H 系统时钟选用片
内RC振荡器
SYSEN EQU 02H 打开系统时钟
LCDON EQU 06H 打开偏压发生器
SYSDIS EQU 00H 关闭系统时钟和
偏压发生器
X32K EQU 28H 系统时钟选择为
片外晶振        
ToneOn EQU 12H 打开音频输出
ToneOff EQU 10H 关闭音频输出
Tone4k EQU 80H 音频输出频率为
4K
Tone2k EQU 0C0H         音频输出频率为2K
TIMEREN EQU 0CH   时基输出使能
TIMERDIS EQU 08H 时基输出禁能
CLRtime         EQU 18H 清零进基发生器
WDTEN EQU 0EH 使能WDT溢出标志
输出
WDTDIS EQU 0AH 禁止WDT溢出标志
输出
CLRWDT EQU 1CH 清零WDT
IRQEN EQU 10H 使能IRQ输出
IRQDIS EQU 00H 禁止IRQ输出
FR1 EQU 40H 设置时基输出
1HZ,WDT溢出时间4s

;HT1621B控制位(液晶模块接口定义,用户根据自已的需要更改)
CS BIT P0.1 HT1621B片选
WRITE BIT P0.3 HT1621B写控制位
SDATA BIT P0.5 HT1621B数据线

;显示缓冲区(用户根据自已的需要更改变量的存储地址)
DISBUFFER EQU 34H 显示缓冲区地址34H--43H(16
字节)

;临时变量定义(不会破坏这些资源,只是临时占用,用户不要自行修改)
lcdbitcnt EQU 03H 发送位计数器
lcdcommand EQU 02H 发送命令缓冲器
lcdadr EQU 01H lcd显存指针
LCDBYTECNT EQU 04H 发送字节数记数器 

;===============================================================================
====          
;                              向HT1621B发送命令和数据模块
;软件包面向用户的界面程序:
; Send1621Com    发送命令子程序,命令ID为100+0型式 + 命令字
; Send1621ComB    发送命令子程序(B),命令ID为100+1型式 + 命令字
; HT1621DOWN    设置1621进行掉电工作方式
; INTI1621    初化1621,并打开LCD显示,用户可更改相应初化字,进行1621的不同设
置。
; BrushLcd 刷新LCD显示,即将显示缓冲区的16字节数据发送到1621,从SEG0
段开始。
; DISDPTR    将DPTR指向的程序存储器的数据(连续16字节)发送到1621显示。
;这此子程序都会自动保护所需的临时单元,所以占用较多的堆栈,用户要注意这一点。
;===============================================================================
====

;发送命令程序
;名称: Send1621Com
;描述: 向HT1621B发送控制命令,命令内容在LCDCOMMAND中。
;所发的命令类型为ID=100+0+命令,占用堆栈。
Send1621Com:
PUSH ACC
PUSH LCDBITCNT
ACALL INTI 起动1621(即初
化)
MOV LCDBITCNT,#04h
MOV A,#80h        发送ID值100+0
ACALL sendb0
MOV A,LCDCOMMAND 取得命令字
ACALL send1621byte 发送到1621
SETB write
SETB cs
SETB sdata
POP LCDBITCNT
POP ACC
RET

;发送命令程序(B)
;名称: Send1621ComB
;描述: 向HT1621B发送控制命令,命令内容在LCDCOMMAND中。
;所发的命令类型为ID=100+1+命令,占用堆栈。
Send1621ComB:
PUSH ACC
PUSH LCDBITCNT
ACALL INTI 起动1621(即初
化)
MOV LCDBITCNT,#04h
MOV A,#90h 发送ID值100+1
ACALL sendb0
MOV A,LCDCOMMAND
ACALL send1621byte
SETB write 将SPI接口均置为
高电平
SETB cs
SETB sdata
POP LCDBITCNT
POP ACC
RET

;HT1621B掉电模式
;使1621进行掉电模式,以降低功耗
HT1621DOWN:
PUSH LCDCOMMAND
MOV LCDCOMMAND,#SYSDIS 关闭系统振荡器即进行掉电
方式
ACALL Send1621Com                  
POP LCDCOMMAND
RET

;1621设置
;描述:进行1621的基本设置,偏压、背极、系统工作方式
;用户添加初化内容或更改设置内容。
INTI1621:
PUSH LCDCOMMAND
MOV LCDCommand,#bias                    
ACALL  Send1621Com 工作于1/3偏压,
4背极                 
MOV LCDCommand,#X32K       
ACALL Send1621Com 系统时钟选择为
外部时钟
MOV LCDCommand,#wdtdis          
ACALL Send1621Com 关闭看门狗
MOV LCDCommand,#timerdis        
ACALL Send1621Com                                  
MOV LCDCommand,#sysen 启动1621系统振荡器
ACALL Send1621Com                 
MOV LCDCommand,#LCDON 启动1621显示偏压发生器,启
动显示
ACALL Send1621Com
POP LCDCOMMAND
RET  

;刷新显示子程序
;名称:BrushLcd
;描述:把显示缓冲区DISBUFFER共16个单元的内容送到1621中
BrushLcd:
PUSH LCDBYTECNT
PUSH LCDADR
MOV LCDBYTECNT,#16 发送16个数据
MOV LCDADR,#DISBUFFER 指向显示缓冲区
DISPLAY0:
LCALL SEND1621DATA 调用发送数据子
程序,从SEG0段开始
POP LCDADR
POP LCDBYTECNT
RET 

;函数名:DISDPTR
;功能:    把DPTR指向的程序存贮器的16个字节内容直接送到1621的显示缓冲区内
;参数:    DPTR-缓冲区指针
;返回值:无
DISDPTR:
PUSH 07H
PUSH 00H
PUSH 06H
PUSH ACC
MOV R7,#10H 设置各指针及变
量初值
MOV R0,# DISBUFFER 先把数据读入显
示缓冲区
MOV R6,#00
ICERRORCON:
MOV A,R6
MOVC A,@A+DPTR 读取程序区的数据
MOV @R0,A 放入显示缓冲区
INC R0
INC R6
DJNZ R7,ICERRORCON 
ACALL BrushLcd 输出显示
POP ACC
POP 06H
POP 00H
POP 07H
RET

;*******************************************************************
;                 子程序
;用启尽量不要单独的调用这此子程序
;***********************************************

;************************************************
;发送数据程序
;名称: Send1621Data
;描述: 向HT1621B发送BYTECNT个数据(从SEG0开始发送)
;           数据在发送缓冲区中,缓冲区指针lcdadr.
;-----------------------------------------------
Send1621Data:
PUSH ACC
PUSH LCDBITCNT
PUSH LCDBYTECNT
PUSH LCDADR
ACALL INTI
MOV LCDBITCNT,#01H 发送写1621RAM命

MOV A,#80H 发送1位数据
ACALL SENDB0
MOV A,#40H 1621RAM地址设置
为00H
ACALL SEND1621BYTE 
MOV R1,LCDADR
SENDNEXT1:
MOV A,@R1 读取数据
ACALL SEND1621BYTE 发送数据
INC R1
DJNZ LCDBYTECNT,SENDNEXT1
SETB WRITE
SETB CS
SETB SDATA
POP LCDADR
POP LCDBYTECNT
POP LCDBITCNT
POP ACC
RET

;************************************************
;1621初始化子程序
;即起动1621
;-----------------------------------------------
INTI:
CLR CS
SETB WRITE
NOP
CLR WRITE
NOP
RET


;******************************************************************
;发送字节数据子程序
;名称: Send1621Byte
;描述: 向HT1621B发送一个字节数据,数据在A中
;-----------------------------------------------
Send1621Byte:
PUSH LCDBITCNT
MOV lcdbitcnt,#08h 发送8位数据位
ACALL SENDB0 调用发送数据位
子程序
POP LCDBITCNT
RET

;******************************************************************
;发送位数据子程序
;名称: sendb0
;描述: 向HT1621B发送N位数据,数据在A中,N在LCDBITCNT中,从高位开始发送
;-----------------------------------------------
SENDB0:
PUSH ACC
PUSH PSW
PUSH LCDBITCNT
SENDB01:
RLC A
MOV SDATA,C 先发送高位数据
SETB WRITE 产生WR信号
NOP
NOP
CLR WRITE
NOP
NOP
DJNZ LCDBITCNT,SENDB01 未发送完,继续
POP LCDBITCNT
POP PSW
POP ACC
RET

;========================================================
;表格区
;ZY886A型LCD数字显示表(0-F),供用户转换使用。(以上程序不用此表)
LCDData:
DB  0EBH,60H,0C7H,0E5H,6CH,0ADH,0AFH,0E0H,0EFH,0EDH,0EEH,2FH,07H,67H,8FH,8EH
;===============================================================
;
;以上程序是HT1621的通用程序,对不同的LCD只是其字模不一样而以

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:1621驱动程序
sheenhero发表评论于2008-5-13 11:43:00  个人主页 | 引用 | 返回 | 删除 | 回复

sheenhero用到,顶个!

看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    往日酷贴

     
     
     

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!