|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
关于T6963清屏程序的问题请教 |
作者:northerns 栏目:单片机 |
显屏是240×128,这是清屏程序: CLEAR: MOV R2,#00H ;CLEAR DISPLAY RAM MOV R3,#00H MOV R4,#24H ;SET THE ADD POINT. CALL PR1 MOV R4,#0B0H CALL PR12 MOV R6,#0A4H CLEAR1: MOV R5,#1EH CLEAR2: CALL PR03 MOV A,#00H CALL PR14 DJNZ R5,CLEAR2 DJNZ R6,CLEAR1 MOV R4,#0B2H CALL PR12 RET 这里的“MOV R6,#0A4H”是为什么呢?为什么是A4H(164)而不是80H(128)呢 |
2楼: | >>参与讨论 |
作者: northerns 于 2006/9/26 9:09:00 发布:
怎么没有回应呢?问题太简单吗?? |
3楼: | >>参与讨论 |
作者: szxxx 于 2006/9/26 13:08:00 发布:
清屏就是清RAM 找到RAM的区就可以理解 |
4楼: | >>参与讨论 |
作者: northerns 于 2006/9/26 17:03:00 发布:
谢谢szxxx 还想再问一下:清屏就是清RAM,那么清理的开始地址必须是从0000H开始吗?还是它自动指向的就是0000H的呢?我可不可以不从0000H开始呢?还有在上面提到的“MOV R6,#0A4H”的A4H是怎么来的呢? 刚接触显屏,可能问的问题有点烦大家和有点简单,可我还是期盼大家给点帮助啊!!!! 另附文本、图形设置: ;TEXT HOME ADDRESS SET MOV R2,#00H MOV R3,#00H MOV R4,#40H CALL PR1 ;TEXT AREA SET MOV R2,#1EH ;TEXT AREA 30 COLUMNS MOV R3,#00H MOV R4,#41H CALL PR1 ;GRAPHIC HOME ADDRESS SET MOV R2,#00H MOV R3,#04H MOV R4,#42H CALL PR1 ;GRAPHIC AREA SET MOV R2,#1EH ;GRAPHIC AREA 30 COLUMNS MOV R3,#00H MOV R4,#43H CALL PR1 MOV R4,#80H ;"OR" MODE CALL PR12 MOV R4,#0A3H ;CURSOR PATTERN SET 3 LINES CALL PR12 |
5楼: | >>参与讨论 |
作者: northerns 于 2006/9/26 17:56:00 发布:
明白A4H了,它是文本区和图形区的和 清屏也不过是把文本区或者图形区写进00H,和写图形的区别是一个全0一个有值,都是写。刚才试了一下,可是为什么清屏就不能从指定的地址开始呢? 下面是清屏和写图形的程序: ;清除液晶显示器. ;********************************************************************************** CLEAR: MOV R2,#00H ;CLEAR DISPLAY RAM MOV R3,#00H MOV R4,#24H ;SET THE ADD POINT. CALL PR1 MOV R4,#0B0H CALL PR12 MOV R6,#0A4H CLEAR1: MOV R5,#1EH CLEAR2: CALL PR03 MOV A,#00H CALL PR14 DJNZ R5,CLEAR2 DJNZ R6,CLEAR1 MOV R4,#0B2H CALL PR12 RET ;显示一屏图画程序(240X128点阵), ;数据来自程序存储器, ;********************************************************************************** PICTURE_E: MOV DPTR,#PICTURE_EDZ ;TEST 1 JMP TEST0 PICTURE0: MOV DPTR,#PICTURE0DZ ;TEST 1 TEST0: CALL CLEAR MOV R2,#00H MOV R3,#04H MOV R4,#24H CALL PR1 MOV R4,#0B0H CALL PR12 ;DATA UTO WRITE SET. MOV R1,#10H ;16X8HANGX240LIE. TEST1: MOV R2,#08H ;8HANGX240LIE. TEST2: MOV R3,#1EH ;16X30=240LIE. TEST3: CALL PR03 MOV A,#00H MOVC A,@A+DPTR JNB FXXS,TEST5 CPL A TEST5: INC DPTR CALL PR14 DJNZ R3,TEST3 DJNZ R2,TEST2 DJNZ R1,TEST1 TEST4: RET DQXTCS: MOV R7,#40D TEST55: CALL DALY CALL READ_KEY MOV A,KEY CJNE A,#04H,TEST44 DJNZ R7,TEST55 MOV R6,#42H MOV R5,#0AAH CALL SAVE CALL DALY CALL DALY CALL ALARM CALL LDALY CALL ALARM CALL LDALY CALL ALARM TEST44: MOV R6,#42H CALL READD CALL DALY MOV A,R5 CJNE A,#0AAH,TEST6 &nb |
6楼: | >>参与讨论 |
作者: gyt 于 2006/9/26 19:11:00 发布:
祝贺 自己研究出来的结果是最好的。你的水平会提高得很快。 |
7楼: | >>参与讨论 |
作者: northerns 于 2006/9/27 10:38:00 发布:
还得再请教 清屏也不过是把文本区或者图形区写进00H,和写图形的区别是一个全0一个有值,都是写。刚才试了一下,可是为什么清屏就不能从指定的地址开始呢? 各位给点意见啊 |
8楼: | >>参与讨论 |
作者: northerns 于 2006/9/27 17:14:00 发布:
找不到原因不罢休啊 |
9楼: | >>参与讨论 |
作者: 1dqmoon 于 2006/9/28 23:07:00 发布:
这个倒不会吧 注意几点, 如果你的文本区和图形重叠或不重叠,清屏的时候写的地址可能不一样,下面的是一个c代码的程序,你看一下就知道了 /******************************************************************************** 函数名: Void ClearScreen(unsigned int ram) 函数功能: 清除整个屏幕 ram : 要清零的单元数 ********************************************************************************/ void ClearScreen(uint ram) { unsigned int i; // 清显示 RAM 区 0000h--2000h (8k) WriteCmd3(0x00,0x00,AddrSet); // 设置指针地址0000H WriteCmd1(0xb0); // 设置自动写状态 for(i=0x00;i<ram;i++) WriteData(0x00); // data=0; WriteCmd1(0xb2); // 自动写结束 } WriteCmd3(0x00,0x00,AddrSet); // 设置指针地址0000H 这一条,就是先设置指定的地址,然后开始清 (0地址是个特殊的情况哦) |
10楼: | >>参与讨论 |
作者: northerns 于 2006/9/29 10:30:00 发布:
我找到问题所在了,可是还有些困惑!!! 先感谢1dqmoon,再问1dqmoon个你的程序里的问题: WriteCmd3(0x00,0x00,AddrSet);AddrSet是设置什么的呀?(别的都明白了) 然后::: 我找到问题所在了,可是还有些困惑!!! 先看下面 下面是清屏和写图形的程序: ;清除液晶显示器. ;********************************************************************************** CLEAR: MOV R2,#00H ;CLEAR DISPLAY RAM MOV R3,#00H MOV R4,#24H ;SET THE ADD POINT. CALL PR1 MOV R4,#0B0H CALL PR12 MOV R6,#0A4H CLEAR1: MOV R5,#1EH CLEAR2: CALL PR03 MOV A,#00H CALL PR14 DJNZ R5,CLEAR2 DJNZ R6,CLEAR1 MOV R4,#0B2H CALL PR12 RET ;显示一屏图画程序(240X128点阵), ;数据来自程序存储器, ;********************************************************************************** PICTURE_E: MOV DPTR,#PICTURE_EDZ ;TEST 1 JMP TEST0 PICTURE0: MOV DPTR,#PICTURE0DZ ;TEST 1 TEST0: CALL CLEAR MOV R2,#00H MOV R3,#04H MOV R4,#24H CALL PR1 MOV R4,#0B0H CALL PR12 ;DATA UTO WRITE SET. MOV R1,#10H ;16X8HANGX240LIE. TEST1: MOV R2,#08H ;8HANGX240LIE. TEST2: MOV R3,#1EH ;16X30=240LIE. TEST3: CALL PR03 MOV A,#00H MOVC A,@A+DPTR JNB FXXS,TEST5 CPL A TEST5: INC DPTR CALL PR14 DJNZ R3,TEST3 DJNZ R2,TEST2 DJNZ R1,TEST1 TEST4: RET …… 清屏和刷屏程序有一点区别,就是清屏里有: MOV R4,#0B2H CALL PR12 而刷屏里在写完数据后没有设置MOV R4,#0B2H, 在刷屏里添加进去后就OK了!! 这是为什么呢,如果没有MOV R4,#0B2H会造成什么后果呢,原因是什么呢? |
11楼: | >>参与讨论 |
作者: northerns 于 2006/9/29 10:34:00 发布:
即将迎来光明了,可还得智者点拨一下啊 TO:1dqmoon, 不好意思还有个问题: "0地址是个特殊的情况哦" 为什么特殊啊?? |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |