In: Electrical Engineering
Design a 8086 microprocessor base system that manage 1Mbyte of memory and can handle serial and parallel communication, a keyboard, a screen, a printer and a USB connection that handle high capacity secondary memory. Show all the connections needed and use all the necessary family chips needed to handle the I/O Systems. Show the memory map needed and the necessary I/O drivers. Use an interrupt manage chip to handle the I/O devices to be connected.
Device communication is done in two ways:
parallel and
serial.
In the parallel mode, information exchange is quick and uses more number of lines. This mode is useful for short range information exchange.
Be that as it may, Serial correspondence utilizes just a single or two information lines to exchange information and is by and large utilized for long separation correspondence. In serial correspondence the information is sent as one piece at any given moment.
My saying is to portrays the interfacing of miniaturized scale controller (Atmega32) with a PC by means of serial port, RS232. In any case, at display my PC system(DDR3 upheld) does not have any serial port(DB9). Along these lines, I am endeavoring to impart MCU through a USB to UART Serial Converter breakout board. There are numerous USB to UART Serial Converters are accessible, for example, cp2102/4, pl2303, FT232RL, CH340G and so forth. I have picked pL2303 bcz. of accessibility and cost.
Stage 1: PL2303 (USB TO UART TTL CONVERTER) DETAILS
The PL-2303 works as a scaffold between one USB port and one standard RS232 Serial port. The two vast on-chip cradles oblige information spill out of two distinct transports. The USB mass write information is embraced for most extreme information exchange. Programmed handshake is upheld at the Serial port. With these, a considerably higher baud rate can be accomplished contrasted with the heritage UART controller.
This gadget is additionally consistent with USB control administration and remote wakeup plot. Just least power is devoured from the host amid Suspend. By coordinating all the capacity in a SSOP-28 bundle, this chip is appropriate for link inserting. Clients just guide the link into PC or center's USB port, and after that they can associate with any RS-232 gadgets.
PL2303 - FATURES
Completely consistent with USB Specification v1.1 and USB CDC v1.1
? Backings RS232 Serial interface
? Backings programmed handshake mode
? Backings Remote wake-up and control administration
? 256-bytes cushion each for upstream and downstream information stream
? Backings default ROM or outside EEPROM for gadget arrangement
? On-chip USB handset
? On-chip precious stone oscillator running at 12MHz
? Backings Windows 98/SE, ME, 2000, XP, Windows CE3.0, CE .NET, Linux, and Mac OS
? Intended for Windows XP/2000 Certified Logo Drivers
? USB-IF Logo Compliant with TID 10240590
? 28-Pin SSOP bundle
Stage 2: Serial Communication Using RS-232
Information Communication:
Correspondence between/among frameworks physically or remotely.
Sorts of Data Communication
Point-to-point Communication (RS-232)
Transport based Communication (I^2C,SPI,PCI,PCI-EXPRESS, USB, SATA)
Speed Rates
RS-232 < I^2C < SPI < PCI < PCI-EXPRESS < USB < SATA
PC serial port:
Serial correspondence implies exchanging a solitary piece at any given moment. We can interface a mouse, a modem, a printer, a plotter, another PC, dongles, and so on. Be that as it may, its utilization (both programming and equipment) is a mystery to clients. In any case, it isn't hard to see how to interface gadgets to it and how to program it.
RS-232 is a standard correspondence convention for connecting PC and its fringe gadgets to permit serial information trade. In straightforward terms RS232 characterizes the voltage for the way utilized for information trade between the gadgets. It determines regular voltage and flag level, basic stick wire setup and least, measure of control signals. As said over this standard was planned with determination for electromagnetically teletypewriter and modem framework
Serial Data Transmission Types:
Simplex mode: Sender - - >Receiver(T) one-path (as, sensor information)
Half Duplex mode: Sender<=============>Receiver(T/R), once at once (as, radio-framework)
Full Duplex mode: Sender<=============>Receiver (T&R), two path all the while (as, phone)
Issue:
IT didn't characterize components, for example, -
>>character encoding,
>>framing of characters,
>>error discovery conventions and so on
that are basic highlights when information exchange happens between a PC and a printer. Without which it couldn't be received to exchange information between a PC and a printer.
Arrangement:
A solitary incorporated circuit called as UART known as all inclusive nonconcurrent recipient/transmitter is utilized as a part of conjunction with RS232.
PC is equipped for serial transmission at up to 115,200 bps (step size of 8.68 microseconds!). Ordinary rates are 300 bps, 1200 bps, 2400 bps and 9600 bps, up to 115,200 bps
The Physical Transmission:
The RS232C port of PC utilizes voltages:
>>MARK/LOW is motioned by - 3 V to - 5 V and speaks to a coherent one(1).
>>SPACE/HIGH is motioned by +3 V to +5V and speaks to a coherent zero(0).
>>Three lines (RX, TX and GND) are in any event required..
RxD (Received information):
The RxD stick is the Data Receive stick. This is where the collector gets information.
TxD (Transmitted information):
The TxD stick is the Data Transmit stick. This is the stick through which information is transmitted to the beneficiary.
Handshaking
Computerized procedure of setting correspondence parameters
Parameters are:-
exchange rate
equality
indeed
odd
hinders
Ex-Modem, Printers
Associates heterogeneous frameworks over a correspondence channel.
Stage 3: Connection and Coding
Projects:
Simply associate as indicated by the graph.
Devices required:
WinAvr 2008
Cygwin
- - -
Same code can keep running on avrstudio moreover.
lcd_io.h
#ifndef LCD_IO_H<br>#define LCD_IO_H</p><p>#include
#include </p><p>/*######################################################################################################*/
/* CONFIGURATION BLOCK STARTS HERE. Change these definitions to adjust setting */
/*######################################################################################################*</p><p>***********************************************************************************************/
/* GLOBAL (settings depicted here are applyied all over the place) */
/***********************************************************************************************/
/*/#ifndef F_CPU
#define F_CPU 8000000/* CPU CLOCK FREQUENCY */
#endif</p><p>/* 6=6 PIN I/O, 2=2 PIN I/O, 3=I2C, 7=multi lcd */
#define LCD_IO_MODE 6</p><p>/* 1 = Auto line nourish, 0 = no Auto line encourage */
#define LCD_AUTO_LINE_FEED 0</p><p>/* THE TYPICAL TIME THE LCD NEEDS TO COMPLETE A COMMAND */
#define LCD_DELAY_TIME_US 100</p><p>/* THE E PULSE WIDTH IN MICROSECONDS (Timing is accurate)*/
#define LCD_E_PULSE_WIDTH_US 1</p><p>/* The decimal point accentuation check scorch */
#define LCD_DECIMAL_POINT '.'</p><p>/* WAYS TO REDUCE CODE SIZE BY NOT COMPILING UNWANTED FUNCTIONS OR CODE
* PORTIONS */
/* 1=function accessible, 0=not accessible. */
#define LCD_PUT_I_NEEDED 1
#define LCD_PUTS_NEEDED 1
#define LCD_PUTS_P_NEEDED 1
#define LCD_PUTS_E_NEEDED 1
#define LCD_PUTC_CGRAM_NEEDED 1
#define LCD_CLRLINE_NEEDED 1
#define LCD_GETXY_NEEDED 0
/* 1=limit, mistake and control scorches checking handicapped. Likewise auto line nourish off.
* For specialists as it were! */
#define LCD_SAVE_MORE_CODE_SPACE 0/*********************************************************************/
/* START OF SELECTED MODE CONFIGURATION BLOCK */
/************************************************************************************************************************************************/
/* START OF MODE 6 CONFIGURATION BLOCK */
#if LCD_IO_MODE == 6
/***************************************************************************/
/*
Design OF BELOW LINES ONLY NECESSARY IF YOU SELECTED MODE 6 IN GLOBAL
SETTINGS If you intend to utilize only one port for all pins then simply alter
"LCD_PORT" else you should determine the port of every lcd flag. the
port(s) must have the capacity to work as yield. It can be any mix! PUT
YOUR LCD PORT LETTER HERE USING CAPITAL LETTER (A,B,C,D...etc)
*/
#define LCD_CHARS_PER_LINE 16/* obvious roasts per lcd line */
#define LCD_LINES 2/* obvious lines ** 1=the DDR's utilized are spared and reestablished */
#define LCD_MULTIPLEX_ENABLE 0
/* 0=use postponement, 1=read occupied banner and information (7 pins required) */
#define LCD_READ_REQUIRED 0/*
This empowers the reinforcement capacities that reinforcement and reestablish the lcd show.
LCD_LINES X LCD_CHARS_PER_LINE bytes are required (That implies 80 bytes for a 4
x 20 lcd show). 0=lcd screen reinforcement area is eeprom, 1=lcd screen
reinforcement area is smash.
In the event that you have to reinforcement less, utilize the lcd_getc work. When utilizing the
lcd_getc() work the Address Counter (AC) is auto augmented or
decremented as indicated by the ENTRY MODE chose amid introduction, just
like the lcd_putc() work works, so while completing a successive read, there
is no compelling reason to reposition the cursor each time a read is performed. The
reinforcement and reestablish settings are substantial just if LCD_READ_REQUIRED == 1
*/
#define LCD_BACKUP_REQUIRED 0
#define LCD_BACKUP_LOCATION 0
#define LCD_PORT C
#define LCD_DATA4_PORT D/* port for information 0 stick */
#define LCD_D4_PIN 7/* AVR port stick number */
#define LCD_DATA5_PORT D/* port for information 1 stick */
#define LCD_D5_PIN 6/* AVR port stick number */
#define LCD_DATA6_PORT D/* port for information 2 stick */
#define LCD_D6_PIN 5/* AVR port stick number */
#define LCD_DATA7_PORT B/* port for information 3 stick */
#define LCD_D7_PIN 3/* AVR port stick number */
#define LCD_RS_SIGNAL_PORT B/* port for RS line */
#define LCD_RS_PIN 1/* AVR port stick number */
#define LCD_E_SIGNAL_PORT B/* port for Enable line */
#define LCD_E_PIN 2/* AVR port stick number */
/* YOU NEED TO EDIT "LCD_RW_SIGNAL_PORT" AND "LCD_RW_PIN" ONLY IF * "LCD_READ_REQUIRED == 1" */
#if LCD_READ_REQUIRED == 0
#define LCD_RW_SIGNAL_PORT LCD_PORT/* port for R/W line */
#define LCD_RW_PIN 6/* AVR port stick number */
#endif
#endif/* #if LCD_IO_MODE == 6 */
/**************************************************************************/
/* END OF 6 PIN CONFIGURATION BLOCK */
/***************************************************************************########################################################################*/
/* CONFIGURATION BLOCK ENDS HERE. */
/*########################################################################** you shouldn't have to transform anything beneath this line ***************************************************************************/
/* HD44780 DDRAM PARAMETERS */
/**************************************************************************/#define LCD_LINE_LENGTH 0x40/* inward line length */
#define LCD_START_LINE1 0x00/* DDRAM address of first roast of
line 1 */
#define LCD_START_LINE2 0x40/* DDRAM address of first scorch of
line 2 */
#define LCD_START_LINE3 0x14/* DDRAM address of first scorch of
line 3 */
#define LCD_START_LINE4 0x54/* DDRAM address of first scorch of
line 4 **************************************************************/
/* INSTRUCTION REGISTER BIT POSITIONS AND COMBINATIONS */
/*************************************************************/
#define LCD_CLR 0/* DB0: clear show */
#define LCD_HOME 1/* DB1: come back to home position */
#define LCD_ENTRY_MODE 2/* DB2: set section mode */
#define LCD_ENTRY_INC 1/* DB1: 1=increment, 0=decrement */
#define LCD_ENTRY_SHIFT 0/* DB2: 1=display move on */
#define LCD_ON 3/* DB3: turn lcd/cursor on */
#define LCD_ON_DISPLAY 2/* DB2: turn show on */
#define LCD_ON_CURSOR 1/* DB1: turn cursor on */
#define LCD_ON_BLINK 0/* DB0: squinting cursor ? */
#define LCD_MOVE 4/* DB4: move cursor/show */
#define LCD_MOVE_DISP 3/* DB3: move show (0-> cursor) ? */
#define LCD_MOVE_RIGHT 2/* DB2: move right (0-> left) ? */
#define LCD_FUNCTION 5/* DB5: work set */
#define LCD_FUNCTION_8BIT 4/* DB4: set 8BIT mode (0->4BIT mode)
*/
#define LCD_FUNCTION_2LINES 3/* DB3: two lines (0->one line) */
#define LCD_FUNCTION_10DOTS 2/* DB2: 5x10 textual style (0->5x7 textual style) */#define LCD_CGRAM 6/* DB6: set CG RAM address */
#define LCD_DDRAM 7/* DB7: set DD RAM address */</p><p>#define LCD_BUSY 7/* DB7: LCD is occupied ** work set: set interface information length and number of show lines */
#define LCD_FUNCTION_4BIT_1LINE 0x20/* 4-bit interface, single line, 5x7
dabs */
#define LCD_FUNCTION_4BIT_2LINES 0x28/* 4-bit interface, double line, 5x7
dabs */
#define LCD_FUNCTION_8BIT_1LINE 0x30/* 8-bit interface, single line, 5x7
dabs */
#define LCD_FUNCTION_8BIT_2LINES 0x38/* 8-bit interface, double line, 5x7
dabs *</p><p>* Lcd default mode utilized as a part of this driver */
#define LCD_MODE_DEFAULT ((1</********************************************************************************************************/
/* LCD COMMANDS (CAN BE USED WITH "lcd_command(cmd);") */
/********************************************************************************************************/
/* set passage mode: show move on/off, dec/inc cursor move heading */
#define LCD_ENTRY_DEC 0x04/* show move off, dec cursor move dir */
#define LCD_ENTRY_DEC_SHIFT 0x05/* show move on, dec cursor move dir */
#define LCD_ENTRY_INC_ 0x06/* show move off, inc cursor move dir */
#define LCD_ENTRY_INC_SHIFT 0x07/* show move on, inc cursor move dir ** show on/off, cursor on/off, flickering burn at cursor position */
#define LCD_DISP_OFF 0x08/* show off */
#define LCD_DISP_ON 0x0C/* show on, cursor off */
#define LCD_DISP_ON_BLINK 0x0D/* show on, cursor off, flicker burn */
#define LCD_DISP_ON_CURSOR 0x0E/* show on, cursor on */
#define LCD_DISP_ON_CURSOR_BLINK 0x0F/* show on, cursor on, flicker burn */
#define LCD_CLEAR_SCREEN (1<</* move cursor/move show */
#define LCD_MOVE_CURSOR_LEFT 0x10/* move cursor left (decrement) */
#define LCD_MOVE_CURSOR_RIGHT 0x14/* move cursor right (increase) */
#define LCD_MOVE_DISP_LEFT 0x18/* move show left */
#define LCD_MOVE_DISP_RIGHT 0x1C/* move d