Download - Remote Locator

Transcript

INTERFACING KEYBOARD:

ABSTRACT

We know that as technology is growing more and more equipment are being developed. In laboratories there will be many instruments and equipments kept in big rooms and out of them few will be used frequently, some are used occasionally. Naturally human tendency is that after the complete usage of instruments or equipments they will not be place them in right order and correct location. Hence it becomes difficult to locate them immediately when they are required again. Our project intends to eliminate this problem.

The objective of the project is to develop such a system, which can identify and indicates the location of the instruments and equipments in laboratories.

CONTENTS

1. Introduction

2. Functional Block Diagram

3. Functional Description

4. Introduction to AT 89C51

5. Hardware

5.1 Power Supply

5.2 L C D

5.3 ASK Tx and Rx

5.4 MATRIX keypad

5.5 Relay Driver Circuit Using ULN 2003

6. Software

6.1 Flow Chart

6.2 Program

+

INTRODUCTION

INTRODUCTION:

The main motivation behind bringing our project entitled MICROCONTROLLER BASED INSTRUMENT IDENTIFICATION AND DETECTION is the careless nature of the human beings after the work is done. We know that it is the human tendency to misplace the things after the work is done rather than placing them in predefined order so that we can get it easily whenever it is required again. If not placed in order difficulty arises while searching. In the case of a small firm or laboratory searching is not a problem but for the case of big laboratory searching kills lot of time which is not good. This project enables to find the misplaced thing without actually wasting lot of time.

This is a brief description of our project entitled MICROCONTROLLER BASED INSTRUMENT IDENTIFICATION AND DETECTION SYSTEM.

Assuming that, if we have large laboratory with large number of different instruments and equipments arranged in some specific order, and if we need a particular thing, it is bit difficult to search in a big arrangement. Instead of that, if we enter the category ID of the equipment, through keyboard, then that will be encoded and transmitted through the ASK transmitter. Then at the other side this signal will be received and decoded, and decoded data will be read by the controller and it searches for particular equipment to give the indication by means of sound beep.Functional Block Diagram:

Transmitter:-

Receiver:-

Functional Description:

INTRODUCTION TO AT 89C51

8951/8051 MICROCONTROLLER:

Computer in its simplest from needs at least three basic blocks: the central processing unit (CPU). Input-output (I/O) and memory (RAM/ROM). The integrated from of CPU is the microprocessor. As the use of microprocessors in control applications increased, development of microcontroller unit or MCU took shape, wherein CPU, I/O and some limited memory on a single, chip was fabricated. Intention was to reduce the chip count as much as possible. There are many types of microcontrollers currently in the market, out of which the 8031. Family from Intel, and second soured by many others, have gained immense popularity.

INTRODUCTION

Looking back into the history of microcomputers, one would at first come across the development of microprocessor, I.e.., the processing element, and later on the peripheral devices. The three basic element the CPU, I/O devices and memory- have developed in distinct direction. While the CPU has been the proprietary item, the memory devices fall into general-purpose category and the I/O devices may be grouped somewhere in- between. The control applications of microprocessors have different requirements, both hardware-wise as well as software-wise. Whereas microprocessor has just sufficient number of on-chip devices to act as the CPU, a number of other auxiliary devices are needed to get a working microcontroller. integration of I/O and memory with the CPU on a single chip ushered in the era of development of a new class of devices, i.e..., the single chip microcontrollers. Now only one device was needed to run an independent control application. The 8048 from Intel, Z80 from Zilog, 6805 and 6811 from Motorola represent a few of the members of this large family. The 8048 from Intel became popular due to its use in the keyboard of the IBM PC.

The family of second generation microcontrollers from Intel, the 8051 and other related devices, has brought about a new revolution in this field. While the early microcontrollers had only limited memory and existent serial I/O capability, the 8051 provides for 4k PROM/ROM, 128 byte RAM and 32 I/O lines. It also includes a universal asynchronous receive-transmit (UART) device, two 16-bit timer/counter and elaborate Interrupt logic. Lack of multiply and divide instructions, has also been taken care of in the 8051. Thus the 8051 may be called nearly equivalent of the following devices on a single chip:

8085 + 8255 + 8251 + 8253 + 2764 + 2764 + 6116

(Microprocessor) (PPI) (USART) (TIMER) (EPROM) (RAM)

In short, the 8051 has the following on-chip facilities:

4k ROM (EPROM on 8751)

128 byte RAM

USRT

32 Input-output port lines

TWO 16-bit timer/ count

Six interrupt sources and

On-chip clock oscillator and power on- reset circuitry.

The other members of this family, such as 8053, have one extra timer/counter, 8k ROM/EPROM and 256 byte RAM, while 8031and 8032 are corresponding ROM-less versions of 8052,respectivily. All these are also available in CMOS versions. The 8051 family includes a large numbers of members from many manufacturers, some of which are listed below.

8051 with 4k ROM and its

8751 with 4k EPROM

8031 ROM-less version.

8052 with 8k ROM, one additional counter/timer and 256-bit RAM; its other version (8052h) comes with built-in BASIC interpreter.

8032 & 8752 are ROM + I/O (80C31) Along with pulse width modulator.

80C592 With 8-channel A/D converter, by Philips.

AT 89C51 CMOS device with EPROM (100 times programmable), by ATMEL.

SALIENT FEATURES

The 8051 can be configured to bypass the internal 4k RAM and run solely with external program memory. For this its external access ( ) pin 31 has to be grounded, which makes it equivalent to 8031. The program store enable (PSEN) signal acts as read pulse for program memory. The data memory is external only and a separate RD* signal is available for reading its contents.

Use of external memory requires that three of its 8-bit ports (out of four) are configured to provide data/address multiplexed bus, Hi address bus and control signals related to external memory use. The RXD and TXD ports of UART also appear on pins 10 and 11 of 8051 and 8031, respectively. One 8-bit port, which is bit addressable and extremely useful for control applications, still remains free for use.

The UART utilizes one of the internal timers for generation of baud rate. The crystal used for generation of CPU clock has therefore to be chosen carefully. The 3.579MHz crystal; available abundantly, can provide a baud rate of 1200.

The 256-byte address space is utilized by the internal RAM and special function registers (SFRs)array which is separate from external RAM space of 64k. the 00-7f space is occupied by the RAM and the 80-FF space by the SFRs. The 128-byte internal RAM has been utilized in the following fashion:

00-1F: Used for four banks of eight registers of 8-bit each. The four banks may be selected by soft ware any time during the program.

20-2F: The 16 bytes may be used as 128 bits oriented programs.

30-7F This area is used for temporary storage, pointers and stack. On reset, the stack starts at 08 and gets incremented during use.

The list of special function registers along with their hex addresses is given in table 1.

HARDWARE DETAILS

The on-chip oscillator of 8031 can be used to generator system clock. Depending upon version of the device, crystals from 3.5 to 12 MHz may be used for this purpose. The system clock is internally divided by 6 and the resultant time period becomes one processor cycle. The instructions take mostly one or two processor cycles. The ALE (address latch enable) pulse rate is 1/6th of the system clock, except during access of internal program memory, and thus can be used for timing purposes.

The two internal timers are wired to the system clock and persecuting factor is decided by the software apart from the count stored in the two bytes of the timer control registers. One of the counters, as mentioned earlier, is used for generation of baud rate clock for the UART. It would be of interest to point out that the 8052 has a third timer which is usually used for generation of baud rate.

The reset input is normally low and taking it high reset the microcontroller. In the present hardware, a separate CMOS circuit has been used for generation of reset signal so that it could be used to drive external devices as well.

PIN DETAILS OF 8951

VSS

Circuit ground potential.

VCC

5-volt power supply input for normal operation and program verification.

PORT0

Port o is an 8-bit open drain BI directional input output port. It is also the multiplexed low ordered address and data bus when using external memory. it is used for data output during program verification Port 0 can sink (and in bus operations can source) 8 LSTTL loads.

PORT 1

Port 1 is an 8 bit quasi bi-directional I/o port. It is also used for low order address byte during program verification. Port 1 can sink / source 4 LSTTL loads.

PORT 2

Port 2 is an 8 bit quasi bi-directional i/o port. It also emits the high order address byte when according external memory. It is used for the high order address and the control signals during program verification. Port 2 can sink / source 4 LSTTL loads.

PORT 3

Port 3 is an 8 bit quasi bi-directional i/o port with internal pull ups. It also serves the function of various special features of the MCS-51th. Family as listed below:

Port pin Alternate function

P3.0 RXD (serial input port)

P3.1 TXD (serial input port)

P3.2 INTO (external interrupt)

P3.3 INT1 (external interrupt)

P3.4 TO (timer /counter 1 external input)

P3.5 T1 (timer/ counter 1 external input)

P3.6 WR (external data memory write strobe)

P3.7 RD (external data memory read strobe)

The output latch corresponding to a secondary function must be programmed to a one (1) for that function to operate. Port 3 can sink /source 4 LSTTL loads.

RST

A high on this pin for two-machine cycle while the oscillator is running rests the devices. A small external pull down resistor (=8.2 kilo ohms) from RST to VSS permits power on reset when a capacitor (=10 microfarad) is also connected from this pin to VCC.

ALE

Address latch enable output for latching the low byte of the during access to external memory. ALE is activated at a constant rate of 1/6 the oscillator frequency except during an external data memory access at which time one ALE pulse is skipped. ALE can sink / source 8 LSTTL inputs.

PSEN

The program store enable output for latching the low byte of the during access to external memory six oscillator periods except during external data memory access PSEN remains high during internal program memory. Do not float EA during normal operation.

XTAL 1

Input to the inverting amplifier that forms the part of the oscillator and input to the internal clock generator. XTAL2 receives the oscillator signal when an external oscillator used.

XTAL 2

Output of the inverting amplifier that forms the part of the oscillator and input to the interval clock generator. XTAL2 receives the oscillator signal when an external oscillator used.

INSTRUCTION SET

Moving Data

Mnemonic Operation

MOV A, #n Copy the immediate data byte n to the A register

MOV A, Rr Copy data from register Rr to register A

MOV Rr, A Copy data from register A to register Rr

MOV Rr, #n Copy the immediate data byte n to register Rr

MOV DPTR, #nn Copy the immediate 16-bit number nn to the DPTR register

Mnemonic Operation

MOV A, #OF1h Move the immediate data byte F1h to the A register

MOV A, RO Copy the data in register RO to register A

MOV DPTR, #0ABCDh Move the immediate data bytes ABCDh to the DPTR

MOV R5, A Copy the data in register A to register R5

MOV R3, # 1 Ch Move the immediate data byte 1Ch to register R3

CAUTION

It is impossible to have immediate data as a destination. All number must star with a decimal number (0-9), or the assumes the number is a label. Register-to-register moves using the register addressing mode occur between register A and RO to R7.

LOGICAL OPERATIONS

Mnemonic Operation

RL Rotate a byte to the left; the Most Significant Bit (MSB) becomes the Least Significant Bit (LSB)

RLC Rotate a byte and the carry bit left; the carry becomes the LSB, the MSB becomes the carry

RR Rotate a byte to the right; the LSB becomes the MSB

RRC Rotate a byte carry to the right; the LSB becomes the carry, and the carry the MSB

SWAP Exchange the low and high nibbles in a byte

CAUTION

If the direct address destination is one of the port SFRs, the data latched in the SFR, not the pin data is used. No flags are affected unless the the direct address is the PSW. Only internal RAM or SFRs may be logically manipulated.

Mnemonic Operation

INC destination Increment destination by 1

DEC destination Decrement destination by 1

ADD/ADDC destination, source Add source to destination with/with carry flag

SUBB destination, source Multiply the contents of register A and B

MUL AB Divide the contents of register A by the contents of register B

DA A Decimal Adjust the A register

CAUTION

Remember: No match flags are affected. All 8-bit address contents overflow from FFh to 00h. DPTR is 16 bits; DPTR overflows from FFFFh to 0000h. The 8-bit address contents underflow from 00h to FFh. There is no DEC DPTR to match the INC DPTR.

JUMP AND CALL INSTRUCTIONS

Conditional Jumps

Mnemonic Operation

JC radd Jump relative if the Carry flag is set to 1

JNC radd JUMP relative if the Carry flag is reset to 0

JB b, radd JUMP relative if addressable bit set to 1

JNB b, radd JUMP relative if addressable bit is set, and clear the addressable bit to 0

Unconditional Jumps

Mnemonic Operation

JMP @A+DPTR Jump to the address formed by adding A to the DPTR; this is an unconditional

Jump and will always be done; the address can be anywhere in program

memory; A, the DPTR, and the flags are unchanged

AJMP sadd Jump to absolute short range address sadd; this an unconditional jump and is always taken;no flags are affected

LJMP sadd Jump to absolute long range address ladd; this is an unconditional jump and is always taken; no flags are affected

SJMP radd Jump to relative address radd; this is an unconditional jump and is always taken; no flags are affected

NOP Do nothing and go to the next is instruction; NOP (no operational) is used to waste time in a software timing loop, or to leave room in a program for later additions; no flags are affected

DJNZ decrements first, then check for 0. A location set to 00h and then decremented goes to FFh, then Feh, and so on, down to 00h.

CJNE does nor change the contents of any register or RAM location. It can change the Carry flag to 1 if the destination byte is less than the source byte.

There is no zero flag; the JZ and JNZ instructions check the contents of the A register for 0.

JMP @A+DPTR does not change A, DPTR, or any flags,

The student version of A51 will not assemble more than 400h bytes of code (0000to 03FFh). Addresses greater than 03FFh are not assembled.

HARDWARE

POWER SUPPLY:

Main building block of any electronic system is the power supply to provide required power for their operation. For the microcontroller, audio amplifier, keyboard, edge connector +5V, required. And for driving the motor +12V. Is required. The power supply provides regulated output voltage of +5V, and non regulated output voltage +12V.

Three terminal IC 7805 meets the requirement of +5V regulated. The secondary voltage from the main transformer is rectified by diodes D1-D4 and are filtered by capacitor C1. This unregulated dc voltage is supplied to input pin of regulator IC. C2 is an input bypass capacitor and C3 is to improve ripple rejection. The IC used are fixed regulator with internal short circuit current limiting and thermal shut down capability

LIQUID CRYSTAL DISPLAY (LCD) MODULE

Frequently a AT89C51 program must interact with the outside world using input and output

devices that devices that communicate directly with a human being. One of the most common

output devices used is a LCD. Some common LCDs are 16x2 and 20x2 displays, which mean

16 characters per 2 line and 20 characters per lines, respectively.

Fortunately. Standards exist which allow us to communicate with vast majority of LCD.the

Standard is referred is referred to as HD44780U, which refer to the controller chip, which

Receivers data from microcontroller and communicates directly with LCD.

HD44780U

The 44780 standard requires 3 control lines as 4 or 8 1/0 lines for the data bus the user may

Select whether the LCD is to operate with 4-bit data bus or 8-data bus. The 3 control lines are

EN, RS and RW.

The EN line is called called Enable. This control line is used to tell LCD that we are sending it

Data. To send data the, program should first send High in this line and then set the other two

Control line and put data on the data bus. When other lines are ready, EN should be made

LOW.

The RS line is Register selector line . when RS is LOW , the data is to be treated as a

Command or special instruction (such as CLEAR SCREEN, ETC). When RS is HIGH, the

data being sent is text data that should be displayed on the screen.

The RW line is read/write control line. When it is LOW, the information on data bus is being

written to LCD. When RW is HIGH, the program is effectively querying the LCD with the

instruction Get LCD status.

A more robust method is to use GET LCD STATUS command to determine if the LCD is

the last really use the LCD, must initialize and configure it. This is accomplished by sending a

number of instructions to the LCD. The first instruction will be to specify whether we are

using 4 or 8- line data bus. Sending a 38h command to the LCD dose this. Before we send the

Command the RS line should be made low. We then send the 0Eh command to turn the LCD

On. Lastly we send the 06h command so that every time we send a character the cursor

automatically moves right.

NOTE: the LCD can be cleared using the 01h command.

Cursor Positioning

The 44780 contain a certain amount of memory, which is assigned to display. All

Text we write to 44780 is stored in this memory, and the 44780 subsequently reads this

Memory to display the text on LCD itself. This memory maps is shown below.

DISPLAY

In the above memory map, area up to 0F and 4F is the visible display. As one can see, it measures 16

Characters per 2 lines. The numbers in each box in memory address that corresponds to that on screen.

Thus the Set Cursor Position instruction 80h tell the LCD to position the cursor. Adding the cursor

Position to 80h does these sets the cursor to the required position on the screen.

PIN Assignment:

PIN NO.SYMBOL

1Vss

2VDD

3V0

4RS

5R/W

6E

7DBO

8DB1

9DB2

10DB3

11DB4

12DB5

13DB6

14DB7

15LED-(K)

16LED-(A)

LCD INTIALIZING BY INSTRUCTION

8-bit interface mode

POWER ON

WAIT FOR MORE THAN 30MS

AFTER VDD RISES TO 4.5V

FUNCTIONAL SET

RSRWDB7DB6DB5DB4DB3DB2DB1DB0

000011NFXX

WAIT FOR MORE THAN 39US

DISPLAY ON/OFF CONTROL

RSRWDB7DB6DB5DB4DB3DB2DB1DB0

0000001DCB

WAIT FOR MORE THAN 39US

DISPLAY CLEAR

RSRWDB7DB6DB5DB4DB3DB2DB1DB0

0000000001

WAIT FOR MORE THAN 1.53MS

ENTRY MODE SET

RSRWDB7DB6DB5DB4DB3DB2DB1DB0

00000001I/DSH

INITIALIZATION END

condition: fosc=270khz

N01-LINE MODE

12-LINE MODE

F0DISPLAY OFF

1DISPLAY ON

D0DISPLAY OFF

1DISPLAY ON

C0CURSOR OFF

1CURSOR ON

B0BLINK OFF

1BLINK ON

I/D0DECREMENT MODE

1INCREMENT MODE

SH0ENTTIRE SHIFT OFF

1ENTIRE SHIFT ON

4-bit interface mode

POWER ON

WAIT FOR MORE THAN 30 MS AFTER VDD RISES TO 4.5V

FUNCTION SET

RSRWDB7DB6DB5DB4DB3DB2DB1DB0

000010XXXX

000010XXXX

00NFXXXFXX

WAIT FOR MORE THAN 39US

DISPLAY ON/OFF CONTROL

RSRWDB7DB6DB5DB4DB3DB2DB1DB0

000000XXXX

001DCBXXXX

WAIT FOR MORE THAN 39US

RSRWDB7DB6DB5DB4DB3DB2DB1DB0

000000XXXX

000001XXXX

WAIT FOR MORE THAN 1.53MS

ENTRY MODE SET

RSRWDB7DB6DB5DB4DB3DB2DB1DB0

000000XXXX

0001I/DSHXXXX

INITIALIZATION END

Condition : f0sc=270khz

N01-LINE MODE

12-LINE MODE

F0DISPLAY OFF

1DISPLAY ON

D0DISPLAY OFF

1DISPLAY ON

C0CURSOR OFF

1CURSOR ON

B0BLINK OFF

1BLINK ON

I/D0DECREMENT MODE

1INCREMENT MODE

SH0ENTTIRE SHIFT OFF

1ENTIRE SHIFT ON

ASK Tx and RxHere we are using amplitude shift keying modulation type RF transmitter and Receiver, and the specification of each are as bellow. Transmitter:

* Frequency 433 M Hz

* Bandwidth +/- 200 k hz

* current 12 m amp

Receiver:

* Frequency 433 M Hz

* Bandwidth +/- 200 k hz

* current 30 m amp

Modulation type is ASK

INTERFACING KEYBOARD:

A matrix keyboard is a commonly used input device when more than eight keys are necessary, rather than a row of keys as illustrated. A matrix keyboard reduces the number of connections, thus

The number of interfacing devices required. For example, a keyboard

With 16 keys, arranged in a 4*4 matrix. Requires eight lines from the

Microcontroller to make all the connections instead of 16 lines if the

Keys are connected in a linear format. When a key is pressed, it shorts one row and column; otherwise, the row and the column do not

Have any connection. The interfacing of a matrix keyboard requires

Two ports; one output port and the input port. Rows are connected to

The output port, and the columns are connected to the input port. They are capable of interfacing a matrix keyboard as large as 64 keys,

Eight columns and eight rows.

In our project we are using 4*3 matrix keyboard of 12 keys. In which columns are connected to port 2 [P2] and rows are

Connected to port 0 [P0].

KEY SENSING LOGIC:

Initially all the column lines will be in high state and each rows are grounded by making the row port lines low one by

One. If we are in say first row it will check whether any key is pressed

By reading the column port. If any one of the first row is

Pressed then the particular column will get low level if in the

First row then the column number which gets the low signal will be

The key number. For example if we start the column number from zero

Then the first key identified as number zero. If the none of the key is

Pressed in row 1 then controller will ground the next row in this row

If any key is pressed it will identify the column number and adds number 4 once to get exact to get exact key number if it is in the row 3 it add

Number 4 two times to the column number to get the correct key.

INTERFACING KEYBOARD:

Relay Driver Circuit

SOFTWARE

FLOW CHART

Transmitter

Receiver

No

Yes

PROGRAM

EMBED PBrush

Start

Search Item

EMBED PBrush

EMBED PBrush

BUZZER

MICRO

CONTROLLER

89C51

ASK Tx

Relay,s And Driver

ASK Rx

MICRO

CONTROLLER

89C51

LCD 16*2

INPUT KEY BOARD 4*4 MATRIX

ON Buzzer

Is ID Matched

Receive Message

Start

Tx ID of item

SEPROM