标题:
求高手指点(单片机怎样在LCD12864上面显示变量)
[打印本页]
作者:
xiaoyuxinke
时间:
2022-3-25 08:56
标题:
求高手指点(单片机怎样在LCD12864上面显示变量)
以上是我的程序,我要实现的功能是上电显示一屏图片(128*64)三秒,然后跳到文字界面,在文字界面显示一个0-100的数字变量怎么搞,诚心请教各位大神.要求用汇编语言
单片机源程序如下:
;******************************************************************************
;LCD12864行地址地址定义 *
;第一行地址:80H 81H 82H 83H 84H 85H 86H 87H *
;第二行地址:90H 91H 92H 93H 94H 95H 96H 97H *
;第三行地址:88H 89H 8AH 8BH 8CH 8DH 8EH 8FH *
;第四行地址:98H 99H 9AH 9BH 9CH 9DH 9EH 9FH *
;程序说明:本程序为带有字库汉字显示的12864液晶显示器源程序
;******************************************************************************
;* 【>宏定义部分<】 此程序仅用于测试LCD12864汇编代码!
;******************************************************************************
;* 【LCD数据接口定义】
RS BIT P3.5 //H=DATA,L=COM
RW BIT P3.6 //H=READ,L=WRITE
E BIT P3.7 //写指令/写数据
LDB EQU P2 //数据送P2口
COM EQU 30H //控制字暂存单元
DAT EQU 31H //显示数据暂存单元
CODER EQU 32H //字符代码暂存单元
ADDR EQU 33H //地址暂存单元
LCDX EQU 34H
LCDY EQU 35H
COUNT1 EQU 36H
COUNT2 EQU 37H
COUNT3 EQU 38H
YWDY EQU 39H
;* 【启用单片机P5口】
P5 EQU 0XC8
P5SW EQU 0xff; //启动P5接口
P5M0 EQU 0xff; //接口设置为普通IO
;* 【按键和按键标志位定义】
KEYBZT EQU F0 //按键状态标志位
KEY1 BIT P1.5 //数字加
KEY2 BIT P1.6 //数字减
KEY3 BIT P1.7 //左移选中
KEY4 BIT P5.4 //右移选中
KEY5 BIT P5.5 //设置/确认键
KEY6 BIT P3.4 //运行/停止键
;* 【DS18B20和风扇定义】
DS18B20 BIT P3.2 //18B20温度采集
FAN BIT P3.3 //风扇引脚定义
FANQK EQU 45H //风扇起控温度
;* 【ADC和PWM定义】
PWM1 BIT P1.0 //主PWM输出脚,控制MOS管
ADC1 BIT P1.3 //电压采样输入端(0-4V)
ADC2 BIT P1.4 //电流采样输入端(0-4V)
ADC3 BIT P1.2 //基准电压2.5V
;**************************************************************
;* 【主程序】
;**************************************************************
ORG 0000H //
AJMP START //
ORG 0040H //
START:
MOV SP,#50H
MOV R3,#01H
CLR KEYBZT
AJMP MAIN
MAIN:
LCALL DS18B20CSH
LCALL ADC_CSH
LCALL PWM_CSH
LCALL LOGOTPXS //LOGO界面显示,图文混合
LCALL ZJMXS //主界面,文字界面
LCALL KEY //调用按键检测
JMP MAIN //循环
KEY:
JB KEY1,FUNCTION1 //数字加功能
JB KEY2,FUNCTION2 //数字减功能
JB KEY3,FUNCTION3 //左移选中功能
JB KEY4,FUNCTION4 //右移选中功能
JB KEY5,FUNCTION5 //设置/确认
JB KEY6,FUNCTION6 //运行/停止
JMP KEY
RET
;***************************************************
;* 【按键功能】
;***************************************************
FUNCTION1:
CPL KEYBZT
RET
FUNCTION2:
RET
FUNCTION3:
RET
FUNCTION4:
RET
FUNCTION5:
RET
FUNCTION6:
RET
;**************************************************************
;* 【DS18B20初始化】
;**************************************************************
DS18B20CSH:
RET
;**************************************************************
;* 【ADC初始化】
;**************************************************************
ADC_CSH:
RET
;**************************************************************
;* 【PWM初始化】
;**************************************************************
PWM_CSH:
RET
;**************************************************************
;* 【图片显示】
;**************************************************************
LOGOTPXS:
LCALL LSET;12864初始化
MOV DPTR,#ICON1;图片显示
LCALL IDISP
LCALL DEL2S
MOV COM,#01H;清屏
LCALL WCOM
RET
;**************************************************************
;* 【字符显示】
;**************************************************************
ZJMXS:
MOV DPTR,#TAB1;显示字符
MOV ADDR,#80H
MOV YWDY,#16
LCALL LINE
MOV DPTR,#TAB2
MOV ADDR,#90H
MOV YWDY,#16
LCALL LINE
MOV DPTR,#TAB3
MOV ADDR,#88H
MOV YWDY,#12
LCALL LINE
MOV DPTR,#TAB4
MOV ADDR,#98H
MOV YWDY,#16
LCALL LINE
LCALL DEL2S
RET
;**************************************************************
;* 【函数BUSY AC忙标志检测】
;**************************************************************
BUSY:
LCALL d1ms
RET
;函数WDAT 显示数据写入子程序
WDAT:
LCALL BUSY
SETB RS
CLR RW
MOV A,DAT
MOV LDB,A
SETB E
NOP
CLR E
RET
;**************************************************************
;* 【LCD写指令程序】
;**************************************************************
WCOM:
LCALL BUSY
CLR RS
CLR RW
MOV A,COM
MOV LDB,A
SETB E
LCALL DEL80
CLR E
RET
;**************************************************************
;* 【LCD初始化程序】
;**************************************************************
LSET:
MOV COM,#30H;基本指令
LCALL WCOM
MOV COM,#30H;8-BIT并口
LCALL WCOM
MOV COM,#01H;清屏,AC=0
LCALL WCOM
MOV COM,#06H;进入点设定,AC加一,屏幕左移
LCALL WCOM
MOV COM,#0CH;开显示,关光标,关反白
LCALL WCOM
RET
;**************************************************************
;* 【LCD WLXY GDRAM写地址程序】
;**************************************************************
WLXY:
MOV COM,#34H;使用扩充指令
LCALL WCOM
MOV COM,LCDY
LCALL WCOM
MOV COM,LCDX
LCALL WCOM
MOV COM,#30H;基本指令
LCALL WCOM
RET
;**************************************************************
;* 【IDISP 图片显示程序】
;**************************************************************
IDISP:
MOV COUNT1,#02H
MOV LCDX,#80H
DISP1:
MOV COUNT2,#20H
MOV LCDY,#80H
DISP2:
MOV COUNT3,#10H
LCALL WLXY
DISP3:
CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WDAT
INC DPTR
DJNZ COUNT3,DISP3
INC LCDY
DJNZ COUNT2,DISP2
MOV LCDX,#88H
DJNZ COUNT1,DISP1
MOV COM,#36H;开图形显示
LCALL WCOM
MOV COM,#30H;基本指令
LCALL WCOM
RET
;**************************************************************
;* 【显示一行字符子程序】
;**************************************************************
LINE:
MOV A,ADDR
MOV COM,A
LCALL WCOM
MOV R0,#00H
D1:
MOV A,R0
MOVC A,@A+DPTR
MOV DAT,A
LCALL WDAT
LCALL DEL80
INC R0
DJNZ YWDY,D1
RET
;**************************************************************
;* 【延时程序】
;**************************************************************
;函数DEL80 80MS延时
DEL80:
MOV R3,#02H
DEL40:
MOV R4,#160
E1:
MOV R5,#25
DJNZ R5,$
DJNZ R4,E1
DJNZ R3,DEL40
RET
;函数DEL2S 2S延时
DEL2S:
MOV R3,#05H
E2:
MOV R4,#200
E3:
MOV R5,#20
E4:
MOV R6,#248
DJNZ R6,$
DJNZ R5,E4
DJNZ R4,E3
DJNZ R3,E2
RET
;函数D1mS 1mS延时
D1ms: ;误差 0us
MOV R7,#01H
DL1:
MOV R6,#8EH
DL0:
MOV R5,#02H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
;***************************************************
;【字符显示表】
;***************************************************
TAB1:DB"电压:12.01V 36.7"
TAB2:DB"电流:09.99A CC"
TAB3:DB"功率:119.97W"
TAB4:DB"FAN:OFF STOP"
TAB5:DB"初始化请稍候"
;***************************************************
;【图片字模部分】
;***************************************************
; 数据表
ICON1:
;-- 调入了一幅图像:C:\Users\Administrator\Desktop\无标题.bmp --
;-- 宽度x高度=128x32 --
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 00FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,001H,010H,004H,001H,000H,004H,048H,008H,000H,000H,008H,000H,022H,080H,020H
DB 008H,005H,050H,002H,001H,0F7H,089H,050H,008H,001H,0FCH,00FH,0C0H,0FAH,040H,020H
DB 008H,001H,010H,07FH,0F2H,044H,09FH,060H,0FFH,080H,008H,010H,040H,022H,000H,020H
DB 008H,00FH,0DEH,040H,010H,044H,080H,044H,088H,080H,010H,020H,081H,0FFH,0C0H,020H
DB 008H,003H,024H,000H,003H,0F4H,08FH,03CH,088H,080H,020H,01FH,0F0H,042H,000H,020H
DB 008H,005H,094H,01FH,0C0H,0A7H,089H,000H,0FFH,080H,020H,010H,011H,0FAH,080H,020H
DB 008H,009H,054H,000H,081H,010H,00FH,040H,088H,087H,0FFH,011H,010H,0A2H,080H,020H
DB 008H,002H,014H,001H,002H,0FFH,009H,048H,088H,080H,020H,011H,010H,0FAH,080H,020H
DB 008H,00FH,094H,07FH,0F0H,081H,00FH,050H,0FFH,080H,020H,011H,010H,021H,000H,020H
DB 008H,004H,088H,002H,000H,0FFH,009H,064H,088H,020H,020H,002H,0C0H,039H,040H,020H
DB 008H,003H,014H,002H,000H,081H,009H,044H,008H,020H,020H,00CH,031H,0E2H,0C0H,020H
DB 008H,00CH,0A2H,00EH,000H,0FFH,00BH,03CH,007H,0E0H,0E0H,030H,008H,024H,040H,020H
DB 008H,01FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,066H,08BH,0C0H,03DH,0F3H,0CFH,000H,000H,000H,000H,020H
DB 008H,000H,000H,014H,000H,024H,08AH,020H,061H,086H,079H,080H,000H,000H,000H,020H
DB 008H,000H,020H,000H,000H,03CH,0CAH,02FH,07DH,0E6H,079H,080H,000H,000H,000H,020H
DB 008H,000H,056H,008H,000H,018H,0EBH,0CFH,07FH,0B3H,0CFH,000H,000H,000H,000H,020H
DB 008H,002H,089H,090H,000H,03CH,0BAH,080H,066H,016H,079H,080H,000H,000H,000H,020H
DB 008H,000H,000H,060H,000H,024H,09AH,040H,067H,0B6H,079H,080H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,066H,08AH,060H,03CH,0E3H,0CFH,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 00FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 00FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,001H,010H,004H,001H,000H,004H,048H,008H,000H,000H,008H,000H,022H,080H,020H
DB 008H,005H,050H,002H,001H,0F7H,089H,050H,008H,001H,0FCH,00FH,0C0H,0FAH,040H,020H
DB 008H,001H,010H,07FH,0F2H,044H,09FH,060H,0FFH,080H,008H,010H,040H,022H,000H,020H
DB 008H,00FH,0DEH,040H,010H,044H,080H,044H,088H,080H,010H,020H,081H,0FFH,0C0H,020H
DB 008H,003H,024H,000H,003H,0F4H,08FH,03CH,088H,080H,020H,01FH,0F0H,042H,000H,020H
DB 008H,005H,094H,01FH,0C0H,0A7H,089H,000H,0FFH,080H,020H,010H,011H,0FAH,080H,020H
DB 008H,009H,054H,000H,081H,010H,00FH,040H,088H,087H,0FFH,011H,010H,0A2H,080H,020H
DB 008H,002H,014H,001H,002H,0FFH,009H,048H,088H,080H,020H,011H,010H,0FAH,080H,020H
DB 008H,00FH,094H,07FH,0F0H,081H,00FH,050H,0FFH,080H,020H,011H,010H,021H,000H,020H
DB 008H,004H,088H,002H,000H,0FFH,009H,064H,088H,020H,020H,002H,0C0H,039H,040H,020H
DB 008H,003H,014H,002H,000H,081H,009H,044H,008H,020H,020H,00CH,031H,0E2H,0C0H,020H
DB 008H,00CH,0A2H,00EH,000H,0FFH,00BH,03CH,007H,0E0H,0E0H,030H,008H,024H,040H,020H
DB 008H,01FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,066H,08BH,0C0H,03DH,0F3H,0CFH,000H,000H,000H,000H,020H
DB 008H,000H,000H,014H,000H,024H,08AH,020H,061H,086H,079H,080H,000H,000H,000H,020H
DB 008H,000H,020H,000H,000H,03CH,0CAH,02FH,07DH,0E6H,079H,080H,000H,000H,000H,020H
DB 008H,000H,056H,008H,000H,018H,0EBH,0CFH,07FH,0B3H,0CFH,000H,000H,000H,000H,020H
DB 008H,002H,089H,090H,000H,03CH,0BAH,080H,066H,016H,079H,080H,000H,000H,000H,020H
DB 008H,000H,000H,060H,000H,024H,09AH,040H,067H,0B6H,079H,080H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,066H,08AH,060H,03CH,0E3H,0CFH,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
DB 00FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
END
复制代码
作者:
人工置顶员
时间:
2022-3-25 17:35
顶一下
作者:
yzwzfyz
时间:
2022-3-26 16:35
1、LCD屏是一个点阵屏。所以,先要解决点的显示问题。
2、汉字用的是16*16的点阵,它可以用32个字节来存储,所以设立一个32个字节缓冲区,起点就设为:BUF_HZ。
3、将屏分成X行Y列,为了简单化,就分为4行8列吧(应当是64行128列)。
4、写一个程序起名叫SEND_HZ吧:输入参数是(X,Y),输入则是将:BUF_HZ中的汉字显示在(X,Y)处。
提示:从BUF_HZ起,将32个字节送入显示屏中,每个字节送入的地址,要求你根据XY计算得出。
5、再写一个程序起名叫A_HZ吧:程序是将A中的数字,转换成16*16的点阵,放入BUF_HZ中。
6、现在说你的变量,将0-100的一个变量(三位数),先取一位放入A中,调用A_HZ,现指定显示的位置(X,Y),调用SEND_HZ。再选择(X,Y)如法炮制显示另外二位吧。
7、同理再做一个8*8的显示程序,相信你也会了。缓冲区用BUF_ASC,8个字节就够了。X取0-7八行,Y取0-15十六列。
如果有兴趣,写一个在屏上任意一处显示一个点的程序,就更牛了。
作者:
xiaoyuxinke
时间:
2022-3-27 12:44
yzwzfyz 发表于 2022-3-26 16:35
1、LCD屏是一个点阵屏。所以,先要解决点的显示问题。
2、汉字用的是16*16的点阵,它可以用32个字节来存储 ...
关键我还是不会,单片机新手,这程序还是改的别人的
作者:
啤酒瓶子老大
时间:
2022-3-27 16:05
这就有点难了。懂汇编的都是大佬,你想让大佬免费给你讲?
作者:
ankangyu
时间:
2022-3-27 16:41
汇编有点强啊
作者:
yzwzfyz
时间:
2022-3-28 10:11
新手想搞定这个,极难极难。楼主当循序渐进,踏实步进。
我花了许多时间,写了关于12864LCD点阵屏的显示子程序。(打点,画线、定位打点、选位ASC显示、选位汉字显示、选位光标闪烁、光标移动操作、屏上数字汉字识别、屏上数字+-操作……)
还用高级语言对它进行了辅助设计(字库自动生成、自动编码、任意造字……)。
如此才能做到,分分钟搞定汉字或点图显示、屏幕人机对话。
作者:
xiaoyuxinke
时间:
2022-4-2 14:57
谢谢各位了,我自己搞定了
作者:
xiaoyuxinke
时间:
2022-7-4 00:48
ADMIN可以把我这几个悬赏贴子撤了么,我现在自己学会C了,不再需要别人帮助了,谢谢管理大神了!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1