5-12 LCM顯示控制實習 SW2 P0 P1 8051.

Slides:



Advertisements
Similar presentations
第5章 中断系统 5.1 中断的概念 5.2 MCS-51单片机的中断流程 5.3 MCS-51的中断响应条件和中断处理
Advertisements

本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
Ch 的組合語言與系統發展.
A B C D E F 5-2 七段數字顯示控制實習 Input 0H 1H 2H 3H 4H 5H 6H 7H 8H 9H 0AH 0BH
5-3 8x8矩陣LED控制實習.
第四章 指令系统及汇编语言程序设计.
CH.2 Introduction to Microprocessor-Based Control
8051 指令.
基本程式範例.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
本章小结 C51单片机指令系统概述 C51单片机寻址方式 C51单片机指令系统
单片机原理与应用.
第4章 处理器(CPU) 4.1 引言 4.2 逻辑设计的一般方法 4.3 建立数据通路 4.4 一个简单的实现机制 4.5 多周期实现机制.
5-4 4x4矩陣鍵盤控制實習.
第9章 数模转换器与模数转换器 本章学习目标 了解数模转换器的工作原理及性能指标 掌握模数转换器的应用 掌握数模转换器的应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
一、LCD显示器的基本原理 二、汉字显示原理 三、SED1330液晶显示控制器 四、HD44780液晶显示控制器 8.3 LCD显示器接口
A B C D E F 5-2 七段數字顯示控制實習 Input 0H 1H 2H 3H 4H 5H 6H 7H 8H 9H 0AH 0BH
5-8 光遮斷器控制實習.
第2章 单片机的结构原理与 简单应用 (课时:10学时).
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构.
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第三章 指令系统.
JTAG INTERFACE SRAM TESTER WITH C-LCM
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第十章 人机交互接口 本章学习目标 掌握键盘接口技术 掌握数码、液晶显示技术 了解数码管显示驱动和键盘扫描控制专用芯片.
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第四章 指令系统及汇编语言程序设计.
第4章 中断技术 一个完整的微机系统是由硬件和软件共同构成的。微机系统的硬件有CPU、存储器和I/O口,外设组成。CPU与存储器之间的信息交换比较简单,而CPU与外设之间进行信息交换之前必须确定外设是否准备好,即选择I/O传送方式。I/O传送方式有4种:无条件、查询、中断和DMA。本章学习中断传送方式的有关内容。
4-15 WDT HT66F50.
单片机系统设计 教师:朱华贵 2016年03月01日
数码管数字时钟电路的设计 1. 系统硬件电路的设计
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
5-6 串列埠模式0輸出埠擴充實習.
5-13 串列通訊實習.
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
CPU中的专用寄存器(SFR) 一、累加器Acc 二、通用寄存器B 三、程序计数器PC 四、堆栈指针SP 五、数据指针DPTR
键盘 LCD显示器 触摸屏技术 串行总线数据通信 PTR2000无线数据传输
4-9 Timer/Counter 控制七段速度
第三章 计算机系统的组成与工作原理.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
单片机原理与应用.
利用HT66F50 SIM模組單元中PCK腳位輸出特性 控制speaker 發聲 SIM 串列界面模組
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第1章 微型计算机基础.
單晶片實作講義 微電腦控制界面 (LCD) 。.
Presentation transcript:

5-12 LCM顯示控制實習 SW2 P0 P1 8051

Program function (範例) Program 5_12_1: 。 Program 5_12_2:。 Program 5_12_6: 在LCM的中間位置,以00:00:00的格式來顯示一電子馬錶的內容,其中最左邊二位數代表「分」,中間二位數代表「秒」,並以0.01秒的解析度來計時,當按下鍵盤的「 1」代表開始或繼續計時,按下鍵盤的「 2」代表暫停計時,按下鍵盤的「 0」則作歸零的動作。

Program function (自我練習)

LCM & 8051 interface Pin # Name Function 1 VSS Ground 2 VDD +5 V 3 VO 反襯度調整。 4 RS Selects registers. 0: Instruction register (for write) Busy flag: address counter (for read) 1: Data register (for write and read) 5 R/W Selects read or write. 0: Write 1: Read 6 EN Starts data read/write. 7~14 DB0~DB7 for data transfer and receive

HD44780U (LCD Controller/Driver) Block Diagram 8051 P1 P0 Source of figure: http://www.edaboard.com/thread180512.html

Connections between HD44780 & LCD 8051 P1 P0

Connections among 8051, HD44780, & LCD

LCM之組成單元 組成單元(1) Instruction register (IR) 組成單元(2) Display data RAM (DDRAM) 80  8 bits 00H 01H 02H 03H  10H 11H 12H 13H 40H 41H 42H 43H 50H 51H 52H 53H

LCM之組成單元 組成單元(3) Character generator ROM (CGROM) 9,920 bits 組成單元(4) Character generator RAM (CGRAM) 64 bytes

LCM之組成單元 組成單元(5) Data register (DR) 組成單元(6) Address counter (AC)

LCM之組成單元 組成單元(7) Busy flag (BF) 組成單元(8) Timing generator

LCM之組成單元 組成單元(9) Cursor and blink controller 組成單元(10) Bias generator

LCM控制指令 指令名稱 控制接腳信號 指令碼 功能說明 執行時間 RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 清除顯示器 1 游標歸位 進入模式設定 ON/OFF控制 顯示器 /游標移動方向設定 S/C R/L 功能設定 CGRAM位址設定 DDRAM位址設定 讀取BF及AC的值 資料暫存器寫入命令 寫入的資料 資料暫存器讀取命令 讀取的資料

指令一、二 指令名稱 控制接腳信號 指令碼 功能說明 執行時間 RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 命令一 清除顯示器 ┌┐ 1 1. Clear the display by filling DDRAM with 20H’s. 2. Move the cursor to the upper left corner; Clear AC. 1.64 ms 此命令將DDRAM內容全設為20H,以清除LCM顯示。空白字的字元碼就是20H。 將AC設為0可使游標移到第一行第一列。 命令二 游標歸位 x Move the cursor to the upper left corner; Clear AC. (The DDRAM content doesn’t change.) 此命令只是把AC設為0,以便將游標移到第一行第一列。 DDRAM的內容沒有受到改變,所以文字照樣顯示。

指令三、四 指令名稱 控制接腳信號 指令碼 功能說明 執行時間 RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 命令三 進入模式設定 ┌┐ 1 I/D S Determine the cursor direction after writing in the data; Determine whether the displayed character will move 40 s Cursor shifts left. AC = AC  1. Character shifts left. Cursor doesn’t move Cursor shifts right. AC = AC + 1. Character shifts right. Cursor doesn’t move I/D = 1: 命令四 顯示器ON/OFF控制 D C B D = 1:display D = 0:does not display D = 1:show cursor D = 0:does not show cursor D = 1:cursor blinks D = 0:cursor doesn’t blink 此命令控制(1) 文字是否顯示、(2)游標是否顯示、(3)游標是否閃爍。 例如:指令碼 0FH  顯示文字、顯示游標、游標閃爍。 交互使用指令碼 08H 和 0CH  文字閃爍。

指令五、六 指令名稱 控制接腳信號 指令碼 功能說明 執行時間 RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 命令五 設定顯示器/游標移動方向 ┌┐ 1 S/C R/L  S/C = 1: shift the displayed text S/C = 0: shift the cursor R/L = 1: shift left R/L = 0 shift right 40 s 命令六 功能設定 DL N F x

指令七、八、九 指令名稱 控制接腳信號 指令碼 功能說明 執行時間 RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 命令七 位址設定 ┌┐ 1 CGRAM address (6 bits) 40 s 命令八 DDRAM address (7 bits) Write AC with DDRAM address 命令九 讀取BF和AC的值 BF AC content (7 bits)

指令、 指令名稱 控制接腳信號 指令碼 功能說明 執行時間 RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 資料暫存器寫入命令 1 ┌┐ 寫入的資料 40 s 資料暫存器讀取命令 讀出的資料

LCM初始化  (1) 電源重置

LCM初始化  (2) 軟體重置

5-12-1 LCM文字顯示控制 (一) 程式功能: 在LCM第一列中央顯示”Hello! Welcome”。 comment 程式功能: 在LCM第一列中央顯示”Hello! Welcome”。 * 使用LCM前應先做初始化。 * 送資料和下命令給LCM前應先檢查LCM是否已忙完了。

Program 5_12_1  (1/3) RS REG P1.5 ; (p.103) 虛擬指令REG: 以一名稱代表一個暫存器或直接定址位元。 RW REG P1.6 EN REG P1.7 LCMBUS REG P0 ;============================== ORG 000H MOV SP,#60 CLR EN CALL LCMINIT MOV A,#10000000B ; These two instruction accomplish a 命令八. The instruction code is 1000 0000B . CALL WRINS ; The last 7 bits is to be loaded into AC to be used as the DDRAM address. ; The effect is to move the cursor to the top leftmost location of the LCM. MOV DPTR,#LINE CALL PRTSTR JMP $ LINE DB " Hello! Welcome $“ Excerpt from I5_12_1.LST: 25 0065 20 20 20 48 65 LINE DB " Hello! Welcome $" 006A 6C 6C 6F 21 20 006F 57 65 6C 63 6F 0074 6D 65 20 20 20 0079 24

Program 5_12_1  (2/3) ;============================== ; Function: Wait until BF = 0 ; Algorithm: ; * Use 命令九 to acquire BF; ; * Keep acquiring and checking value of BF ; when BF stays at 1 ; * Return when BF becomes 0. ; ------------------------------------------------- CHKBSY: MOV LCMBUS,#0FFH ; To use P0 as an input port CLR RS ; RS = 0 SETB RW ; RW = 1.  命令九 SETB EN MOV C,LCMBUS.7 ; = BF CLR EN JC CHKBSY ; Jump if BF = 1 RET ; Return if BF = 0 ;==============================t ;============================== ; 命令一 ~ 八都有可能,視Acc的內容而定。 ; Input: A = the instruction code ; --------------------------------------------- WRINS: CALL CHKBSY CLR RS ; RS = 0 CLR RW ; RW = 0 SETB EN MOV LCMBUS,A CLR EN RET ;============================== ; Function: to display an ASCII string pointed to by DPTR until a ‘$’ ; Input: DPTR points to the ASCII string to be displayed. ; -------------------------------------------- PRTSTR: MOV A,#0 MOVC A,@A+DPTR CJNE A,#'$',PRINT JMP ENDPRT PRINT: CALL WRDATA INC DPTR JMP PRTSTR ENDPRT: RET ;============================== ; Display a character contained in Acc ; Input: A = ASCII code of the character to ; be displayed ; ------------------------------------------- WRDATA: CALL CHKBSY SETB RS ; RS = 1 CLR RW ; RW = 0 SETB EN MOV LCMBUS,A CLR EN RET

Quiz: In the routine WRINS, which LCM control instruction is executed Quiz: In the routine WRINS, which LCM control instruction is executed? How do you know? Ans: Because RS = 0 and RW = 0, one among 命令一 ~ 八will be executed. The value in the accumulator will determine which of these eight instructions will be executed. Quiz: In the routine CHKBSY, how do you know that 命令九 is used? Ans: Quiz: Is the first instruction {MOV LCMBUS,#0FFH} in CHKBSY an LCM instruction? Why? Ans: It is not, because the LCM has not been enabled when this instruction is executed. Quiz: In the routine CHKBSY, what is the purpose of the first instruction {MOV LCMBUS,#0FFH}?

Program 5_12_1  (3/3) ;============================== ; Initialize the LCM. ; ------------------------------------------------- LCMINIT: MOV A,#00110000B CALL WRINS MOV R6,#41 ;DELAY 4.1mS $1: MOV R7,#50 DJNZ R7,$ DJNZ R6,$1 MOV R7,#50 ;DELAY 100uS MOV A,#00111000B ;FUNCTION SET MOV A,#00001000B ;DISPLAY OFF MOV A,#00000001B ;DISPLAY CLEAR CALL WRINS MOV A,#00000110B ;ENTRY MODE SET MOV A,#00001100B RET

5-12-2 LCM文字顯示控制 (二) 程式功能: 在LCM第一列中央顯示”Hello! Welcome”, 並以0.5秒的時間間隔做閃爍。 * 此程式使用命令四造成文字閃爍的視覺效果。

Program 5_12_2 RS REG P1.5 RW REG P1.6 EN REG P1.7 LCMBUS REG P0   ;============================== ORG 000H MOV SP,#60 CLR EN CALL LCMINIT MOV A,#10000000B ;SET DDRAM ADDRESS = 00H CALL WRINS MOV DPTR,#LINE CALL PRTSTR LINE DB “ Hello! Welcome $” 將 Program 5_12_1的 JMP $ 指令改成左列的指令,就達到閃爍的目的。 NEXT: CALL DELAY MOV A,#00001000B ; 08H CALL WRINS ; 命令四,DISPLAY OFF MOV A,#00001100B ; 0CH CALL WRINS ; 命令四,DISPLAY ON JMP NEXT (in Program 5_12_1) JMP $

5-12-3 LCM文字顯示控制 (三) 程式功能:將文字串”Hello! Welcome”由LCM右側往左緩慢移入到第一列的中央位置,然後不斷閃爍。 * 此程式比前兩小節(5-12-1, 5-12-2)程式多加兩個副程式,即FLASH和SHIFT。

Program I5_12_3.asm 之主程式 RS REG P1.5 RW REG P1.6 EN REG P1.7 comment RS REG P1.5 RW REG P1.6 EN REG P1.7 LCMBUS REG P0 ;=========================== .SYMBOLS ON ORG 0000H JMP MAIN ORG 0050H MAIN: MOV SP,#60 CLR EN ;DISABLE LCM CALL LCMINIT MOV A,#10010100B ;SET DDRAM ADDRESS = 14H CALL WRINS MOV DPTR,#LINE ;DISPLAY STRING CALL PRTSTR MOV R1,#17 ;Totally 17 characters NEXT: CALL SHIFT CALL DELAY DJNZ R1,NEXT N_FLASH: CALL FLASH JMP N_FLASH LINE DB "Hello! Welcome $“ ;==============================

Program I5_12_3.asm 增加之副程式 ;============================== ; 用命令四造成文字閃爍的效果。 ; 與Program 5_12_2的NEXT後那一段程式相同。 ; ------------------------------------------------- FLASH: CALL DELAY MOV A,#00001000B ; Text display OFF CALL WRINS MOV A,#00001100B ; Text display ON RET ;============================== ; 用命令五,S/C = 1  移動顯示的文字, R/L = 0  向左移 ; -------------------------------------------------- SHIFT: MOV A,#00011000B ; Displayed text shift left CALL WRINS RET

5-12-4 LCM文字顯示控制 (四) 程式功能:將矩陣鍵盤所按的鍵值顯示在LCM上並有閃爍的游標。 此程式比前三小節多增加一個副程式RDINS以讀取指令暫存器(IR)的內容。此副程式用命令九讀取AC (Address counter)的內容,以判斷游標的位置是否已經到了一列的最右邊。 若游標已超過第一列的最右邊(13H),必須將之移到第二列的最左邊。 若游標已超過第二列的最右邊(53H),必須將之移到第一列的最左邊。 Key code 必須先轉成 ASCII code 才能送到LCM顯示。 Key code = 0 ~ 9  ASCII code = key code + 30H Key code = A ~ F  ASCII code = key code + 37H

Pprogram I5_12_4.ASM (1/3: main program) RS REG P1.5 RW REG P1.6 EN REG P1.7 LCMBUS REG P0 ;============================== .SYMBOLS ON ORG 0000H JMP MAIN ORG 003H JMP INT0 ORG 100H MAIN: MOV SP,#60 MOV P1,#0FFH MOV IE,#10000001B SETB IT0 CLR EN CALL LCMINIT MOV A,#10000000B ;SET DDRAM ADDRESS CALL WRINS JMP $ comment

Pprogram I5_12_4.ASM (2/3: INT0 service routine) ;============================== INT0: CLR EA CLR C MOV A,P1 ANL A,#0FH MOV B,A ; To convert key code into ASCII code. SUBB A,#10 ; If A < 10, then A is 0 ~ 9 JC NUMBER ; MOV A,B ; A is A ~ F ADD A,#37H ; ASCII code = A + 37H JMP DISP ; NUMBER: ; MOV A,B ; A is 0 ~ 9 ADD A,#30H ; ASCII code = A + 30H DISP: CALL WRDATA CALL RDINS ANL A,#01111111B MOV B,A SUBB A,#14H ; To determine if the cursor is at the end of the 1st row JNZ TESTB MOV A,#11000000B ; Move the cursor to the beginning of the 2nd row CALL WRINS TESTB: MOV A,B SUBB A,#54H ; To determine if the cursor is at the end of the 2nd row JNZ RETURN MOV A,#10000000B ; Move the cursor to the beginning the 1st row RETURN: SETB EA RETI comment

Pprogram I5_12_4.ASM (2/3: INT0 service routine) comment Key Key code ASCII code  Key code 00H 30H 1 01H 31H 2 02H 32H 3 03H 33H 4 04H 34H 5 05H 35H 6 06H 36H 7 07H 37H 8 08H 38H 9 09A 39H A 0AH 41H B 0BH 42H C 0CH 43H D 0DH 44H E 0EH 45H F 0FH 46H How to determine if the key code is among 0 ~ 9 or A ~ F: If the key code – 10 < 0, then the key code is among 0 ~ 9 and ASCII code = key code + 30H If the key code – 10 >= 0, then the key code is among A ~ F and ASCII code = key code + 37H

Program I5_12_4.ASM (3/3: subroutine) ;============================== ; 用命令九讀取AC內容。 ; Input: none. ; Output: Acc (the accumulator) contains BF and AC. ; ----------------------------------------------------- RDINS: CALL CHKBSY CLR RS ; RS = 0 SETB RW ; RW = 1 SETB EN MOV A,LCMBUS CLR EN RET Quiz: How do you know that the subroutine RDINS uses 命令九? Ans: ;============================== ; 其他副程式包括 ; WRINS, ; WRDATA, ; CHKBSY, ; LCMINIT, ; PRTSTR ; 其內容和前幾個小節的副程式一樣,

comment

5-12-5 LCM文字顯示控制 (五) 程式功能: * 此程式

comment

comment

5-12-6 六位數字電子碼錶 程式功能: * 此程式

comment

comment

comment

comment