找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2307|回复: 8
打印 上一主题 下一主题
收起左侧

求高手指点(单片机怎样在LCD12864上面显示变量)

[复制链接]
跳转到指定楼层
楼主
ID:61140 发表于 2022-3-25 08:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
100黑币
以上是我的程序,我要实现的功能是上电显示一屏图片(128*64)三秒,然后跳到文字界面,在文字界面显示一个0-100的数字变量怎么搞,诚心请教各位大神.要求用汇编语言

单片机源程序如下:
  1. ;******************************************************************************
  2. ;LCD12864行地址地址定义                                          *
  3. ;第一行地址:80H 81H 82H 83H 84H 85H 86H 87H          *
  4. ;第二行地址:90H 91H 92H 93H 94H 95H 96H 97H          *
  5. ;第三行地址:88H        89H 8AH 8BH 8CH 8DH 8EH 8FH          *
  6. ;第四行地址:98H        99H 9AH 9BH 9CH 9DH 9EH 9FH          *
  7. ;程序说明:本程序为带有字库汉字显示的12864液晶显示器源程序                                                                                                                                                                                                                                                                                                                                                                                   
  8. ;******************************************************************************      
  9. ;* 【>宏定义部分<】 此程序仅用于测试LCD12864汇编代码!                                 
  10. ;******************************************************************************
  11. ;* 【LCD数据接口定义】
  12.        RS      BIT  P3.5    //H=DATA,L=COM
  13.        RW      BIT  P3.6    //H=READ,L=WRITE
  14.        E       BIT  P3.7    //写指令/写数据
  15.            LDB     EQU  P2                //数据送P2口
  16.            COM     EQU  30H     //控制字暂存单元
  17.        DAT     EQU  31H     //显示数据暂存单元
  18.        CODER   EQU  32H     //字符代码暂存单元
  19.        ADDR    EQU  33H     //地址暂存单元
  20.        LCDX    EQU  34H
  21.        LCDY    EQU  35H
  22.        COUNT1  EQU  36H
  23.        COUNT2  EQU  37H
  24.        COUNT3  EQU  38H
  25.            YWDY    EQU  39H
  26. ;* 【启用单片机P5口】
  27.            P5      EQU  0XC8
  28.        P5SW    EQU  0xff;   //启动P5接口
  29.        P5M0    EQU  0xff;   //接口设置为普通IO
  30. ;* 【按键和按键标志位定义】      
  31.            KEYBZT  EQU  F0                //按键状态标志位
  32.            KEY1    BIT  P1.5        //数字加
  33.            KEY2    BIT  P1.6        //数字减
  34.            KEY3    BIT  P1.7        //左移选中
  35.            KEY4    BIT  P5.4        //右移选中
  36.            KEY5    BIT  P5.5        //设置/确认键
  37.            KEY6    BIT  P3.4        //运行/停止键
  38. ;* 【DS18B20和风扇定义】
  39.            DS18B20 BIT  P3.2        //18B20温度采集
  40.            FAN     BIT  P3.3        //风扇引脚定义
  41.            FANQK   EQU  45H     //风扇起控温度
  42. ;* 【ADC和PWM定义】
  43.        PWM1    BIT  P1.0        //主PWM输出脚,控制MOS管
  44.            ADC1    BIT  P1.3        //电压采样输入端(0-4V)
  45.            ADC2    BIT  P1.4        //电流采样输入端(0-4V)
  46.            ADC3    BIT  P1.2        //基准电压2.5V
  47. ;**************************************************************
  48. ;* 【主程序】
  49. ;**************************************************************
  50.        ORG      0000H       //
  51.        AJMP     START       //
  52.        ORG      0040H       //
  53. START:
  54. MOV SP,#50H
  55. MOV R3,#01H
  56. CLR KEYBZT
  57. AJMP MAIN
  58. MAIN:
  59. LCALL DS18B20CSH
  60. LCALL ADC_CSH
  61. LCALL PWM_CSH
  62. LCALL LOGOTPXS                                //LOGO界面显示,图文混合
  63. LCALL ZJMXS                                        //主界面,文字界面
  64. LCALL KEY                                        //调用按键检测
  65. JMP   MAIN                                        //循环
  66. KEY:
  67.        JB       KEY1,FUNCTION1           //数字加功能
  68.            JB       KEY2,FUNCTION2           //数字减功能
  69.            JB       KEY3,FUNCTION3           //左移选中功能
  70.            JB       KEY4,FUNCTION4           //右移选中功能
  71.            JB       KEY5,FUNCTION5           //设置/确认
  72.            JB       KEY6,FUNCTION6           //运行/停止
  73.            JMP      KEY
  74. RET
  75. ;***************************************************      
  76. ;* 【按键功能】                                   
  77. ;***************************************************
  78. FUNCTION1:
  79. CPL   KEYBZT
  80. RET
  81. FUNCTION2:
  82. RET
  83. FUNCTION3:
  84. RET
  85. FUNCTION4:
  86. RET
  87. FUNCTION5:   
  88. RET
  89. FUNCTION6:
  90. RET
  91. ;**************************************************************
  92. ;* 【DS18B20初始化】
  93. ;**************************************************************
  94. DS18B20CSH:
  95. RET
  96. ;**************************************************************
  97. ;* 【ADC初始化】
  98. ;**************************************************************
  99. ADC_CSH:
  100. RET
  101. ;**************************************************************
  102. ;* 【PWM初始化】
  103. ;**************************************************************
  104. PWM_CSH:
  105. RET
  106. ;**************************************************************
  107. ;* 【图片显示】
  108. ;**************************************************************
  109. LOGOTPXS:
  110. LCALL LSET;12864初始化
  111. MOV DPTR,#ICON1;图片显示
  112. LCALL IDISP
  113. LCALL DEL2S
  114. MOV COM,#01H;清屏
  115. LCALL WCOM

  116. RET
  117. ;**************************************************************
  118. ;* 【字符显示】
  119. ;**************************************************************
  120. ZJMXS:
  121. MOV DPTR,#TAB1;显示字符
  122. MOV ADDR,#80H
  123. MOV      YWDY,#16

  124. LCALL LINE
  125. MOV DPTR,#TAB2
  126. MOV ADDR,#90H
  127. MOV      YWDY,#16

  128. LCALL LINE
  129. MOV DPTR,#TAB3
  130. MOV ADDR,#88H
  131. MOV      YWDY,#12

  132. LCALL LINE
  133. MOV DPTR,#TAB4
  134. MOV ADDR,#98H
  135. MOV      YWDY,#16

  136. LCALL LINE
  137. LCALL DEL2S
  138. RET
  139. ;**************************************************************
  140. ;* 【函数BUSY AC忙标志检测】
  141. ;**************************************************************
  142. BUSY:
  143. LCALL d1ms
  144. RET
  145. ;函数WDAT 显示数据写入子程序
  146. WDAT:
  147. LCALL BUSY
  148. SETB RS
  149. CLR RW
  150. MOV A,DAT
  151. MOV LDB,A
  152. SETB E
  153. NOP
  154. CLR E
  155. RET
  156. ;**************************************************************
  157. ;* 【LCD写指令程序】
  158. ;**************************************************************
  159. WCOM:
  160. LCALL BUSY
  161. CLR RS
  162. CLR RW
  163. MOV A,COM
  164. MOV LDB,A
  165. SETB E
  166. LCALL DEL80
  167. CLR E
  168. RET
  169. ;**************************************************************
  170. ;* 【LCD初始化程序】
  171. ;**************************************************************
  172. LSET:
  173. MOV COM,#30H;基本指令
  174. LCALL WCOM
  175. MOV COM,#30H;8-BIT并口
  176. LCALL WCOM
  177. MOV COM,#01H;清屏,AC=0
  178. LCALL WCOM
  179. MOV COM,#06H;进入点设定,AC加一,屏幕左移
  180. LCALL WCOM
  181. MOV COM,#0CH;开显示,关光标,关反白
  182. LCALL WCOM
  183. RET
  184. ;**************************************************************
  185. ;* 【LCD WLXY GDRAM写地址程序】
  186. ;**************************************************************
  187. WLXY:
  188. MOV COM,#34H;使用扩充指令
  189. LCALL WCOM
  190. MOV COM,LCDY
  191. LCALL WCOM
  192. MOV COM,LCDX
  193. LCALL WCOM
  194. MOV COM,#30H;基本指令
  195. LCALL WCOM
  196. RET
  197. ;**************************************************************
  198. ;* 【IDISP 图片显示程序】
  199. ;**************************************************************
  200. IDISP:
  201. MOV COUNT1,#02H
  202. MOV LCDX,#80H
  203. DISP1:
  204. MOV COUNT2,#20H
  205. MOV LCDY,#80H
  206. DISP2:
  207. MOV COUNT3,#10H
  208. LCALL WLXY
  209. DISP3:
  210. CLR A
  211. MOVC A,@A+DPTR
  212. MOV DAT,A
  213. LCALL WDAT
  214. INC DPTR
  215. DJNZ COUNT3,DISP3
  216. INC LCDY
  217. DJNZ COUNT2,DISP2
  218. MOV LCDX,#88H
  219. DJNZ COUNT1,DISP1
  220. MOV COM,#36H;开图形显示
  221. LCALL WCOM
  222. MOV COM,#30H;基本指令
  223. LCALL WCOM
  224. RET
  225. ;**************************************************************
  226. ;* 【显示一行字符子程序】
  227. ;**************************************************************
  228. LINE:
  229. MOV A,ADDR
  230. MOV COM,A
  231. LCALL WCOM
  232. MOV R0,#00H
  233. D1:
  234. MOV A,R0
  235. MOVC A,@A+DPTR
  236. MOV DAT,A
  237. LCALL WDAT
  238. LCALL DEL80
  239. INC R0
  240. DJNZ YWDY,D1
  241. RET
  242. ;**************************************************************
  243. ;* 【延时程序】
  244. ;**************************************************************
  245. ;函数DEL80 80MS延时
  246. DEL80:
  247. MOV R3,#02H
  248. DEL40:
  249. MOV R4,#160
  250. E1:
  251. MOV R5,#25
  252. DJNZ R5,$
  253. DJNZ R4,E1
  254. DJNZ R3,DEL40
  255. RET
  256. ;函数DEL2S 2S延时
  257. DEL2S:
  258. MOV R3,#05H
  259. E2:
  260. MOV R4,#200
  261. E3:
  262. MOV R5,#20
  263. E4:
  264. MOV R6,#248
  265. DJNZ R6,$
  266. DJNZ R5,E4
  267. DJNZ R4,E3
  268. DJNZ R3,E2
  269. RET
  270. ;函数D1mS 1mS延时
  271. D1ms: ;误差 0us
  272. MOV R7,#01H
  273. DL1:
  274. MOV R6,#8EH
  275. DL0:
  276. MOV R5,#02H
  277. DJNZ R5,$
  278. DJNZ R6,DL0
  279. DJNZ R7,DL1
  280. RET
  281. ;***************************************************
  282. ;【字符显示表】
  283. ;***************************************************
  284. TAB1:DB"电压:12.01V 36.7"
  285. TAB2:DB"电流:09.99A   CC"
  286. TAB3:DB"功率:119.97W"
  287. TAB4:DB"FAN:OFF     STOP"
  288. TAB5:DB"初始化请稍候"
  289. ;***************************************************
  290. ;【图片字模部分】
  291. ;***************************************************
  292. ; 数据表
  293. ICON1:
  294. ;--  调入了一幅图像:C:\Users\Administrator\Desktop\无标题.bmp  --
  295. ;--  宽度x高度=128x32  --
  296. DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  297. DB  00FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H
  298. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  299. DB  008H,001H,010H,004H,001H,000H,004H,048H,008H,000H,000H,008H,000H,022H,080H,020H
  300. DB  008H,005H,050H,002H,001H,0F7H,089H,050H,008H,001H,0FCH,00FH,0C0H,0FAH,040H,020H
  301. DB  008H,001H,010H,07FH,0F2H,044H,09FH,060H,0FFH,080H,008H,010H,040H,022H,000H,020H
  302. DB  008H,00FH,0DEH,040H,010H,044H,080H,044H,088H,080H,010H,020H,081H,0FFH,0C0H,020H
  303. DB  008H,003H,024H,000H,003H,0F4H,08FH,03CH,088H,080H,020H,01FH,0F0H,042H,000H,020H
  304. DB  008H,005H,094H,01FH,0C0H,0A7H,089H,000H,0FFH,080H,020H,010H,011H,0FAH,080H,020H
  305. DB  008H,009H,054H,000H,081H,010H,00FH,040H,088H,087H,0FFH,011H,010H,0A2H,080H,020H
  306. DB  008H,002H,014H,001H,002H,0FFH,009H,048H,088H,080H,020H,011H,010H,0FAH,080H,020H
  307. DB  008H,00FH,094H,07FH,0F0H,081H,00FH,050H,0FFH,080H,020H,011H,010H,021H,000H,020H
  308. DB  008H,004H,088H,002H,000H,0FFH,009H,064H,088H,020H,020H,002H,0C0H,039H,040H,020H
  309. DB  008H,003H,014H,002H,000H,081H,009H,044H,008H,020H,020H,00CH,031H,0E2H,0C0H,020H
  310. DB  008H,00CH,0A2H,00EH,000H,0FFH,00BH,03CH,007H,0E0H,0E0H,030H,008H,024H,040H,020H
  311. DB  008H,01FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H,020H
  312. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  313. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  314. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  315. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  316. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  317. DB  008H,000H,000H,000H,000H,066H,08BH,0C0H,03DH,0F3H,0CFH,000H,000H,000H,000H,020H
  318. DB  008H,000H,000H,014H,000H,024H,08AH,020H,061H,086H,079H,080H,000H,000H,000H,020H
  319. DB  008H,000H,020H,000H,000H,03CH,0CAH,02FH,07DH,0E6H,079H,080H,000H,000H,000H,020H
  320. DB  008H,000H,056H,008H,000H,018H,0EBH,0CFH,07FH,0B3H,0CFH,000H,000H,000H,000H,020H
  321. DB  008H,002H,089H,090H,000H,03CH,0BAH,080H,066H,016H,079H,080H,000H,000H,000H,020H
  322. DB  008H,000H,000H,060H,000H,024H,09AH,040H,067H,0B6H,079H,080H,000H,000H,000H,020H
  323. DB  008H,000H,000H,000H,000H,066H,08AH,060H,03CH,0E3H,0CFH,000H,000H,000H,000H,020H
  324. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  325. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  326. DB  00FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H
  327. DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  328. DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
  329. DB  00FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H
  330. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  331. DB  008H,001H,010H,004H,001H,000H,004H,048H,008H,000H,000H,008H,000H,022H,080H,020H
  332. DB  008H,005H,050H,002H,001H,0F7H,089H,050H,008H,001H,0FCH,00FH,0C0H,0FAH,040H,020H
  333. DB  008H,001H,010H,07FH,0F2H,044H,09FH,060H,0FFH,080H,008H,010H,040H,022H,000H,020H
  334. DB  008H,00FH,0DEH,040H,010H,044H,080H,044H,088H,080H,010H,020H,081H,0FFH,0C0H,020H
  335. DB  008H,003H,024H,000H,003H,0F4H,08FH,03CH,088H,080H,020H,01FH,0F0H,042H,000H,020H
  336. DB  008H,005H,094H,01FH,0C0H,0A7H,089H,000H,0FFH,080H,020H,010H,011H,0FAH,080H,020H
  337. DB  008H,009H,054H,000H,081H,010H,00FH,040H,088H,087H,0FFH,011H,010H,0A2H,080H,020H
  338. DB  008H,002H,014H,001H,002H,0FFH,009H,048H,088H,080H,020H,011H,010H,0FAH,080H,020H
  339. DB  008H,00FH,094H,07FH,0F0H,081H,00FH,050H,0FFH,080H,020H,011H,010H,021H,000H,020H
  340. DB  008H,004H,088H,002H,000H,0FFH,009H,064H,088H,020H,020H,002H,0C0H,039H,040H,020H
  341. DB  008H,003H,014H,002H,000H,081H,009H,044H,008H,020H,020H,00CH,031H,0E2H,0C0H,020H
  342. DB  008H,00CH,0A2H,00EH,000H,0FFH,00BH,03CH,007H,0E0H,0E0H,030H,008H,024H,040H,020H
  343. DB  008H,01FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H,020H
  344. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  345. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  346. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  347. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  348. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  349. DB  008H,000H,000H,000H,000H,066H,08BH,0C0H,03DH,0F3H,0CFH,000H,000H,000H,000H,020H
  350. DB  008H,000H,000H,014H,000H,024H,08AH,020H,061H,086H,079H,080H,000H,000H,000H,020H
  351. DB  008H,000H,020H,000H,000H,03CH,0CAH,02FH,07DH,0E6H,079H,080H,000H,000H,000H,020H
  352. DB  008H,000H,056H,008H,000H,018H,0EBH,0CFH,07FH,0B3H,0CFH,000H,000H,000H,000H,020H
  353. DB  008H,002H,089H,090H,000H,03CH,0BAH,080H,066H,016H,079H,080H,000H,000H,000H,020H
  354. DB  008H,000H,000H,060H,000H,024H,09AH,040H,067H,0B6H,079H,080H,000H,000H,000H,020H
  355. DB  008H,000H,000H,000H,000H,066H,08AH,060H,03CH,0E3H,0CFH,000H,000H,000H,000H,020H
  356. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  357. DB  008H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H
  358. DB  00FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E0H
  359. DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H



  360.        END
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:301191 发表于 2022-3-25 17:35 | 只看该作者
顶一下
回复

使用道具 举报

板凳
ID:123289 发表于 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十六列。
如果有兴趣,写一个在屏上任意一处显示一个点的程序,就更牛了。
回复

使用道具 举报

地板
ID:61140 发表于 2022-3-27 12:44 | 只看该作者
yzwzfyz 发表于 2022-3-26 16:35
1、LCD屏是一个点阵屏。所以,先要解决点的显示问题。
2、汉字用的是16*16的点阵,它可以用32个字节来存储 ...

关键我还是不会,单片机新手,这程序还是改的别人的
回复

使用道具 举报

5#
ID:230742 发表于 2022-3-27 16:05 | 只看该作者
这就有点难了。懂汇编的都是大佬,你想让大佬免费给你讲?
回复

使用道具 举报

6#
ID:587810 发表于 2022-3-27 16:41 | 只看该作者
汇编有点强啊
回复

使用道具 举报

7#
ID:123289 发表于 2022-3-28 10:11 | 只看该作者
新手想搞定这个,极难极难。楼主当循序渐进,踏实步进。
我花了许多时间,写了关于12864LCD点阵屏的显示子程序。(打点,画线、定位打点、选位ASC显示、选位汉字显示、选位光标闪烁、光标移动操作、屏上数字汉字识别、屏上数字+-操作……)
还用高级语言对它进行了辅助设计(字库自动生成、自动编码、任意造字……)。
如此才能做到,分分钟搞定汉字或点图显示、屏幕人机对话。
回复

使用道具 举报

8#
ID:61140 发表于 2022-4-2 14:57 | 只看该作者
谢谢各位了,我自己搞定了
回复

使用道具 举报

9#
ID:61140 发表于 2022-7-4 00:48 | 只看该作者
ADMIN可以把我这几个悬赏贴子撤了么,我现在自己学会C了,不再需要别人帮助了,谢谢管理大神了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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