1 / 25

液晶显示 164 接口实验

液晶显示 164 接口实验. 实验目的 实验器材 硬件接线 软件功能 程序清单 备注说明. <<<. 实验目的 :. 掌握点阵字符型液晶显示 (LCD) 编程方法. 实验器材 :. 1. 单片机 2.LCD( 液晶显示屏 ) 3.74HC164(8 位移位寄存器 ). 16151413121110090807060504030201. VCC. Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0. B A CP CR. MOS1 SPSCK PTC3 PTC2 PTC1 PTC0 SS. 74HC164.

cayla
Download Presentation

液晶显示 164 接口实验

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 液晶显示164接口实验 • 实验目的 • 实验器材 • 硬件接线 • 软件功能 • 程序清单 • 备注说明 <<<

  2. 实验目的: 掌握点阵字符型液晶显示(LCD)编程方法

  3. 实验器材: 1.单片机 2.LCD(液晶显示屏) 3.74HC164(8位移位寄存器)

  4. 16151413121110090807060504030201 VCC Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 B A CP CR MOS1 SPSCK PTC3 PTC2 PTC1 PTC0 SS 74HC164 LCD(HD44780) MC68HC908GP32 VCC VCC 硬件接线:

  5. 软件功能: • 开始运行时,LCD显示“Wait Receiving..” • 等待接收字符,当收到16个字符时,显示之,重复此功能

  6. 程序说明 口地址定义 SPI地址定义 SCI串行通信口定义 变量定义 系统初始化 主程序 LCD初始化子程序 LCD命令执行子程序 74HC164初始化 LCD显示子程序 中断矢量 程序清单:

  7. *--------------程序说明--------------------------* *文件名LCD.ASM *硬件连接:74HC164的Q0-Q7分别接LCD的DB0-DB7; * 74HC164的MR,CLK接分别MCU的PTC3,SCK; * 74HC164的B接MCU的VCC(+5V); * 74HC164的A接MCU的MOSI; * LCD的E,R/W,RS分别接的PTC2,PTC1,PTC0。 *程序描述:1.开始运行时,LCD显示“Wait Receiving..” * 2.等待接收字符,当收到16个字符时显示之, * 重复此功能。 *目的:掌握点阵字符型液晶显示(LCD)编程方法 *备注说明:从PC机输入被显示的16个字符,以串行通信方 * 式发送到单片机,在液晶屏上显出这些字符。 *-------------------------------------------------*

  8. *-----口地址定义------------------------------- PTC EQU $0002 ;C口数据寄存器 LCD-RS EQU 0 ;LCD寄存器选择信号接PTC0 LCD-RW EQU 1 ;读写信号接PTC1 LCD-E EQU 2 ;LCD使能信号接PTC2 HC164-CR EQU 3 ;74HC164(移位寄存器) ;清除端接PTC3 DDRC EQU $0006 ;C口数据方向寄存器 *----SPI(串行外设接口)地址定义------------------- SPCR EQU $0010 ;SPI控制寄存器 SPSCR EQU $0011 ;SPI状态和控制寄存器 BIT-SPTE EQU 3 ;SPI发送器空标志位 SPDR EQU $0012 ;SPI数据寄存器

  9. *----SCI串行通信口地址------------------------ SCS1 EQU $0016 ;串行通信接口状态寄存器地址 SCDR EQU $0018 ;串行通信接口数据寄存器地址 *----变量定义--------------------------------- ORG $0090 BYTEDISPLY RMB 1 ;临时存放一个字符 LCD-BUFFER RMB 16 ;存放16字节 FlashStartAddr equ $8000 ;程序开始地址(因芯片不同可以更改) **********************************************

  10. *---------主程序----------------------------- ORG ORG FlashStartAddr MainInit: ;复位后程序从此开始执行 ;系统初始化 SEI ;禁止所有中断 LDHX #$023F ;堆栈初始化,放入GP32的RAM最高端 TXS JSR Init0 ;调系统初始化子程序Init0,初始学习时跳过此处 ;I/O初始化 NOP ;初始化 LDA #%00111010 ;SPI初始化设置:禁止中断, ;主机方式,时钟低电平有SPSCK启动移位、 ;脉冲,普通推拉模式,允许SPI STA SPCR LDA #%00000000 ;禁止中断,禁止错误检测, ;时钟分频系数为2 STA SPSCR

  11. LDA DDRC ;初始化E,RW,RS控制信号 ORA #%00001111 ;PTC3-0为输出 STA DDRC LDHX #$00 DISPLAY1: ;把要显示的16个初始字符 ;放入LCD-BUFFER中 LDA DISPLAYBYTES,X STA LCD-BUFFER,X AIX #1 CPHX #$10 BNE DISPLAY1 ;循环16次 BRA START

  12. DISPLAYBYTES FCB "WAIT RECEIVING.." START: JSR INIT-74HC164;初始化74HC164 ;(移位寄存器) JSR INIT-LCD;LCD初始化 JSR SHOW-LCD-BUFFER;把LCD-BUFFER中的 ;16个字符送LCD显示

  13. LDHX #$00 DISPLAY2: ;从PC机接收16个字符放入LCD- ;BUFFER开始的内存中 BRCLR 5,SCS1,* ;与PC机串行通信,判断接收器 ;是否满 LDA SCDR ;读SCI数据寄存器 STA LCD-BUFFER,X AIX #1 CPHX #$10 BNE DISPLAY2 JMP START ***************************************************

  14. *---INIT-LCD(LCD初始化子程序)------------------ *入口:无 *功能:初始化LCD(HD44780) *调用子程序:LCDCOMMAND(LCD命令执行子程序) *占用CPU内部寄存器:A,X *---------------------------------------------- INIT-LCD: BCLR LCD-RS,PTC ;令LCD的RS=0,R/W=0, ;进行LCD初始化 BCLR LCD-RW,PTC LDA #%00111000 ;功能设置:8位数据接口, ;2行显示,5*10点阵模式 JSR LCDCOMMAND

  15. LDA #%00001000 ;显示开关控制:开显示, ;关光标显示,不闪烁 JSR LCDCOMMAND JSR INIT-74HC164 ;74HC164(移位寄存器) ;初始化 BCLR LCD-RS,PTC ;RS,RW清零开始清屏 BCLR LCD-RW,PTC BRCLR BIT-SPTE,SPSCR,* ;判断发送数据寄存器 ;是否为空 LDA #%00000001 ;清屏指令 JSR LCDCOMMAND LDHX #$2DF ;等待清屏完毕,时间>1.6ms

  16. CLR-LCD-2-MS: ;延时 AIX #-1 CPHX #0 BNE CLR-LCD-2-MS LDA #%00000110;输入方式设置:数据读写 ;操作后,AC自动增1显示不动, ;光标左移 JSR LCDCOMMAND LDA #%00010100;光标移位设置:光标右 ;移一个字符位,AC自动加1 JSR LCDCOMMAND LDA #%00001100;显示开关设置:开显示, ;关光标显示,不闪烁 JSR LCDCOMMAND RTS

  17. *----LCDCOMMAND(LCD命令执行子程序)---------- *入口:A *功能:对A中指令送LCD(HD44780),进行命令执行或 *字符显示 *占用CPU内部寄存器:A *------------------------------------------- LCDCOMMAND: PSHH ;保护现场 PSHX PSHA ;保护入口指令码 BRCLR BIT-SPTE,SPSCR,* ;测试状态,发送数据 ;寄存器是否为空

  18. JSR INIT-74HC164 ;初始化74HC164芯片 PULA ;弹出入口指令码 STA SPDR ;把指令码发送出去 BRCLR BIT-SPTE,SPSCR,* ;测试发送完毕 NOP NOP BSET LCD-E,PTC ;LCD开始接受数据, ;置使能位为1

  19. NOP NOP BCLR LCD-E,PTC ;LCD结束接受数据,置 ;使能位为0 LDHX #$0020 ;等待40us DBNZX * PULX ;恢复现场 PULH RTS ********************************************

  20. *---INIT-74HC164(74HC164初始化)-------------- *入口:无 *功能:清空74HC164 *占用CPU内部寄存器:HX *------------------------------------------- INIT-74HC164: BCLR HC164-CR,PTC ;CR为0清除74HC164中的数据 BSET HC164-CR,DDRC LDHX #$0020 ;等待40us DBNZX * BSET HC164-CR,PTC ;清除完毕,74HC64的CR ;转为高电平 RTS

  21. *----SHOW-LCD-BUFFEER(LCD显示子程序)-------* *入口:内存LCD-BUFFER开始的16个地址中存放要显 *示的字符编码 *功能:显示内存LCD-BUFFER开始的16字节数据 *调用:LCDCOMMAND子程序 *占用CPU内部寄存器:A,HX *------------------------------------------* SHOW-LCD-BUFFER: ;进行显示数据寄存器 ;(DD RAM)地址设置 BCLR LCD-RS,PTC BCLR LCD-RW,PTC ;设置前8个字符 ;首DDRAM地址

  22. LDA #%10000000 JSR LCDCOMMAND LDHX #$0 ;显示前8个字符 SHOW-FIRST-8BYTE: BSET LCD-RS,PTC ;令LCDRS=1,R/W=0, ;写入数据到DD RAM中 BCLR LCD-RW,PTC LDA LCD-BUFFER,X ;将{LCD-BUFFER+X} ;的数据放入A作为入口 JSR LCDCOMMAND

  23. AIX #1 CPHX #$8 BNE SHOW-FIRST-8BYTE LDA #%11000000 ;设置后8个字符首DD RAM地址 BCLR LCD-RS,PTC BCLR LCD-RW,PTC JSR LCDCOMMAND LDHX #$08 ;显示后8个字符 SHOW-NEXT-8BYTE: BSET LCD-RS,PTC ;令LCD的RS=1,R/W=0,写入 ;数据到DD RAM中

  24. BCLR LCD-RW,PTC LDA LCD-BUFFER,X ;将{LCD-BUFFER+X}的数据 ;放入A作为入口 JSR LCDCOMMAND AIX #1 CPHX #$10 BNE SHOW-NEXT-8BYTE RTS ******************************************** --中断矢量--------------------------------* ORG $FFFE ;复位向量 DW MAININIT

  25. 系统初始化 • Init0: ;系统初始化Init0子程序 • LDA #%00000001 ;初始化CONFIG2 • STA $001E • LDA #%00111101 ;初始化CONFIG1 • STA $001F • CLR $0036 ;初始化PTCL • MOV #$01,$0036 • MOV #$01,$0038 • MOV #$2C,$0039 • MOV #$80,$003A • BSET 5,$0036 • BSET 7,$0037 • BSET 4,$0036 • RTS

More Related