0% found this document useful (0 votes)
14 views57 pages

Principle and Interface Techniques of Microcontroller: - 8051 Microcontroller and Embedded Systems Using Assembly and C

The document covers interfacing techniques for microcontrollers, specifically focusing on LCD, ADC, and DAC. It details the operation and programming of LCDs, including command codes and data display, as well as keyboard interfacing methods using matrix connections. Additionally, it explains the principles and characteristics of various ADC devices, including the ADC0804 and ADC0809, along with their integration with microcontrollers.

Uploaded by

Wong Brian
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views57 pages

Principle and Interface Techniques of Microcontroller: - 8051 Microcontroller and Embedded Systems Using Assembly and C

The document covers interfacing techniques for microcontrollers, specifically focusing on LCD, ADC, and DAC. It details the operation and programming of LCDs, including command codes and data display, as well as keyboard interfacing methods using matrix connections. Additionally, it explains the principles and characteristics of various ADC devices, including the ADC0804 and ADC0809, along with their integration with microcontrollers.

Uploaded by

Wong Brian
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 57

Principle and Interface

Techniques of Microcontroller
--8051 Microcontroller and Embedded Systems
Using Assembly and C

LI, Guang (李光) Prof. PhD, DIC, MIET

WANG, You (王酉) PhD, MIET

杭州 • 浙江大学 • 2015
Chapter 13
Real-world Interfacing
LCD, ADC, and DAC
Outline
§13-1 LCD and Keyboard Interfacing
§13-2 Interfacing to ADC
§13-3 Interfacing to DAC

Wednesday, December 23,


2015
§13-1 LCD and Keyboard Interfacing
LCD Operation
 LCD is finding widespread use replacing LEDs
 The declining prices of LCD
 The ability to display numbers, characters, and graphics
 Incorporation of a refreshing controller into the LCD,
thereby relieving the CPU of the task of refreshing the
LCD
 Ease of programming for characters and graphics
Pin Descriptions for LCD

- Send displayed
information or
instruction command
codes to the LCD
- Read the contents of
the LCD’s internal
registers
LCD Command Codes
Sending Codes and Data to LCDs w/ Time Delay
To send any of the commands to the LCD, make pin RS=0. For data,
make RS=1. Then send a high-to-low pulse to the E pin to enable the
internal latch of the LCD. This is shown in the code below.
COMMAND:
ACALL READY ;is LCD ready?
MOV P1,A ;issue command code
CLR P2.0 ;RS=0 for command
CLR P2.1 ;R/W=0 to write to LCD
SETB P2.2 ;E=1 for H-to-L pulse
CLR P2.2 ;E=0,latch in
RET
DATA_DISPLAY:
ACALL READY ;is LCD ready?
MOV P1,A ;issue data
SETB P2.0 ;RS=1 for data To read the command
CLR P2.1 ;R/W =0 to write to LCD register, we make R/W=1,
SETB P2.2 ;E=1 for H-to-L pulse
RS=0, and a H-to-L pulse
CLR P2.2 ;E=0,latch in
RET
for the E pin.
READY:
SETB P1.7 ;make P1.7 input port
CLR P2.0 ;RS=0 access command reg
If bit 7 (busy flag) is
SETB P2.1 ;R/W=1 read command reg high, the LCD is busy
and no information
;read command reg and check busy flag
should be issued to it.
BACK: SETB P2.2 ;E=1 for H-to-L pulse
CLR P2.2 ;E=0 H-to-L pulse
JB P1.7, BACK ;stay until busy flag=0
RET
END
 One can put data at any location in the LCD and the
following shows address locations and how they are
accessed

 AAAAAAA=000_0000 to 010_0111 forThe


line1
upper address range
 AAAAAAA=100_0000 to 110_0111 forcan go as high as 0100111
line2
for the 40-character-wide
LCD Addressing for the LCDs of 40×2 size LCD, which corresponds to
locations 0 to 39
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Line1 (min) 1 0 0 0 0 0 0 0
Line1 (max) 1 0 1 0 0 1 1 1
Line2 (min) 1 1 0 0 0 0 0 0
Line2 (max) 1 1 1 0 0 1 1 1
Write an 8051 C program to send letters ‘M’, ‘D’, and ‘E’ to the LCD using the
busy flag method.
Solution:
#include <reg51.h>
sfr ldata = 0x90; //P1=LCD data pins
sbit rs = P2^0;
sbit rw = P2^1;
sbit en = P2^2;
sbit busy = P1^7;
void main(){
lcdcmd(0x38);
lcdcmd(0x0E);
lcdcmd(0x01);
lcdcmd(0x06);
lcdcmd(0x86); //line 1, position 6
lcdcmd(‘M’);
lcdcmd(‘D’);
lcdcmd(‘E’);
}
.....
void lcdcmd(unsigned char value){ .....
lcdready(); //check the LCD busy flag void lcdready(){
ldata = value; //put the value on the pins busy = 1; //make the busy pin at input
rs = 0; rs = 0;
rw = 0; rw = 1;
en = 1; //strobe the enable pin while(busy==1){
MSDelay(1); //wait here for busy flag
en = 0; en = 0; //strobe the enable pin
return; MSDelay(1);
} }
void lcddata(unsigned char value){ en = 1;
lcdready(); //check the LCD busy flag }
ldata = value; //put the value on the pins
rs = 1;
rw = 0;
en = 1; //strobe the enable pin
MSDelay(1);
en = 0;
return;
}
.....
Keyboard Interfacing
 Keyboards are organized in a matrix of rows and
columns
 The CPU accesses both rows and columns through ports
 Therefore, with two 8-bit ports, an 8 x 8 matrix of keys can be
connected to a microprocessor
 When a key is pressed, a row and a column make a
contact
 Otherwise, there is no connection between rows and columns

 In IBM PC keyboards, a single microcontroller


takes care of hardware and software interfacing
Scanning and Identifying the Key
 A 4x4 matrix connected to two ports
 The rows are connected to an output port and
the columns are connected to an input port
Matrix Keyboard Connection to ports

If all the rows


are grounded If no key has been
and a key is pressed, reading
pressed, one of the input port will
the columns will yield 1s for all
have 0 since the columns since they
key pressed are all connected
provides the to high (Vcc)
path to ground Port 2
(Out) D3 D2 D1 D0
(In)
Grounding Rows and Reading Columns
 It is the function of the microcontroller to scan the
keyboard continuously to detect and identify the
key pressed
 To detect a pressed key, the microcontroller
grounds all rows by providing 0 to the output
latch, then it reads the columns
 If the data read from columns is D3 – D0 = 1111, no key
has been pressed and the process continues till key
press is detected
 If one of the column bits has a zero, this means that a
key press has occurred
 For example, if D3 – D0 = 1101, this means that a key in the D1
column has been pressed After detecting a key press,
microcontroller will go through the process of identifying the
key
 Starting with the top row, the microcontroller
grounds it by providing a low to row D0 only
 It reads the columns, if the data read is all 1s, no key in
that row is activated and the process is moved to the
next row
 It grounds the next row, reads the columns, and
checks for any zero
 This process continues until the row is identified
 After identification of the row in which the key has
been pressed
 Find out which column the pressed key belongs to
From Figure 12-6, identify the row and column of the pressed key for each of the
following.
(a) D3 – D0 = 1110 for the row, D3 – D0 = 1011 for the column
(b) D3 – D0 = 1101 for the row, D3 – D0 = 0111 for the column
Solution :
From Figure 13-5 the row and column can be used to identify the key.
(a) The row belongs to D0 and the column belongs to D2; therefore, key number
2 was pressed.
(b) The row belongs to D1 and the column belongs to D3; therefore, key number
7 was pressed.
Flowchart for Program
§13-2 Interfacing to ADC and DAC
ADC Devices
 ADCs (analog-to-digital converters) are among the
most widely used devices for data acquisition
 A physical quantity, like temperature, pressure,
humidity, and velocity, etc., is converted to electrical
(voltage, current) signals using a device called a
transducer, or sensor
 We need an analog-to-digital converter to
translate the analog signals to digital numbers, so
microcontroller can read them
ADC Principle
 积分型
 输入电压通过积分电路转换成时间(脉冲宽度信
号)或频率(脉冲频率),转换速率极低;
 逐次比较型
 由一个比较器和DA转换器通过逐次比较逻辑构
成,速度较高、功耗低,低分辩率(<12位)
时价格便宜;
 并行比较型/串并行比较型
 电路规模极大,转换速率极高;
ADC Principle(2)
 Σ-Δ(Sigma/delta)调制型
 信号采样,负反馈网络对量化噪声进行低频衰
减,高频放大,用数字滤波器滤除带外噪声;

 压频变换型
 由计数器、控制门及一个具有恒定时间的时钟
门控制信号组成,把输入的模拟电压转换成与
模拟电压成正比的脉冲信号。
ADC0804 Chip
 ADC0804 IC is an analog-to-digital converter
 It works with +5 volts and has a resolution of 8
bits
 Conversion time is another major factor in
judging an ADC
 Conversion time is defined as the time it takes the
ADC to convert the analog input to a digital (binary)
number
 In ADC804 conversion time varies depending on the

clocking signals applied to CLK R and CLK IN pins, but


it cannot be faster than 110 µs
 CLK IN and CLK R
 CLK IN is an input pin connected to an external clock
source
 To use the internal clock generator (also called self-
clocking), CLK IN and CLK R pins are connected to a
capacitor and a resistor, and the clock frequency is
determined by
1
f=
1.1RC
 Typical values are R = 10K ohms and C = 150 pF
 We get f = 606 kHz and the conversion time is 110 µs
 Vref/2
 It is used for the reference voltage
 If this pin is open (not connected), the analog input
voltage is in the range of 0 to 5 volts (the same as the
Vcc pin)
 If the analog input range needs to be 0 to 4 volts,

Vref/2 is connected to 2 volts


Vref/2 Relation to Vin Range

Step size is the smallest change can be discerned by an ADC


 D0-D7
 The digital data output pins
 These are tri-state buffered
 The converted data is accessed only when CS = 0 and
RD is forced low
 To calculate the output voltage, use the following
formula Vin
Dout =
stepsize
 Dout = digital data output (in decimal),
 Vin = analog voltage, and

 step size (resolution) is the smallest change size step


 Analog ground and digital ground
 Analog ground is connected to the ground of the analog
Vin
 Digital ground is connected to the ground of the Vcc pin
 To isolate the analog Vin signal from transient
voltages caused by digital switching of the output
D0 – D7
 This contributes to the accuracy of the digital data
output
ADC804 Clock from 8051 XTAL2
8051 Connection to ADC804 with Clock from XTAL2 of 8051
常用A/D转换器芯片ADC0809
§ 13.2.3 A/D转换与接口技术
(1)ADC0809的特点
ADC0809是NS(National Semiconductor,美国国家半导体)公司生
产的逐次逼近型A/D转换器。其特点如下:
① 分辨率为8位,误差1LSB ;
② CMOS低功耗器件;
③ 转换时间为100 µs(当外部时钟输入频率fc = 640 kHz ) ;
④ 很容易与微处理器连接;
⑤ 单一电源+5V,采用单一电源+5V供电时量程为0~5V;
⑥无需零位或满量程调整,使用5V或采用经调整模拟间距的电压基准
工作;
⑦ 带有锁存控制逻辑的8通道多路输入转换开关;
⑧ DIP28封装;
⑨带锁存器的三态数据输出。
⑩ 转换结果读取方式有延时读数、查询EOC=1、EOC申请中断。
§ 13.2.3 A/D转换与接口技术
⑷逐次逼近寄存器SAR(8位):
 ADC0809的结构: ⑴8路模拟开关:
在A/D转换过程中用以产生设定
ADC0809A/D转换器芯片可以
的数字量和获得正确的与输入模拟
有8路模拟量输入,在地址锁存
量相当的数字量。
译码电路控制下由8路模拟开关
⑸D/A部分:
选择一路模拟量进行A/D转换。
包括电阻网络和树状开关,将
⑵地址锁存译码:
SAR中设定的数字量按基准电压
由地址锁存允许信号ALE锁存
VRFE转换成模拟量。
A、B、C三个输入端的地址信
⑹三态输出缓冲器:
息,借以决定从8路模拟量输入
A/D转换的结果被送到这里锁存、
ACH0~ACH7中选择一路进行
缓冲,等待结果输出。
A/D转换。
⑺控制时序逻辑:
⑶模拟比较器:
由START信号启动整个A/D转换
用以将选中的模拟量与芯片内
过程,按CLK时钟节拍控制整个
部设定
A/D转换过程,转换结束时可提供
的数字量所产生的模拟量进行
A/D转换结束信号EOC。
比较;
§ 13.2.3 A/D转换与接口技术
(2)ADC0809引脚功能
⑹ ALE:地址锁存允许信号输入端。ALE
⑴ IN0~IN7:8路模拟信号输入端。
信号有效时将当前转换的通道地址锁存。
⑵ C、B、A:8路模拟信号转换选择端。
⑺与START:启动A/D转换信号输入端。
低 8 位 地 址 中 A0~A2 连 接 。 由 A0~A2 地 址
当START端输入一个正脉冲时,立即启
000~111选择IN0~IN7八路A/D通道。

动0809进行A/D转换。START端与ALE端连
CLK:外部时钟输入端。
时钟频率高,A/D转换速度快。允许范围为
在一起,由80C51WR与0809片选端(例如
10~1280KHz
P2.0)通过或非门相连。。通常由80C51 ALE端直接或分频
后与0809 CLK端相连接。
⑻ EOC:A/D转换结束信号输出端,高电
⑷ D0~D7:数字量输出端。
平有效。
⑸ OE:A/D转换结果输出允许控制端。
⑼ UREF(+)、UREF(-):正负基准电
OE=1,允许将A/D转换结果从D0~D7端输出。
压输入端。
通常由80C51的RD端与0809片选端(例如P2.0)
⑽ Vcc:正电源电压(+5V)。
通过或非门与0809 OE端相连接。
GND:接地端。
§ 13.2.3 A/D转换与接口技术
ADC0809与单片机80C51接口
由于ADC0809输出含三态锁存,所以其数据输出可以直接连
接MCS-51的数据总线P0口。数据传送方式:

1)中断方式
2) 查询方式
3)延时等待方式
§ 13.2.3 A/D转换与接口技术
⑴ 中断方式
用中断方式对8路模拟信号依次A/D转换一次,并把结果存入以30H为
首址的内RAM中,试编制程序。
ORG 0000H
LJMP STAT
ORG 0013H ;中断服务子程序入口地址
LJMP PINT1
ORG 0100H ;初始化程序首地址
STAT: MOV R1,#30H ;置数据区首址
MOV R7,#8 ;置转换通道数
SETB IT1 ;置边沿触发方式
SETB EX1 ;开外中断
SETB EA ;CPU开中断
MOV DPTR,#07FF8H ;置0809通道0地址
MOVX @DPTR,A ;启动0通道A/D
SJMP $ ;等待A/D中断
§ 13.2.3 A/D转换与接口技术
ORG 0200H
PINT1: PUSH ACC ;保护现场
PUSH PSW
MOVX A,@DPTR ;读A/D值
MOV @R1,A
INC DPTR ;修正通道地址
INC R1 ;修正数据区地址
MOVX @DPTR,A ;启动下一通道A/D
DJNZ R7,GORETI ;判8路采集完否?
CLR EX1 ;8路采集已完,关中断
GORETI: POP PSW ;恢复现场
POP ACC
RETI ;中断返回
§ 13.2.3 A/D转换与接口技术
⑵ 查询方式
工作在查询方式时,0809 EOC端可直接与80C51 P1口或P3口中任一端线相
连。设用P1.0直接与0809 EOC端相连,试用查询方式编制程序,对8路模拟信
号依次A/D转换一次,并把结果存入以40H为首址的内RAM中。
MAIN: MOV R1,#40H ;置数据区首址
MOV R7,#8 ;置通道数
SETB P1.0 ;置P1.0输入态
MOV DPTR,#07FF8H ;置0809通道0地址
LOOP: MOVX @DPTR,A ;启动A/D
JNB P1.0,$ ;查询A/D转换结束否?未完继续查询等待
MOVX A,@DPTR ;A/D已结束,读A/D值
MOV @R1,A ;存A/D值
INC DPTR ;修改通道地址
INC R1 ;修改数据区地址
DJNZ R7,LOOP ;判8路采集完否?未完继续
RET ;8路采集完毕,返回
§ 13.2.3 A/D转换与接口技术
⑶ 延时等待方式
工作在延时等待方式时,0809 EOC端可不必与80C51相连,是根据时钟频
率计算出A/D转换时间,略微延长后直接读A/D转换值。0809 EOC端开路,
fosc=6MHz,试用延时等待方式编制程序,对8路模拟信号依次A/D转换一
次,并把结果存入以50H为首址的内RAM中。
MAIN: MOV R1,#50H ;置数据区首址
MOV R7,#8 ;置通道数
MOV DPTR,#07FF8H;置0809通道0地址
LOOP: MOVX @DPTR,A ;启动A/D
MOV R6,#50
DJNZ R6,$ ;延时100µS:2µS×50=100µS
MOVX A,@DPTR ;读A/D值
MOV @R1,A
INC DPTR ;修正通道地址
INC R1 ;修正数据区地址
DJNZ R7,LOOP ;判8路采集完否?未完继续
RET ;8路采集完毕,返回
Modern MCU ADC
MSP430F4xx ADC structure
ADC program
 //***********************************************************
 // 功能:ADC12采样
 // 入口:uchar i:ADC通道(1----12)
 // 出口:uint ADC12MEM:AD采样值(12bit)
 // 说明:1、使用外部参考电源Vr+=VeRef+,Vr-=AVss;
 // 2、单通道单次转换模式;
 // 3、单次转换地址为ADC12MEM0
 // 4、采用ACLK时钟
 //***********************************************************
ADC program (2)
uint ADC_sample( uchar i )
{
uint ADC_result;
ADC12CTL0 &= ~ENC;
ADC12CTL0 = ADC12ON + SHT0_2; //打开ADC12内核,设置采样周期4*16*t(aclk)
//定义ADC12MEM0为单次转换地址;采样信号来自采样定时器;单通道单次转换模式;内核
时钟源为MCLK
ADC12CTL1 = CSTARTADD_0 + SHP + CONSEQ_0 + ADC12SSEL_2;
ADC12MCTL0 = (i) + SREF_2 + EOS; //选择第i通道,参考电源Vr+=Veref+,Vr-=AVss;
ADC12CTL0 |= ENC + ADC12SC; //开始转换
while ( ( ADC12CTL1 & ADC12BUSY ) == 1 ); //ADC12BUSY?
ADC12CTL0 &= ~ENC;
ADC12CTL0 &= ~ADC12ON; //关闭ADC内核电源
ADC_result = ADCMEM[0]; //将ADC12MEMx给Result
_NOP();
return ADC_result;
}
§13-3 Interfacing to DAC
Digital-to-analog convert

0001 0010

Digital Signals: 04, 00, 06, 12, 1D, 22, 21….

Analog Signal

ideal
actual
DAC Devices

 There are several series of DAC,which have


different functions.
 Features
a. Format of digital numbers: binary number
8 bits, 10 bits, 12 bits, 14 bits, 16 bits
b. Output form : Current output and Voltage output
c. Self-contained reference voltage VREF and circumscribed
reference voltage VREF。
d. Output without latch 、 Output with latch 、
Buffer with two-stage
e. Input form: parallel and serial
 DAC with latch
 DAC 0832 is a typical 8 bit D/A chip with two-
data-buffer.
 Produced by National Semiconductor

8bit 8bit 8bit


DAC D/A
input
register converter
latch
 DAC0832 pin
 DAC 0832 operating mode
Using command to control:ILE、CS、WR1、WR2、
XFER

⑴ Direct connection: 5 control ports are


all effective, direct D/A
⑵ Single buffering: 5 control ports being
gated once
⑶ Double buffering: 5 control ports being
gated through two times
(1) Direct connection:
Single buffering mode

Figure 13-1
For Figure 13-1
Output saw tooth wave as following, amplitude
UREF/2=2.5V
7 machine cycles

5 machine cycles

START: MOV DPTR,#7FFFH ;set DAC0832 address


LOOP1: MOV R7,#80H ;set saw tooth wave amplitude 1 machine cycle
LOOP2: MOV A,R7 ;read output value 1
MOVX @DPTR,A ;output; 2
DJNZ R7,LOOP2 ; 2
SJMP LOOP1 ; 2
Input DAC D/A
register Register converter
CS

Input DAC D/A


register Register converter

Double buffering mode

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy