首页
资讯
论坛
搜索
新手入门
单片机仿真
ARM仿真
模拟数字仿真
ARES pcb layout
仿真求助专区
仿真设计竞赛
唯美贴图
我爱灌水
您的位置:
proteus仿真社区
>>
论坛
>>
仿真求助专区
>>
查看帖子
最新更新主题
4*4键盘与7SEG4(移位显示)同时扫描
keil调试问题请教
汇编与C语言的较量
debug的时候为什么不行啊
肯求一正弦波振荡电路!
keil找茬
串口通讯问题
帮忙改下程序....
求~~用51单片机+DS18B20+蜂鸣器做出的温度报警器仿真图.
为什么示波器通道要选中INVERT才能显示出波形
月度关注热点
proteus问题
我做滴一个小东西
proteus单片机仿真求助
8*8点阵静态显示问题
请高手帮忙将C语言程序改写成汇编语言
小弟请求一个proteus小问题
我对郭天祥单片机的仿真PROTEUS
仿真PIC时出现*.lst not found错误
请教啊
哥哥们,帮我看下我的小程序吧,已经琢磨一周了
ampire12864的用法?
字体:
小
中
大
|
打印
发表于: 2008-8-12 14:08 作者: 锅牛 来源: proteus仿真社区
ampire12864的怎么用呀,找不到,请问各位有可用的资料吗,帮帮忙!感谢!
我也来说两句
查看全部回复
最新回复
liaoguobao00
(2008-8-16 21:08:51)
汇编语言驱动如下
;引脚定义
E BIT P2.0;使能信号线
RW BIT P2.1;读/写信号线
RS BIT P2.2;数据/指令信号线
CS2 BIT P2.3;右半屏控制信号线
CS1 BIT P2.4;左半屏控制信号线
;空间分配
COM EQU 20H;指令专用寄存器
DAT EQU 21H;数据专用寄存器
CODES EQU 22H;字在表格中的位置专用寄存器
YE EQU 23H;字所在的页专用寄存器
LIE EQU 24H;字所在的列专用寄存器
ALL_YE EQU 25H;图形的总页数专用寄存器
ALL_LIE EQU 26H;图形的总列数专用寄存器
CS EQU 27H;左右半屏控制专用寄存器,为0时在左半屏,为1时在右半屏
HANG EQU 28H;点所在的行专用寄存器
;主程序
ORG 1000H
LCALL INIT
LCALL CLEAR
MOV 27H,#0
MOV LIE,#0
MOV YE,#0
MOV ALL_YE,#8
MOV ALL_LIE,#64
LCALL MAP
MOV 27H,#1
MOV CODES,#0
MOV YE,#0
MOV LIE,#0
LCALL WRITE_HANZI
MOV CODES,#0
MOV YE,#0
MOV LIE,#16
LCALL WRITE_HANZI
MOV CODES,#1
MOV YE,#0
MOV LIE,#32
LCALL WRITE_HANZI
MOV CODES,#2
MOV YE,#0
MOV LIE,#48
LCALL WRITE_HANZI
MOV CODES,#3
MOV YE,#2
MOV LIE,#0
LCALL WRITE_HANZI
MOV CODES,#4
MOV YE,#2
MOV LIE,#16
LCALL WRITE_HANZI
MOV CODES,#5
MOV YE,#2
MOV LIE,#32
LCALL WRITE_HANZI
MOV CODES,#6
MOV YE,#2
MOV LIE,#48
LCALL WRITE_HANZI
MOV CODES,#7
MOV YE,#4
MOV LIE,#0
LCALL WRITE_HANZI
MOV CODES,#8
MOV YE,#4
MOV LIE,#16
LCALL WRITE_HANZI
MOV CODES,#9
MOV YE,#4
MOV LIE,#32
LCALL WRITE_HANZI
MOV CODES,#10
MOV YE,#4
MOV LIE,#48
LCALL WRITE_HANZI
MOV CODES,#11
MOV YE,#6
MOV LIE,#0
LCALL WRITE_HANZI
MOV CODES,#12
MOV YE,#6
MOV LIE,#16
LCALL WRITE_HANZI
MOV CODES,#13
MOV YE,#6
MOV LIE,#32
LCALL WRITE_HANZI
MOV CODES,#14
MOV YE,#6
MOV LIE,#48
LCALL WRITE_HANZI
MOV 28H,#0C0H
HAHA
CALL DELAY_500MS
INC 28H
MOV A,28H
CJNE A,#0FFH,NIU
MOV 28H,#0C0H
NIU:MOV COM,28H
LCALL WRITE_COM
LJMP HAHA
/*MOV HANG,#60
MOV LIE,#60
LCALL POINT
MOV HANG,#62
MOV LIE,#60
LCALL POINT*/
LJMP $
;写指令程序
WRITE_COM
CALL BUSY
CLR RS
CLR RW
MOV P0,COM
SETB E
CLR E
RET
;写数据程序
WRITE_DAT
CALL BUSY
SETB RS
CLR RW
MOV P0,DAT
SETB E
CLR E
RET
;读数据程序
READ_DAT
CALL BUSY
SETB RS
SETB RW
MOV P0,#0FFH
MOV DAT,P0
SETB E
CLR E
RET
;判断忙子程序
BUSY:CLR RS
SETB RW
BUSY1:MOV P0,#0FFH
SETB E
MOV A,P0
CLR E
JB ACC.7,BUSY1
RET
;写一个16*16字子程序
WRITE_HANZI:MOV A,27H
CJNE A,#0,C0S
CLR CS1
SETB CS2
LJMP WH3
C0S:CLR CS2
SETB CS1
WH3:MOV R0,#16
MOV R1,#2
MOV DPTR,#TAB1
MOV A,CODES
MOV B,#32
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
WH2:MOV A,#0B8H
ADD A,YE
MOV COM,A
LCALL WRITE_COM
MOV A,#40H
ADD A,LIE
MOV COM,A
LCALL WRITE_COM
WH1:CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRITE_DAT
INC DPTR
DJNZ R0,WH1
MOV R0,#16
INC YE
DJNZ R1,WH2
RET
;写一个16*8字子程序
WRITE_ZIFU:MOV A,27H
CJNE A,#0,C1S
CLR CS1
SETB CS2
LJMP WZ3
C1S:CLR CS2
SETB CS1
WZ3:MOV R0,#8
MOV R1,#2
MOV DPTR,#TAB0
MOV A,CODES
MOV B,#16
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
WZ2:MOV A,#0B8H
ADD A,YE
MOV COM,A
LCALL WRITE_COM
MOV A,#40H
ADD A,LIE
MOV COM,A
LCALL WRITE_COM
WZ1:CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRITE_DAT
INC DPTR
DJNZ R0,WZ1
MOV R0,#8
INC YE
DJNZ R1,WZ2
RET
;打点子程序
POINT:MOV A,27H
CJNE A,#0,C3S
CLR CS1
SETB CS2
LJMP POINT0
C3S:CLR CS2
SETB CS1
POINT0:MOV A,HANG
MOV B,#8
DIV AB
ADD A,#0B8H
MOV COM,A
LCALL WRITE_COM
MOV A,#40H
ADD A,LIE
MOV COM,A
LCALL WRITE_COM
LCALL READ_DAT
MOV A,B
CJNE A,#0,POINT_O
MOV A,#1
LJMP POINT1
POINT_O:CJNE A,#1,POINT_1
MOV A,#2
LJMP POINT1
POINT_1:CJNE A,#2,POINT_2
MOV A,#4
LJMP POINT1
POINT_2:CJNE A,#3,POINT_3
MOV A,#8
LJMP POINT1
POINT_3:CJNE A,#4,POINT_4
MOV A,#10H
LJMP POINT1
POINT_4:CJNE A,#5,POINT_5
MOV A,#20H
LJMP POINT1
POINT_5:CJNE A,#6,POINT_6
MOV A,#40H
LJMP POINT1
POINT_6:MOV A,#80H
POINT1:ORL A,DAT
MOV DAT,A
LCALL WRITE_DAT
RET
;显示图形子程序
MAP:MOV A,27H
CJNE A,#0,C2S
CLR CS1
SETB CS2
LJMP MAP3
C2S:CLR CS2
SETB CS1
MAP3:MOV R0,ALL_LIE
MOV R1,ALL_YE
MOV DPTR,#TAB2
MAP2:MOV A,#0B8H
ADD A,YE
MOV COM,A
LCALL WRITE_COM
MOV A,#40H
ADD A,LIE
MOV COM,A
LCALL WRITE_COM
MAP1:CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRITE_DAT
INC DPTR
DJNZ R0,MAP1
MOV R0,ALL_LIE
INC YE
DJNZ R1,MAP2
RET
;初始化子程序
INIT:MOV COM,#0C0H;设置起始行为第一行
CLR CS1
SETB CS2
LCALL WRITE_COM
CLR CS2
SETB CS1
LCALL WRITE_COM
MOV COM,#3FH;开屏
CLR CS1
SETB CS2
LCALL WRITE_COM
CLR CS2
SETB CS1
LCALL WRITE_COM
RET
;清屏子程序
CLEAR:CLR CS2;左清屏
SETB CS1
MOV R2,#2
CLEAR3:MOV R3,#0B8H
MOV R0,#8
MOV R1,#64
CLEAR2:MOV COM,R3
LCALL WRITE_COM
MOV COM,#40H
LCALL WRITE_COM
CLEAR1:MOV DAT,#0
LCALL WRITE_DAT
DJNZ R1,CLEAR1
INC R3
DJNZ R0,CLEAR2
DJNZ R2,CLEAR0
RET
CLEAR0:CLR CS1;右清屏
SETB CS2
LJMP CLEAR3
;延时0.5秒程序
DELAY_500MS:MOV R7,#25
DELAY_500MS2:MOV R6,#100
DELAY_500MS1:MOV R5,#100
DJNZ R5,$
DJNZ R6,DELAY_500MS1
DJNZ R7,DELAY_500MS2
RET
;8*16字符表
TAB0:
DB 0F0h, 0F8h, 0Ch, 04h ;0
DB 04h, 0Ch, 0F8h, 0F0h
DB 0Fh, 1Fh, 30h, 20h
DB 20h, 30h, 1Fh, 0Fh
DB 00h, 00h, 08h, 0F8h ;1
DB 0FCh, 00h, 00h, 00h
DB 00h, 00h, 20h, 3Fh
DB 3Fh, 20h, 00h, 00h
DB 30h, 38h, 0Ch, 04h ;2
DB 04h, 0Ch, 0F8h, 0F0h
DB 20h, 30h, 38h, 2Ch
DB 26h, 23h, 21h, 38h
DB 10h, 18h, 0Ch, 84h ;3
DB 84h, 0CCh, 78h, 30h
DB 08h, 18h, 30h, 20h
DB 20h, 31h, 1Fh, 0Eh
DB 00h, 0C0h, 70h, 18h ;4
DB 0FCh, 0FEh, 00h, 00h
DB 07h, 05h, 04h, 24h
DB 3Fh, 3Fh, 24h, 04h
DB 0FCh, 0FCh, 0C4h, 44h ;5
DB 44h, 0C4h, 84h, 04h
DB 08h, 18h, 30h, 20h
DB 20h, 30h, 1Fh, 0Fh
DB 0F0h, 0F8h, 8Ch, 44h ;6
DB 44h, 0CCh, 98h, 10h
DB 0Fh, 1Fh, 30h, 20h
DB 20h, 30h, 1Fh, 0Fh
DB 1Ch, 0Ch, 0Ch, 0Ch ;7
DB 0CCh, 0ECh, 3Ch, 1Ch
DB 00h, 00h, 3Ch, 3Fh
DB 03h, 00h, 00h, 00h
DB 30h, 78h, 0CCh, 84h ;8
DB 84h, 0CCh, 78h, 30h
DB 0Eh, 1Fh, 31h, 20h
DB 20h, 31h, 1Fh, 0Eh
DB 0F0h, 0F8h, 0Ch, 04h ;9
DB 04h, 0Ch, 0F8h, 0F0h
DB 08h, 19h, 33h, 22h
DB 22h, 33h, 1Fh, 0Fh
;16*16汉字表
TAB1:
; -- 关 --
db 00h, 00h, 00h, 10h, 11h, 16h, 1Eh,0F4h
db 0F0h, 18h, 1Eh, 17h, 1Ah, 90h, 00h, 00h
db 00h, 80h, 41h, 61h, 31h, 19h, 0Fh, 07h
db 03h, 07h, 1Dh, 39h, 71h,0E1h,0C1h, 40h
; -- 雎 --
db 00h,0FEh,0FCh, 44h,0FCh,0FEh, 44h, 20h
db 0F8h,0EFh, 96h, 90h,0FFh,0F6h, 90h, 98h
db 00h,0FFh,0FFh, 62h, 7Fh, 3Fh, 10h, 00h
db 0FFh, 7Fh, 44h, 44h, 7Fh, 7Fh, 44h, 64h
; -- 鸠 --
db 00h, 10h, 10h,0FFh,0FEh, 10h,0F0h, 0Ch
db 0FCh,0FEh, 57h,0C5h,0FCh,0FEh, 04h, 00h
db 00h, 80h, 60h, 3Fh, 1Fh, 80h,0FFh, 52h
db 33h, 13h, 12h, 12h, 5Bh,0D2h, 7Eh, 3Fh
; -- 在 --
db 00h, 00h, 08h, 08h,0C8h,0F8h, 3Ch, 0Fh
db 0Ah,0E8h,0C8h, 08h, 88h, 08h, 0Ch, 08h
db 00h, 08h, 06h, 03h,0FFh, 7Fh, 41h, 41h
db 41h, 7Fh, 7Fh, 41h, 41h, 41h, 60h, 40h
; -- 河 --
db 00h, 10h,0E1h,0CEh, 0Ch, 84h,0F4h,0E4h
db 24h,0E4h,0F4h, 24h,0FCh,0FCh, 06h, 04h
db 00h, 04h, 78h,0F8h, 6Eh, 03h, 0Fh, 07h
db 04h, 0Fh, 27h, 40h,0FFh, 7Fh, 00h, 00h
; -- 之 --
db 00h, 00h, 00h, 08h, 08h, 08h, 09h, 0Bh
db 8Eh,0CAh, 68h, 38h, 1Ch, 08h, 00h, 00h
db 00h, 10h, 30h, 18h, 0Ch, 0Eh, 1Ah, 31h
db 61h, 60h, 60h, 60h, 60h, 60h, 60h, 20h
; -- 洲 --
db 00h, 10h,0E1h, 4Eh,0B4h,0E0h,0FFh,0FEh
db 60h,0C0h,0FEh,0FCh, 60h,0C0h,0FFh,0FEh
db 00h, 04h,0FCh, 7Eh, 83h, 60h, 3Fh, 0Fh
db 00h, 01h, 3Fh, 1Fh, 00h, 01h,0FFh, 7Fh
; -- 窈 --
db 00h, 08h, 1Ch, 0Eh,0A4h,0F4h, 9Ch, 0Dh
db 07h, 0Eh,0DCh,0B4h, 34h, 1Ch, 8Eh, 04h
db 00h, 00h, 24h,0F6h, 57h, 4Dh, 4Ch, 77h
db 0E6h, 43h, 7Fh, 3Fh, 41h,0FFh, 7Fh, 01h
; -- 窕 --
db 00h, 08h, 1Ch, 8Eh,0A4h, 34h,0FCh,0CDh
db 07h,0EEh,0DCh, 34h,0B4h,0DCh, 8Eh, 04h
db 00h, 00h, 88h, 98h, 4Dh, 65h, 3Fh, 1Fh
db 00h, 7Fh,0FFh,0CDh,0D9h,0C8h,0E0h, 40h
; -- 淑 --
db 00h, 30h, 63h, 06h, 40h, 40h,0FFh,0FEh
db 48h, 40h,0FCh,0FCh, 04h,0FCh,0FEh, 04h
db 00h, 10h,0FCh, 3Fh, 18h, 0Eh,0FFh, 7Fh
db 02h, 84h, 60h, 1Bh, 06h, 1Bh,0F0h, 60h
; -- 女 --
db 00h, 20h, 20h, 20h, 20h,0E0h,0F8h, 3Fh
db 26h, 20h,0E0h,0E0h, 20h, 20h, 30h, 20h
db 00h, 80h, 80h, 40h, 43h, 23h, 36h, 1Ch
db 0Ch, 1Fh, 1Bh, 30h, 60h,0E0h, 40h, 00h
; -- 君 --
db 00h, 00h, 10h, 10h, 92h, 92h,0FEh,0FEh
db 92h, 92h, 92h,0FEh,0FFh, 12h, 18h, 10h
db 00h, 10h, 08h, 0Ch, 06h,0FFh, 7Dh, 44h
db 44h, 44h, 44h, 45h,0FCh, 7Eh, 04h, 00h
; -- 子 --
db 00h, 80h, 80h, 80h, 82h, 82h, 82h, 82h
db 0E2h,0F2h, 9Ah, 8Eh, 87h, 82h,0C0h, 80h
db 00h, 00h, 00h, 00h, 00h, 00h, 40h, 40h
db 0FFh, 7Fh, 00h, 00h, 00h, 00h, 00h, 00h
; -- 好 --
db 00h, 20h, 20h,0F8h,0FFh, 26h,0F0h,0E0h
db 82h, 82h, 82h,0F2h,0EAh, 8Eh,0C7h, 82h
db 00h, 80h, 63h, 37h, 1Ch, 0Fh, 7Bh, 30h
db 00h, 20h, 40h,0FFh, 7Fh, 00h, 00h, 00h
; -- 逑 --
db 00h, 20h, 22h,0E6h,0ECh, 20h, 10h, 30h
db 70h, 50h,0FFh,0FEh, 50h, 52h, 3Ah, 14h
db 00h, 80h,0C0h, 7Fh, 3Fh, 20h, 4Eh,0CCh
db 0C6h,0D1h,0FFh,0DFh,0C1h,0C6h,0C6h, 4Ch
;图形表
TAB2:
db 0FFh,0FFh,0FFh,0DBh, 37h,0FFh, 8Bh,0ABh
db 83h,0ABh, 83h,0ABh, 8Bh,0FBh,0FFh, 77h
db 77h, 17h, 57h, 57h, 53h, 57h, 57h, 17h
db 77h, 77h,0FFh,0EFh, 0Fh,0E3h, 0Fh,0EFh
db 0EFh,0EFh, 03h,0EFh,0EFh,0EFh,0FFh,0EFh
db 0Fh,0E3h, 0Fh,0FFh, 07h, 57h, 53h, 57h
db 07h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FDh,0E0h,0FFh,0EBh,0F2h
db 0FAh,0EAh,0E2h,0FAh,0F2h,0EBh,0FFh,0EEh
db 0EFh,0F7h,0F9h,0FDh,0FDh,0FDh,0E1h,0EFh
db 0EFh,0E2h,0FFh,0ECh,0F5h,0FBh,0F4h,0FFh
db 0E0h,0EEh,0EEh,0EEh,0EEh,0E0h,0FFh,0EFh
db 0F4h,0FBh,0F4h,0FFh,0E0h,0EFh,0F4h,0FBh
db 0F5h,0EEh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0EFh, 6Eh,0AAh, 0Ah,0A2h
db 0A8h,0AAh,0AAh, 2Ah,0EEh,0EFh,0FFh,0EEh
db 0E9h, 0Fh,0FBh,0EBh, 9Bh,0FBh,0FBh, 00h
db 0FBh,0FBh,0FFh,0DFh,0DDh,0D5h, 4Dh, 9Dh
db 00h, 9Dh, 4Dh,0D5h,0DDh,0DFh,0FFh,0FFh
db 0E3h, 81h, 81h,0E3h,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FEh,0FFh,0FFh,0F8h,0FAh
db 0FAh,0FAh,0FAh, 78h,0BFh,0BFh,0BFh, 7Bh
db 7Dh,0BEh,0BDh,0BBh,0BBh, 3Ah,0BAh,0BAh
db 0BBh,0BBh,0BFh, 7Dh, 7Dh,0FEh, 7Fh, 7Fh
db 78h, 7Fh,0FFh,0FEh,0FDh,0FDh,0FFh,0FFh
db 0FFh,0FCh,0FCh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh, 7Fh, 9Fh,0EFh
db 73h, 7Dh,0BEh, 5Fh, 9Fh,0E7h, 7Fh,0BBh
db 0DDh,0DDh,0BBh, 7Fh,0FEh, 7Bh,0BDh,0DDh
db 0DBh,0BFh, 73h,0CFh,0BDh, 7Eh, 7Fh,0FFh
db 0FFh,0FFh,0F8h, 87h, 7Fh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FEh,0FEh, 0Eh
db 0F3h,0FDh,0FEh, 1Fh,0EFh,0F7h,0F6h,0EDh
db 6Bh, 68h,0D4h,0D6h,0D7h,0DEh,0EDh,0EBh
db 0E8h,0DCh, 3Eh, 1Fh,0EFh,0FFh,0FFh,0FEh
db 0FCh,0F2h, 0Dh,0FDh,0FCh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FCh, 7Bh, 37h, 2Fh,0AAh,0D5h,0CBh,0DBh
db 0B6h,0B6h, 6Fh, 6Fh, 6Ch, 6Ch,0B7h,0B7h
db 9Bh,0ACh,0BFh,0DFh,0DEh,0AFh, 2Fh, 37h
db 73h,0FCh,0FFh,0C3h,0BDh, 66h,0FAh,0FEh
db 0FDh,0F9h,0FDh,0FEh,0FEh, 7Eh, 00h,0BDh
db 66h,0FAh,0FEh,0FDh,0F9h,0FDh,0FEh,0FEh
db 7Eh, 3Ch, 81h,0C3h,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0C7h,0C3h,0C1h
db 0C8h,0DCh,0FFh,0F8h,0F7h,0E8h,0D2h,0F2h
db 0F8h,0FCh,0FEh,0FCh,0FCh,0FEh,0FCh,0F8h
db 0F2h,0F2h,0F8h,0DFh,0EFh,0F7h,0F8h,0FFh
db 0DCh,0C8h,0C1h,0DFh,0DFh,0FFh,0FEh,0FDh
db 0FBh,0F7h,0F3h,0F9h,0FCh,0FEh,0FFh,0FFh
db 0FFh,0FEh,0FDh,0FBh,0F7h,0F3h,0F9h,0FCh
db 0FEh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
END
C语言驱动如下:
#include<at89x52.h>
sbit DI=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit CS1=P2^3;
sbit CS2=P2^4;
unsigned char code Tab1[][32];
unsigned char code Tab2[][16];
//判断忙指令
void Busy()
{
DI=0;
RW=1;
do
{
P0=0xff;
E=1;
P0&=0x80;
E=0;
}
while(P0!=0);
}
//写指令程序
void Write_com( unsigned char com)
{
Busy();
DI=0;
RW=0;
E=1;
P0=com;
E=0;
}
//写数据程序
void Write_dat(unsigned char dat)
{
Busy();
DI=1;
RW=0;
E=1;
P0=dat;
E=0;
}
//写汉字程序
void Han_Zi(bit m,unsigned char page,unsigned char row,unsigned char n)
{
unsigned char i,j;
if(m)
{
CS1=0;
CS2=1;
}
else
{
CS1=1;
CS2=0;
}
for(j=0;j<2;j++)
{
Write_com(page+0xb8+j);
Write_com(row+0x40);
for(i=0;i<16;i++)
{
Write_dat(Tab1[n][16*j+i]);
}
}
}
//写字符程序
void Zi_Fu(bit m,unsigned char page,unsigned char row,unsigned char n)
{
unsigned char i,j;
if(m)
{
CS1=0;
CS2=1;
}
else
{
CS1=1;
CS2=0;
}
for(j=0;j<2;j++)
{
Write_com(page+0xb8+j);
Write_com(row+0x40);
for(i=0;i<8;i++)
{
Write_dat(Tab2[n][8*j+i]);
}
}
}
//打点子程序,m=0左屏幕打点,m=1右屏幕打点,x,y为点的坐标
void point(bit m,unsigned char x,unsigned char y)
{unsigned char j,a,b,c,d,e,f,g,h,i;
if(m)
{
CS1=0;
CS2=1;
}
else
{
CS1=1;
CS2=0;
}
if(i==x/8);
else
{
i=x/8;
a=b=c=d=e=f=g=h=0;
}
Write_com(0xb8+x/8);
Write_com(0x40+y);
j=x%8;
switch(j)
{
case 0:
a=1;break;
case 1:
b=2;break;
case 2:
c=4;break;
case 3:
d=8;break;
case 4:
e=0x10;break;
case 5:
f=0x20;break;
case 6:
g=0x40;break;
case 7:
h=0x80;break;
}
Write_dat(a|b|c|d|e|f|g|h);
}
//画线子程序,M=1时画横线,M=0时画竖线,N=0时在左边画线,N=1时在右边画线,Hang起始行,Lie起始列,Longth线长度
void Line(bit m,bit n,unsigned char Hang,unsigned char Lie,unsigned char Longth)
{
unsigned char i;
if(m)
{
if(n)//右边画横线
{
for(i=Lie;i<=Longth+Lie;i++)
point(1,Hang,i);
}
else//左边画横线
{
for(i=Lie;i<=Longth+Lie;i++)
point(0,Hang,i);
}
}
else
{
if(n)//右边画列线
{
Longth+=Hang;
for(i=Hang;i<=Longth;i++)
point(1,i,Lie);
}
else//左边画列线
{
Longth+=Hang;
for(i=Hang;i<=Longth;i++)
point(0,i,Lie);
}
}
}
//清屏程序
void Clear()
{
unsigned char i,j;
CS1=1;
CS2=0;
for(j=0;j<8;j++)
{
Write_com(0xb8+j);
Write_com(0x40);
for(i=0;i<64;i++)
Write_dat(0);
}
CS1=0;
CS2=1;
for(j=0;j<8;j++)
{
Write_com(0xb8+j);
Write_com(0x40);
for(i=0;i<64;i++)
Write_dat(0);
}
}
//初始化程序
void Init()
{
Busy();
CS1=1;
CS2=0;
Write_com(0xc0);//设置起始行为第一行
Write_com(0x3f);//开显示关显示为0x3e
CS1=0;
CS2=1;
Write_com(0xc0);
Write_com(0x3f);
}
//延时一秒子程序
/*void delay()
{
unsigned char a,b,c;
for(a=0;a<110;a++)
for(b=0;b<100;b++)
for(c=0;c<30;c++);
}*/
void main()
{
Init();
Clear();
Line(1,1,0,0,63);
Line(1,0,0,0,63);
Line(1,1,63,0,63);
Line(1,0,63,0,63);
Line(0,0,0,0,63);
Line(0,1,0,63,63);
Han_Zi(1,0,0,0);
Zi_Fu(1,2,0,0);
point(1,24,4);
point(1,29,4);
while(1);
}
//汉字表
unsigned char code Tab1[][32]={
0x01,0x01,0xFD,0x25,0x25,0x25,0xFD,0xA5,
0xA7,0xA5,0xFD,0x25,0x35,0x27,0x05,0x01,
0x40,0x20,0x9F,0x80,0x42,0x42,0x26,0x2A,
0x12,0x2A,0x26,0x42,0x40,0xC0,0x40,0x00,};
//字符表
unsigned char code Tab2[][16]={
0xF0,0xF8,0x0C,0x04,0x04,0x0C,0xF8,0xF0, // -0-
0x0F,0x1F,0x30,0x20,0x20,0x30,0x1F,0x0F,};
需要增加汉字或字符可以在表格中加,这里只做演示
tufei5202006
(2008-8-17 10:53:36)
qqqqqqqqqqqqqqqqqqqqqqqqqqq
锅牛
(2008-9-30 15:02:37)
谢谢了!
submars
(2008-10-03 15:51:19)
2楼的程序直接仿真正常显示,但还是不太清楚ampire12864的具体用法。
查看全部回复
我也来说两句
最新回复
liaoguobao00 (2008-8-16 21:08:51)
;引脚定义
E BIT P2.0;使能信号线
RW BIT P2.1;读/写信号线
RS BIT P2.2;数据/指令信号线
CS2 BIT P2.3;右半屏控制信号线
CS1 BIT P2.4;左半屏控制信号线
;空间分配
COM EQU 20H;指令专用寄存器
DAT EQU 21H;数据专用寄存器
CODES EQU 22H;字在表格中的位置专用寄存器
YE EQU 23H;字所在的页专用寄存器
LIE EQU 24H;字所在的列专用寄存器
ALL_YE EQU 25H;图形的总页数专用寄存器
ALL_LIE EQU 26H;图形的总列数专用寄存器
CS EQU 27H;左右半屏控制专用寄存器,为0时在左半屏,为1时在右半屏
HANG EQU 28H;点所在的行专用寄存器
;主程序
ORG 1000H
LCALL INIT
LCALL CLEAR
MOV 27H,#0
MOV LIE,#0
MOV YE,#0
MOV ALL_YE,#8
MOV ALL_LIE,#64
LCALL MAP
MOV 27H,#1
MOV CODES,#0
MOV YE,#0
MOV LIE,#0
LCALL WRITE_HANZI
MOV CODES,#0
MOV YE,#0
MOV LIE,#16
LCALL WRITE_HANZI
MOV CODES,#1
MOV YE,#0
MOV LIE,#32
LCALL WRITE_HANZI
MOV CODES,#2
MOV YE,#0
MOV LIE,#48
LCALL WRITE_HANZI
MOV CODES,#3
MOV YE,#2
MOV LIE,#0
LCALL WRITE_HANZI
MOV CODES,#4
MOV YE,#2
MOV LIE,#16
LCALL WRITE_HANZI
MOV CODES,#5
MOV YE,#2
MOV LIE,#32
LCALL WRITE_HANZI
MOV CODES,#6
MOV YE,#2
MOV LIE,#48
LCALL WRITE_HANZI
MOV CODES,#7
MOV YE,#4
MOV LIE,#0
LCALL WRITE_HANZI
MOV CODES,#8
MOV YE,#4
MOV LIE,#16
LCALL WRITE_HANZI
MOV CODES,#9
MOV YE,#4
MOV LIE,#32
LCALL WRITE_HANZI
MOV CODES,#10
MOV YE,#4
MOV LIE,#48
LCALL WRITE_HANZI
MOV CODES,#11
MOV YE,#6
MOV LIE,#0
LCALL WRITE_HANZI
MOV CODES,#12
MOV YE,#6
MOV LIE,#16
LCALL WRITE_HANZI
MOV CODES,#13
MOV YE,#6
MOV LIE,#32
LCALL WRITE_HANZI
MOV CODES,#14
MOV YE,#6
MOV LIE,#48
LCALL WRITE_HANZI
MOV 28H,#0C0H
HAHA
INC 28H
MOV A,28H
CJNE A,#0FFH,NIU
MOV 28H,#0C0H
NIU:MOV COM,28H
LCALL WRITE_COM
LJMP HAHA
/*MOV HANG,#60
MOV LIE,#60
LCALL POINT
MOV HANG,#62
MOV LIE,#60
LCALL POINT*/
LJMP $
;写指令程序
WRITE_COM
CLR RS
CLR RW
MOV P0,COM
SETB E
CLR E
RET
;写数据程序
WRITE_DAT
SETB RS
CLR RW
MOV P0,DAT
SETB E
CLR E
RET
;读数据程序
READ_DAT
SETB RS
SETB RW
MOV P0,#0FFH
MOV DAT,P0
SETB E
CLR E
RET
;判断忙子程序
BUSY:CLR RS
SETB RW
BUSY1:MOV P0,#0FFH
SETB E
MOV A,P0
CLR E
JB ACC.7,BUSY1
RET
;写一个16*16字子程序
WRITE_HANZI:MOV A,27H
CJNE A,#0,C0S
CLR CS1
SETB CS2
LJMP WH3
C0S:CLR CS2
SETB CS1
WH3:MOV R0,#16
MOV R1,#2
MOV DPTR,#TAB1
MOV A,CODES
MOV B,#32
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
WH2:MOV A,#0B8H
ADD A,YE
MOV COM,A
LCALL WRITE_COM
MOV A,#40H
ADD A,LIE
MOV COM,A
LCALL WRITE_COM
WH1:CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRITE_DAT
INC DPTR
DJNZ R0,WH1
MOV R0,#16
INC YE
DJNZ R1,WH2
RET
;写一个16*8字子程序
WRITE_ZIFU:MOV A,27H
CJNE A,#0,C1S
CLR CS1
SETB CS2
LJMP WZ3
C1S:CLR CS2
SETB CS1
WZ3:MOV R0,#8
MOV R1,#2
MOV DPTR,#TAB0
MOV A,CODES
MOV B,#16
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
WZ2:MOV A,#0B8H
ADD A,YE
MOV COM,A
LCALL WRITE_COM
MOV A,#40H
ADD A,LIE
MOV COM,A
LCALL WRITE_COM
WZ1:CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRITE_DAT
INC DPTR
DJNZ R0,WZ1
MOV R0,#8
INC YE
DJNZ R1,WZ2
RET
;打点子程序
POINT:MOV A,27H
CJNE A,#0,C3S
CLR CS1
SETB CS2
LJMP POINT0
C3S:CLR CS2
SETB CS1
POINT0:MOV A,HANG
MOV B,#8
DIV AB
ADD A,#0B8H
MOV COM,A
LCALL WRITE_COM
MOV A,#40H
ADD A,LIE
MOV COM,A
LCALL WRITE_COM
LCALL READ_DAT
MOV A,B
CJNE A,#0,POINT_O
MOV A,#1
LJMP POINT1
POINT_O:CJNE A,#1,POINT_1
MOV A,#2
LJMP POINT1
POINT_1:CJNE A,#2,POINT_2
MOV A,#4
LJMP POINT1
POINT_2:CJNE A,#3,POINT_3
MOV A,#8
LJMP POINT1
POINT_3:CJNE A,#4,POINT_4
MOV A,#10H
LJMP POINT1
POINT_4:CJNE A,#5,POINT_5
MOV A,#20H
LJMP POINT1
POINT_5:CJNE A,#6,POINT_6
MOV A,#40H
LJMP POINT1
POINT_6:MOV A,#80H
POINT1:ORL A,DAT
MOV DAT,A
LCALL WRITE_DAT
RET
;显示图形子程序
MAP:MOV A,27H
CJNE A,#0,C2S
CLR CS1
SETB CS2
LJMP MAP3
C2S:CLR CS2
SETB CS1
MAP3:MOV R0,ALL_LIE
MOV R1,ALL_YE
MOV DPTR,#TAB2
MAP2:MOV A,#0B8H
ADD A,YE
MOV COM,A
LCALL WRITE_COM
MOV A,#40H
ADD A,LIE
MOV COM,A
LCALL WRITE_COM
MAP1:CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRITE_DAT
INC DPTR
DJNZ R0,MAP1
MOV R0,ALL_LIE
INC YE
DJNZ R1,MAP2
RET
;初始化子程序
INIT:MOV COM,#0C0H;设置起始行为第一行
CLR CS1
SETB CS2
LCALL WRITE_COM
CLR CS2
SETB CS1
LCALL WRITE_COM
MOV COM,#3FH;开屏
CLR CS1
SETB CS2
LCALL WRITE_COM
CLR CS2
SETB CS1
LCALL WRITE_COM
RET
;清屏子程序
CLEAR:CLR CS2;左清屏
SETB CS1
MOV R2,#2
CLEAR3:MOV R3,#0B8H
MOV R0,#8
MOV R1,#64
CLEAR2:MOV COM,R3
LCALL WRITE_COM
MOV COM,#40H
LCALL WRITE_COM
CLEAR1:MOV DAT,#0
LCALL WRITE_DAT
DJNZ R1,CLEAR1
INC R3
DJNZ R0,CLEAR2
DJNZ R2,CLEAR0
RET
CLEAR0:CLR CS1;右清屏
SETB CS2
LJMP CLEAR3
;延时0.5秒程序
DELAY_500MS:MOV R7,#25
DELAY_500MS2:MOV R6,#100
DELAY_500MS1:MOV R5,#100
DJNZ R5,$
DJNZ R6,DELAY_500MS1
DJNZ R7,DELAY_500MS2
RET
;8*16字符表
TAB0:
DB 0F0h, 0F8h, 0Ch, 04h ;0
DB 04h, 0Ch, 0F8h, 0F0h
DB 0Fh, 1Fh, 30h, 20h
DB 20h, 30h, 1Fh, 0Fh
DB 00h, 00h, 08h, 0F8h ;1
DB 0FCh, 00h, 00h, 00h
DB 00h, 00h, 20h, 3Fh
DB 3Fh, 20h, 00h, 00h
DB 30h, 38h, 0Ch, 04h ;2
DB 04h, 0Ch, 0F8h, 0F0h
DB 20h, 30h, 38h, 2Ch
DB 26h, 23h, 21h, 38h
DB 10h, 18h, 0Ch, 84h ;3
DB 84h, 0CCh, 78h, 30h
DB 08h, 18h, 30h, 20h
DB 20h, 31h, 1Fh, 0Eh
DB 00h, 0C0h, 70h, 18h ;4
DB 0FCh, 0FEh, 00h, 00h
DB 07h, 05h, 04h, 24h
DB 3Fh, 3Fh, 24h, 04h
DB 0FCh, 0FCh, 0C4h, 44h ;5
DB 44h, 0C4h, 84h, 04h
DB 08h, 18h, 30h, 20h
DB 20h, 30h, 1Fh, 0Fh
DB 0F0h, 0F8h, 8Ch, 44h ;6
DB 44h, 0CCh, 98h, 10h
DB 0Fh, 1Fh, 30h, 20h
DB 20h, 30h, 1Fh, 0Fh
DB 1Ch, 0Ch, 0Ch, 0Ch ;7
DB 0CCh, 0ECh, 3Ch, 1Ch
DB 00h, 00h, 3Ch, 3Fh
DB 03h, 00h, 00h, 00h
DB 30h, 78h, 0CCh, 84h ;8
DB 84h, 0CCh, 78h, 30h
DB 0Eh, 1Fh, 31h, 20h
DB 20h, 31h, 1Fh, 0Eh
DB 0F0h, 0F8h, 0Ch, 04h ;9
DB 04h, 0Ch, 0F8h, 0F0h
DB 08h, 19h, 33h, 22h
DB 22h, 33h, 1Fh, 0Fh
;16*16汉字表
TAB1:
; -- 关 --
db 00h, 00h, 00h, 10h, 11h, 16h, 1Eh,0F4h
db 0F0h, 18h, 1Eh, 17h, 1Ah, 90h, 00h, 00h
db 00h, 80h, 41h, 61h, 31h, 19h, 0Fh, 07h
db 03h, 07h, 1Dh, 39h, 71h,0E1h,0C1h, 40h
; -- 雎 --
db 00h,0FEh,0FCh, 44h,0FCh,0FEh, 44h, 20h
db 0F8h,0EFh, 96h, 90h,0FFh,0F6h, 90h, 98h
db 00h,0FFh,0FFh, 62h, 7Fh, 3Fh, 10h, 00h
db 0FFh, 7Fh, 44h, 44h, 7Fh, 7Fh, 44h, 64h
; -- 鸠 --
db 00h, 10h, 10h,0FFh,0FEh, 10h,0F0h, 0Ch
db 0FCh,0FEh, 57h,0C5h,0FCh,0FEh, 04h, 00h
db 00h, 80h, 60h, 3Fh, 1Fh, 80h,0FFh, 52h
db 33h, 13h, 12h, 12h, 5Bh,0D2h, 7Eh, 3Fh
; -- 在 --
db 00h, 00h, 08h, 08h,0C8h,0F8h, 3Ch, 0Fh
db 0Ah,0E8h,0C8h, 08h, 88h, 08h, 0Ch, 08h
db 00h, 08h, 06h, 03h,0FFh, 7Fh, 41h, 41h
db 41h, 7Fh, 7Fh, 41h, 41h, 41h, 60h, 40h
; -- 河 --
db 00h, 10h,0E1h,0CEh, 0Ch, 84h,0F4h,0E4h
db 24h,0E4h,0F4h, 24h,0FCh,0FCh, 06h, 04h
db 00h, 04h, 78h,0F8h, 6Eh, 03h, 0Fh, 07h
db 04h, 0Fh, 27h, 40h,0FFh, 7Fh, 00h, 00h
; -- 之 --
db 00h, 00h, 00h, 08h, 08h, 08h, 09h, 0Bh
db 8Eh,0CAh, 68h, 38h, 1Ch, 08h, 00h, 00h
db 00h, 10h, 30h, 18h, 0Ch, 0Eh, 1Ah, 31h
db 61h, 60h, 60h, 60h, 60h, 60h, 60h, 20h
; -- 洲 --
db 00h, 10h,0E1h, 4Eh,0B4h,0E0h,0FFh,0FEh
db 60h,0C0h,0FEh,0FCh, 60h,0C0h,0FFh,0FEh
db 00h, 04h,0FCh, 7Eh, 83h, 60h, 3Fh, 0Fh
db 00h, 01h, 3Fh, 1Fh, 00h, 01h,0FFh, 7Fh
; -- 窈 --
db 00h, 08h, 1Ch, 0Eh,0A4h,0F4h, 9Ch, 0Dh
db 07h, 0Eh,0DCh,0B4h, 34h, 1Ch, 8Eh, 04h
db 00h, 00h, 24h,0F6h, 57h, 4Dh, 4Ch, 77h
db 0E6h, 43h, 7Fh, 3Fh, 41h,0FFh, 7Fh, 01h
; -- 窕 --
db 00h, 08h, 1Ch, 8Eh,0A4h, 34h,0FCh,0CDh
db 07h,0EEh,0DCh, 34h,0B4h,0DCh, 8Eh, 04h
db 00h, 00h, 88h, 98h, 4Dh, 65h, 3Fh, 1Fh
db 00h, 7Fh,0FFh,0CDh,0D9h,0C8h,0E0h, 40h
; -- 淑 --
db 00h, 30h, 63h, 06h, 40h, 40h,0FFh,0FEh
db 48h, 40h,0FCh,0FCh, 04h,0FCh,0FEh, 04h
db 00h, 10h,0FCh, 3Fh, 18h, 0Eh,0FFh, 7Fh
db 02h, 84h, 60h, 1Bh, 06h, 1Bh,0F0h, 60h
; -- 女 --
db 00h, 20h, 20h, 20h, 20h,0E0h,0F8h, 3Fh
db 26h, 20h,0E0h,0E0h, 20h, 20h, 30h, 20h
db 00h, 80h, 80h, 40h, 43h, 23h, 36h, 1Ch
db 0Ch, 1Fh, 1Bh, 30h, 60h,0E0h, 40h, 00h
; -- 君 --
db 00h, 00h, 10h, 10h, 92h, 92h,0FEh,0FEh
db 92h, 92h, 92h,0FEh,0FFh, 12h, 18h, 10h
db 00h, 10h, 08h, 0Ch, 06h,0FFh, 7Dh, 44h
db 44h, 44h, 44h, 45h,0FCh, 7Eh, 04h, 00h
; -- 子 --
db 00h, 80h, 80h, 80h, 82h, 82h, 82h, 82h
db 0E2h,0F2h, 9Ah, 8Eh, 87h, 82h,0C0h, 80h
db 00h, 00h, 00h, 00h, 00h, 00h, 40h, 40h
db 0FFh, 7Fh, 00h, 00h, 00h, 00h, 00h, 00h
; -- 好 --
db 00h, 20h, 20h,0F8h,0FFh, 26h,0F0h,0E0h
db 82h, 82h, 82h,0F2h,0EAh, 8Eh,0C7h, 82h
db 00h, 80h, 63h, 37h, 1Ch, 0Fh, 7Bh, 30h
db 00h, 20h, 40h,0FFh, 7Fh, 00h, 00h, 00h
; -- 逑 --
db 00h, 20h, 22h,0E6h,0ECh, 20h, 10h, 30h
db 70h, 50h,0FFh,0FEh, 50h, 52h, 3Ah, 14h
db 00h, 80h,0C0h, 7Fh, 3Fh, 20h, 4Eh,0CCh
db 0C6h,0D1h,0FFh,0DFh,0C1h,0C6h,0C6h, 4Ch
;图形表
TAB2:
db 0FFh,0FFh,0FFh,0DBh, 37h,0FFh, 8Bh,0ABh
db 83h,0ABh, 83h,0ABh, 8Bh,0FBh,0FFh, 77h
db 77h, 17h, 57h, 57h, 53h, 57h, 57h, 17h
db 77h, 77h,0FFh,0EFh, 0Fh,0E3h, 0Fh,0EFh
db 0EFh,0EFh, 03h,0EFh,0EFh,0EFh,0FFh,0EFh
db 0Fh,0E3h, 0Fh,0FFh, 07h, 57h, 53h, 57h
db 07h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FDh,0E0h,0FFh,0EBh,0F2h
db 0FAh,0EAh,0E2h,0FAh,0F2h,0EBh,0FFh,0EEh
db 0EFh,0F7h,0F9h,0FDh,0FDh,0FDh,0E1h,0EFh
db 0EFh,0E2h,0FFh,0ECh,0F5h,0FBh,0F4h,0FFh
db 0E0h,0EEh,0EEh,0EEh,0EEh,0E0h,0FFh,0EFh
db 0F4h,0FBh,0F4h,0FFh,0E0h,0EFh,0F4h,0FBh
db 0F5h,0EEh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0EFh, 6Eh,0AAh, 0Ah,0A2h
db 0A8h,0AAh,0AAh, 2Ah,0EEh,0EFh,0FFh,0EEh
db 0E9h, 0Fh,0FBh,0EBh, 9Bh,0FBh,0FBh, 00h
db 0FBh,0FBh,0FFh,0DFh,0DDh,0D5h, 4Dh, 9Dh
db 00h, 9Dh, 4Dh,0D5h,0DDh,0DFh,0FFh,0FFh
db 0E3h, 81h, 81h,0E3h,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FEh,0FFh,0FFh,0F8h,0FAh
db 0FAh,0FAh,0FAh, 78h,0BFh,0BFh,0BFh, 7Bh
db 7Dh,0BEh,0BDh,0BBh,0BBh, 3Ah,0BAh,0BAh
db 0BBh,0BBh,0BFh, 7Dh, 7Dh,0FEh, 7Fh, 7Fh
db 78h, 7Fh,0FFh,0FEh,0FDh,0FDh,0FFh,0FFh
db 0FFh,0FCh,0FCh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh, 7Fh, 9Fh,0EFh
db 73h, 7Dh,0BEh, 5Fh, 9Fh,0E7h, 7Fh,0BBh
db 0DDh,0DDh,0BBh, 7Fh,0FEh, 7Bh,0BDh,0DDh
db 0DBh,0BFh, 73h,0CFh,0BDh, 7Eh, 7Fh,0FFh
db 0FFh,0FFh,0F8h, 87h, 7Fh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FEh,0FEh, 0Eh
db 0F3h,0FDh,0FEh, 1Fh,0EFh,0F7h,0F6h,0EDh
db 6Bh, 68h,0D4h,0D6h,0D7h,0DEh,0EDh,0EBh
db 0E8h,0DCh, 3Eh, 1Fh,0EFh,0FFh,0FFh,0FEh
db 0FCh,0F2h, 0Dh,0FDh,0FCh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 0FCh, 7Bh, 37h, 2Fh,0AAh,0D5h,0CBh,0DBh
db 0B6h,0B6h, 6Fh, 6Fh, 6Ch, 6Ch,0B7h,0B7h
db 9Bh,0ACh,0BFh,0DFh,0DEh,0AFh, 2Fh, 37h
db 73h,0FCh,0FFh,0C3h,0BDh, 66h,0FAh,0FEh
db 0FDh,0F9h,0FDh,0FEh,0FEh, 7Eh, 00h,0BDh
db 66h,0FAh,0FEh,0FDh,0F9h,0FDh,0FEh,0FEh
db 7Eh, 3Ch, 81h,0C3h,0FFh,0FFh,0FFh,0FFh
db 0FFh,0FFh,0FFh,0FFh,0FFh,0C7h,0C3h,0C1h
db 0C8h,0DCh,0FFh,0F8h,0F7h,0E8h,0D2h,0F2h
db 0F8h,0FCh,0FEh,0FCh,0FCh,0FEh,0FCh,0F8h
db 0F2h,0F2h,0F8h,0DFh,0EFh,0F7h,0F8h,0FFh
db 0DCh,0C8h,0C1h,0DFh,0DFh,0FFh,0FEh,0FDh
db 0FBh,0F7h,0F3h,0F9h,0FCh,0FEh,0FFh,0FFh
db 0FFh,0FEh,0FDh,0FBh,0F7h,0F3h,0F9h,0FCh
db 0FEh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
END
C语言驱动如下:
#include<at89x52.h>
sbit DI=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit CS1=P2^3;
sbit CS2=P2^4;
unsigned char code Tab1[][32];
unsigned char code Tab2[][16];
//判断忙指令
void Busy()
{
DI=0;
RW=1;
do
{
P0=0xff;
E=1;
P0&=0x80;
E=0;
}
while(P0!=0);
}
//写指令程序
void Write_com( unsigned char com)
{
Busy();
DI=0;
RW=0;
E=1;
P0=com;
E=0;
}
//写数据程序
void Write_dat(unsigned char dat)
{
Busy();
DI=1;
RW=0;
E=1;
P0=dat;
E=0;
}
//写汉字程序
void Han_Zi(bit m,unsigned char page,unsigned char row,unsigned char n)
{
unsigned char i,j;
if(m)
{
CS1=0;
CS2=1;
}
else
{
CS1=1;
CS2=0;
}
for(j=0;j<2;j++)
{
Write_com(page+0xb8+j);
Write_com(row+0x40);
for(i=0;i<16;i++)
{
Write_dat(Tab1[n][16*j+i]);
}
}
}
//写字符程序
void Zi_Fu(bit m,unsigned char page,unsigned char row,unsigned char n)
{
unsigned char i,j;
if(m)
{
CS1=0;
CS2=1;
}
else
{
CS1=1;
CS2=0;
}
for(j=0;j<2;j++)
{
Write_com(page+0xb8+j);
Write_com(row+0x40);
for(i=0;i<8;i++)
{
Write_dat(Tab2[n][8*j+i]);
}
}
}
//打点子程序,m=0左屏幕打点,m=1右屏幕打点,x,y为点的坐标
void point(bit m,unsigned char x,unsigned char y)
{unsigned char j,a,b,c,d,e,f,g,h,i;
if(m)
{
CS1=0;
CS2=1;
}
else
{
CS1=1;
CS2=0;
}
if(i==x/8);
else
{
i=x/8;
a=b=c=d=e=f=g=h=0;
}
Write_com(0xb8+x/8);
Write_com(0x40+y);
j=x%8;
switch(j)
{
case 0:
a=1;break;
case 1:
b=2;break;
case 2:
c=4;break;
case 3:
d=8;break;
case 4:
e=0x10;break;
case 5:
f=0x20;break;
case 6:
g=0x40;break;
case 7:
h=0x80;break;
}
Write_dat(a|b|c|d|e|f|g|h);
}
//画线子程序,M=1时画横线,M=0时画竖线,N=0时在左边画线,N=1时在右边画线,Hang起始行,Lie起始列,Longth线长度
void Line(bit m,bit n,unsigned char Hang,unsigned char Lie,unsigned char Longth)
{
unsigned char i;
if(m)
{
if(n)//右边画横线
{
for(i=Lie;i<=Longth+Lie;i++)
point(1,Hang,i);
}
else//左边画横线
{
for(i=Lie;i<=Longth+Lie;i++)
point(0,Hang,i);
}
}
else
{
if(n)//右边画列线
{
Longth+=Hang;
for(i=Hang;i<=Longth;i++)
point(1,i,Lie);
}
else//左边画列线
{
Longth+=Hang;
for(i=Hang;i<=Longth;i++)
point(0,i,Lie);
}
}
}
//清屏程序
void Clear()
{
unsigned char i,j;
CS1=1;
CS2=0;
for(j=0;j<8;j++)
{
Write_com(0xb8+j);
Write_com(0x40);
for(i=0;i<64;i++)
Write_dat(0);
}
CS1=0;
CS2=1;
for(j=0;j<8;j++)
{
Write_com(0xb8+j);
Write_com(0x40);
for(i=0;i<64;i++)
Write_dat(0);
}
}
//初始化程序
void Init()
{
Busy();
CS1=1;
CS2=0;
Write_com(0xc0);//设置起始行为第一行
Write_com(0x3f);//开显示关显示为0x3e
CS1=0;
CS2=1;
Write_com(0xc0);
Write_com(0x3f);
}
//延时一秒子程序
/*void delay()
{
unsigned char a,b,c;
for(a=0;a<110;a++)
for(b=0;b<100;b++)
for(c=0;c<30;c++);
}*/
void main()
{
Init();
Clear();
Line(1,1,0,0,63);
Line(1,0,0,0,63);
Line(1,1,63,0,63);
Line(1,0,63,0,63);
Line(0,0,0,0,63);
Line(0,1,0,63,63);
Han_Zi(1,0,0,0);
Zi_Fu(1,2,0,0);
point(1,24,4);
point(1,29,4);
while(1);
}
//汉字表
unsigned char code Tab1[][32]={
0x01,0x01,0xFD,0x25,0x25,0x25,0xFD,0xA5,
0xA7,0xA5,0xFD,0x25,0x35,0x27,0x05,0x01,
0x40,0x20,0x9F,0x80,0x42,0x42,0x26,0x2A,
0x12,0x2A,0x26,0x42,0x40,0xC0,0x40,0x00,};
//字符表
unsigned char code Tab2[][16]={
0xF0,0xF8,0x0C,0x04,0x04,0x0C,0xF8,0xF0, // -0-
0x0F,0x1F,0x30,0x20,0x20,0x30,0x1F,0x0F,};
需要增加汉字或字符可以在表格中加,这里只做演示
tufei5202006 (2008-8-17 10:53:36)
锅牛 (2008-9-30 15:02:37)
submars (2008-10-03 15:51:19)