一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3620|回复: 7
收起左侧

[其他综合] 74HC164驱动1602

[复制链接]
发表于 2011-5-8 20:56 | 显示全部楼层 |阅读模式
硬件参考了论坛倪老师的,在此说声感谢!有汇编源码和仿真文件      org 0000h
       ajmp 0030h
       org 0030h
     
RESET:clr es       ;   禁止串行中断
      mov scon,#00h ;  串行工作方式0
MAIN: ACALL ys45  ;lcd初始化
      acall ys45
      acall ys45
      acall ys45
      
      mov a,#33h
      acall xzl
      mov a,#30h
      acall xzl
      mov a,#02h
      acall xzl
     
      mov a,#101000b  ;4BIT ,2行显示
      acall delay1
      acall xzl
      
      mov a,#01h  ;清屏
      acall xzl
      
      mov a,#00000010b   ;光标复位
      acall xzl
     MOV A,#00000110B  ;地址增量1,字符不移动
     acall xzl
     mov a,#00001111b   ;显示开,光标有,光标闪
     acall xzl
     
     
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    mov a,#01000000b  ;指向GCRAM首址
    acall xzl
    mov r0,#00h      ;将预定字符写入
xzf:mov a,r0
    mov dptr ,#tab
    movc a,@a+dptr
    acall xsj
    inc r0
    cjne r0,#40,xzf
    mov r0,#00h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   mov a,#80h  ;光标到第一行第一位
   acall xzl
    MOV A,#33H   ;写固有字符‘3’
   ACALL XSJ
   mov a,#03H    ;写自定字符‘年’
   ACALL XSJ
   mov a,#33h  ;写固有字符‘3’
   acall xsj
  mov a,#02h  ;写自定字符‘月’
  acall xsj
   mov a,#33h
  acall xsj
  mov a,#00h;写自定字符‘日
  acall xsj ;写固有字符‘3’
  mov a,#33h  ;写固有字符‘3’
  acall xsj
  mov a,#01h  ;写自定字符
  acall xsj
  mov a,#0c8h  ;光标到第一行第一位
   acall xzl
    MOV A,#33H   ;写固有字符‘3’
   ACALL XSJ
   mov a,#03H    ;写自定字符‘年’
   ACALL XSJ
   mov a,#33h  ;写固有字符‘3’
   acall xsj
  mov a,#02h  ;写自定字符‘月’
  acall xsj
   mov a,#33h
  acall xsj
  mov a,#00h;写自定字符‘日
  acall xsj ;写固有字符‘3’
  mov a,#33h  ;写固有字符‘3’
  acall xsj
  mov a,#01h  ;写自定字符
  acall xsj
  ajmp $
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

XZL:  MOV 30H,A    ;写指令
      acall xzl1
      MOV A,30H
      SWAP A
xzl1: ANL A,#0f0H       ;屏蔽低4位
      orl a,#00000001b  ;设RS为0,E为1
      mov sbuf,a
      acall delay1
      jnb ti,$
      clr ti
      
      MOV SBUF,#00000000b  ;E清0 下降沿
      acall delay1
      JNB TI,$
      CLR TI
  
      RET
XSJ: MOV 30H,A         ;写数据
     ACALL XSJ1
     MOV A,30H
     SWAP A
XSJ1:ANL A,#0F0H       ;屏蔽低4位
     ORL A,#00000101B  ;设RS为1,E为1
     mov sbuf,a
     JNB TI,$
     CLR TI
     
     MOV SBUF,#00000000b  ;E清0
     JNB TI,$
     CLR TI
   
     RET
     

delay1:mov r7,#20   ;这是初始化完成后正常操作1602的延时程序
d11:   mov r6,#10
      djnz r6,$
      djnz r7,d11
      ret
ys45:mov r7,#0bh
ys1:  mov r6,#0cbh
      djnz r6,$
      djnz r7,ys1
      ret
      
tab :db 0fh,1001b,1001b,0fh,1001b,1001b,0fh,00h;日
     db 10000b,111b,1000b,1000b,1000b,1000b,111b,00h  ;温度符号
     db 0fh,1001b,0fh,1001b,0fh,1001b,10011b,00h  ;月
     db 0FH,10010B,0FH,1010B,1fh,10b,10B,00h    ;年
   
   
end
捕捉-1.jpg

新建文件夹 (2).rar

16.75 KB, 下载次数: 600, 下载积分: 一乐金币 -1

发表于 2011-5-8 21:08 | 显示全部楼层
看不懂汇编
发表于 2011-5-8 21:32 | 显示全部楼层
发表于 2011-5-9 08:29 | 显示全部楼层
这个很好!!!!!!!
发表于 2011-5-9 17:31 | 显示全部楼层
不错!
发表于 2011-5-9 17:36 | 显示全部楼层
lcd_4.JPG


CLKLCD equ p1.0
DATALCD equ p1.1
LCDDELAY equ 40
;--------------------------------------------------------------------------------------------
   org 0h
   acall INITLCD
   ;https://www.yleee.com.cn/
m1:  mov acc,#'b'
   acall LCD_DAT
   mov acc,#'b'
   acall LCD_DAT
   mov acc,#'s'
   acall LCD_DAT
   mov acc,#'.'
   acall LCD_DAT
   mov acc,#'y'
   acall LCD_DAT
   mov acc,#'l'
   acall LCD_DAT
   mov acc,#'e'
   acall LCD_DAT
   mov acc,#'e'
   acall LCD_DAT
   mov acc,#'e'
   acall LCD_DAT
       mov acc,#'.'
   acall LCD_DAT
   mov acc,#'n'
   acall LCD_DAT
   mov acc,#'e'
   acall LCD_DAT
         mov acc,#'t'
   acall LCD_DAT
         mov acc,#'/'
   acall LCD_DAT
   mov r7,#255
   acall wait_L
   mov acc,#01h
   acall LCD_COM
   sjmp m1
   jmp $
;=============================================
INITLCD:   
   mov r7,#160   ;160*255=40.8 mSec
   acall wait_L
   mov a,#03h
   acall LCD_COM
   mov r7,#60   ;60*255=15.3 mSec
   acall wait_L
   mov a,#02h
   acall LCD_COM
   mov r7,#60   ;60*255=15.3 mSec
   acall wait_L
   mov acc,#28h  
   acall LCD_COM
   acall wait
   mov acc,#0ch
   acall LCD_COM
   acall wait
   mov acc,#06h
   acall LCD_COM
   acall wait
   mov acc,#01h  
   acall LCD_COM
   mov r7,#7   ;7*255>1.5mSec
   acall wait_L
   ret
;******************************************************************
LCD_COM:  clr CLKLCD
   acall wait
   push acc
   swap a ;D7...D4
   anl a,#0fh
   orl a,#80h ;command
   acall send8
   pop acc ;D3...D0
   anl a,#0fh
   orl a,#80h
   acall SEND8
   ret
;------------------------------------------------------   
LCD_DAT:  clr CLKLCD
   acall wait   
   push acc
   swap a ;D7...D4 send  
   anl a,#0fh
   orl a,#90h ;command
   acall send8
   pop acc ;D3...D0
   anl a,#0fh
   orl a,#90h
   acall SEND8
   ret
;******************************************************************
SEND8:  mov r7,#8   
RLCA:   rlc a
   mov DATALCD,c
   setb CLKLCD
   clr CLKLCD  
   djnz r7,RLCA  
   ret
;******************************************************************
POS:   setb acc.7
   acall LCD_COM
   ret
;===================================================================
wait:   mov b,#LCDDELAY
   djnz b,$
   ret
;====================================================================
wait_L:   
   mov b,#255
wait_L1:  djnz b,$
   djnz r7,wait_L1
   ret
   END
 楼主| 发表于 2011-5-10 07:55 | 显示全部楼层
谢谢倪版!
发表于 2011-5-12 09:48 | 显示全部楼层
回复 6# 倪大德


    U3是什么?能弄个C语言的不?

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-6-12 10:43 , Processed in 0.065738 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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