Hello everyone, I hope you all are doing great. In today's tutorial, we will have a look at How to use Virtual Terminal in Proteus ISIS. It's our 5th tutorial in Proteus Series. I will first explain what is virtual terminal and then we will have a look at its uses and performance in Proteus ISIS.
Virtual Terminal is an important tool available in Proteus and it comes quite in handy while working on serial modules i.e. GSM, GPS, XBee etc. So, let's get started with Virtual Terminal in Proteus.
What is Virtual Terminal ?
Virtual Terminal is a tool in Proteus, which is used to view data coming from Serial Port (DB9) and also used to send the data to Serial Port. In windows XP, there's a built in tool named Hyper Terminal, which is also used for the same purpose but in windows 7 there's no such tool, so for windows 7 users this virtual terminal is quite a great comfort. If you guys don't know about serial port then I would suggest you to read this tutorial to get better idea of serial port:
I have posted many tutorials on my blog in which I have communicated over Serial port using different software. For example, you can check this Serial communication in MATLAB and can also have a look at Serial Communication in Visual Studio 2010. As serial communication is too common, so almost every microcontroller supports Serial communication. Arduino UNO has builtin single serial port at its pins 0 and 1, while Arduino Mega 2560 has built in four Serial ports in it. Similarly, PIC Microcontroller also supports Serial port and it is also available in 8051 Microcontroller.
Uses of Virtual Terminal
Virtual Terminal in Proteus, as I explained above, is used to send or receive data to or from a serial port. Serial port is a 9 pin port which is mostly find on the computers and is used in Embedded System Projects for data communication. Normally in student projects, data is sent from hardware to computer via serial port and then user design some application on their computer to view that data in some represent-able form.
Now, in projects there are some testing steps which are quite helpful, if we use them properly, and these testing steps require some tools in order to test the process. Like, suppose some student have designed the hardware to send the data to the computer and have also design its application to receive it and now when he tests it he didn't receive any data. At that point student got tensed and don't know where's the error so at that point there's may be some error in the hardware or may be in the software.
Now, in order to be sure he need to test both of them separately and here is the point where virtual terminal is used. First connect your hardware with the computer and then run the hardware and check whether you are receiving data on the virtual terminal or not. If you are receiving it, means your hardware is okay and the problem is in software side and if you are not means your hardware is not so good.
Whenever I start working on some projects, I always make sure that I am going in right direction like if I have to made this project then after completing my hardware, I will first check it via this virtual terminal and once I got sure that my hardware is okay then I will move to the software part. If you are gonna design the hardware then I think you must check Serial communication with 8051 Microcontroller, which is also designed in Proteus ISIS software and the data is displayed using the same virtual terminal.
There are also many other applications of this terminal like suppose you wanna design some circuit in Proteus which involves serial port then you can add this terminal on your circuit and can test it before going to the hardware, which we will shortly see below. So, now let's get started with Virtual Terminal in Proteus.
How to Use Virtual Terminal in Proteus ISIS?
First of all open the Proteus ISIS and click on the P button to search for the components, as we seen in previous tutorials.
Now in the search box type "COMPIM" , when you search this a result will show up as shown in the below figure:
After Selecting this, click OK to add this component in the database.
COMPIM is the serial port in Proteus and using its properties we can assign any COM pin of our computer to it and it will behave like that pin. We will change the properties shortly.
Now, click on the Virtual Instrument Mode and then on the Virtual Terminal as shown in the below figure and add it in the Proteus workspace.
Now join the TXD pin of COMPIM with the TXD pin of Virtual Terminal and RXD with RXD as shown in the figure below:
Now, double click on the COMPIM to open the Properties menu and set the properties as shown below:
I have selected COM1 and my baud rate is 9600, you can set it whatever you want like if you are using the COM3 then set the port to COM3 and baud rate of your own choice.
Similarly open the properties of the virtual terminal and make sure that the baud rate is same in both the cases.
Now connect your hardware with the computer and play the simulation. Again make sure that the port which you have selected for the COMPIM is same port with which you have attached your hardware.
After you play the simulation a black window will open up which will show the data coming from your hardware to the COM1 pin as shown below:
This black box is actually the Virtual Terminal which is showing data coming from my hardware.
If you play the simulation and this Virtual Terminal doesn't pop up then right click on the Virtual Terminal Component and then click on Virtual Terminal which will be at the end in the options and this black window will open up.
I think you guys have got much of the idea of this Virtual Terminal in Proteus ISIS. If you have any problem anywhere, ask in comments and also subscribe to our newsletter via email to get these amazing tutorials right into your mailbox. In the next tutorial, I have explained How to use Oscilloscope in Proteus ISIS. Thanks, take care.
syedzainnasir
I am Syed Zain Nasir, the founder of The Engineering Projects (TEP). I am a
programmer since 2009 before that I just search things, make small projects and now I am sharing my
knowledge through this platform. I also work as a freelancer and did many projects related to
programming and electrical circuitry. My Google Profile+Follow
Get Connected
Comments on ‘’ How To Use Virtual Terminal in Proteus ISIS ‘’ ( 23 )
0
Says:
i got satisfying answer for disappering vitual terminal after several simulations. As a simualtion is running and virtual terminal fails to pop up, click on debug and enable it permanently
Reply
100
1
aditya1
Says:
Hello sir,
I want to send the 8 bit data from any port of 89C51 to PC.
Please help me with the code and circuit diagram.
Reply
100
2
mohammadfaraz
Says:
I've seen a video on youtube, there COMPIM and arduino were interfacing with visual basic. I've designed a PIR circuit in VB and want to interface PIR+Arduino simulation in proteus. Is it possible? kindly help me out.
Reply
100
3
august
Says:
Thank you guys ,this site become very helpfully to me and my friends.................!
Reply
100
4
niki
Says:
If i want to make communication between my bluetooth app and virtual terminal ,how can i do this please explain
Reply
100
5
syedzainnasir1
Says:
Add me n Skype and we will discuss it in detail. Its not easy to receive data from APP to virtual terminal. My Skype id is theenggprojects.
Thanks.
Reply
100
6
sayres1
Says:
Hi dude.
I play the simulation and this Virtual Terminal doesn’t pop up and I do right click on virtual terminal component but any of options are not changeable. what can I do?
I'm new in protues.
plz explain clearly.tnx.
Reply
100
7
sayres1
Says:
I'm using peroteus 8.3 but I 've solved this problem .
If this problem happened to someone you can solve that like this:
in debug menu you mush select Digital oscilloscope.
Reply
100
8
veeru
Says:
hello sir ....
Reply
100
9
dicksonlucian
Says:
After setting up the devices for simulation my virtual terminal doesnt display the data from the gps module and even after right clicking it i cant find a place to enable displaying of the data ...i need a hand on that
Reply
100
10
subrat
Says:
hiiii.... i have used protesus 8..But if I make right click on virtual terminal then there is no option for virtual terminal at the end of list
Reply
100
11
kausaralmas
Says:
hiii.i am doing a final year project. in that i have to interface a bluetooth module hk4u with pic16f872. so for that i need a code n proteus simulation diagram .. in proteus i cant find bluetooth module so plz anyone can tell me n provide me code also...
Reply
100
12
syedzainnasir1
Says:
You can't use this module in Proteus because its library is not given. As the code is concerned, we can provide you the complete code for this project.
Reply
100
13
vaibhav
Says:
Hi.
I m having both versions of proteus 8 as well as 7. And I want transmit data wirelessly . But I didn't fine wireless modules in any of this version .
Can anybody plz help me with it ..
I wanted what version of have wireless module like KST-TX01.
Reply
100
14
muhammadatiq
Says:
I am using usb to RS232 converter and in device manager its showing port COM9. How can i select COM9 in proteus? There's only Com1 to Com4 options
Reply
100
15
appumt
Says:
plse send me pic c program
Reply
100
16
basil1
Says:
can i use this process to connect a bluetooth device
Reply
100
17
syedzainnasir1
Says:
Hi,
Yes you can also use it for Bluetooth as bluetooth works on COM Port, check the COM port of your bluetooth in its Properties and give that COM Port in the Virtual terminal of Proteus.
Thanks.
Reply
100
18
navjotsingh
Says:
Hello Sir
please help me i want to receive and send data through GPS/GSM virtually using proteus.
Reply
100
19
tarik
Says:
hello,
thank you for your good tutorial, i want to test my code on proteus wethout any harware, then i want to connect mikroC to proteus with virtual serial port emulator but the UART Terminal open with error and i can't chose the COM port,thank you
Reply
100
20
Says:
PLEASE I HAVE A CODE FOR ATMEGA 32 I MADE THE CONNECTION SHOWN http://www.mediafire.com/?apl37ueg7363r9s AND I HAVE THIS CODE
/* * RocknRoll.c * * Created: 30/08/2013 09:21:43 م * Author: samsoma */ /******************************************************************************** Includes ********************************************************************************/ #include #include #include
/******************************************************************************** Macros and Defines ********************************************************************************/ #define F_CPU 9600//System clocks for perfect USART communications should be multiples of //1.8432MHz which when used will give a 0.00% error. #define BAUD 9600 #define MYUBRR ((F_CPU/16/BAUD)-1)
/******************************************************************************** Main ********************************************************************************/ int main( void ) { // configure PORTA as output DDRA = 0xFF; // setup PORTB data direction as an input DDRB = 0; // make sure it is high impedance and will not source PORTB = 0; // fire up the usart usart_init ( MYUBRR ); // dump some strings to the screen at power on usart_pstr("Ready to rock and roll!nr"); usart_pstr("Type in a character, and I will transpose it up by 1:nr"); // main loop while(true) { // if a key has been pressed, then process it if(usart_kbhit()) { usart_putchar(usart_getchar() + 1); }
// map the PINB inputs to the PORTA outputs PORTA = PINB;
// a little humor is always good, PB0 gets the user yelled at if(bit_is_clear(PINB,PB0)) { usart_pstr("OUCH! Stop poking me!nr"); } } }
/******************************************************************************** usart Related ********************************************************************************/ void usart_init( uint16_t ubrr) { // Set baud rate UBRRH = (uint8_t)(ubrr>>8); UBRRL = (uint8_t)ubrr; // Enable receiver and transmitter UCSRB = (1<<RXEN)|(1<<TXEN); // Set frame format: 8data, 1stop bit UCSRC = (1<<URSEL)|(3<<UCSZ0); } void usart_putchar(char data) { // Wait for empty transmit buffer while ( !(UCSRA & (_BV(UDRE))) ); // Start transmission UDR = data; } char usart_getchar(void) { // Wait for incoming data while ( !(UCSRA & (_BV(RXC))) ); // Return the data return UDR; } unsigned char usart_kbhit(void) { //return nonzero if char waiting polled version unsigned char b; b=0; if(UCSRA & (1<<RXC)) b=1; return b; } void usart_pstr(char *s) { // loop through entire string while (*s) { usart_putchar(*s); s++; } }
IT DOESN'T WORK !!
Reply
100
21
Says:
Please can you tell how to add ADUC 832BS and XILINX CPLD XC9572XL to Proteus ISIS library?
Reply
100
22
Says:
Hi I will explain it in the coming tutorials ... you have to wait a little .... I am quite busy these days that's why couldn't write it up ....
Reply
As a simualtion is running and virtual terminal fails to pop up, click on debug and enable it permanently
Reply
/*
* RocknRoll.c
*
* Created: 30/08/2013 09:21:43 م
* Author: samsoma
*/
/********************************************************************************
Includes
********************************************************************************/
#include
#include
#include
/********************************************************************************
Macros and Defines
********************************************************************************/
#define F_CPU 9600//System clocks for perfect USART communications should be multiples of
//1.8432MHz which when used will give a 0.00% error.
#define BAUD 9600
#define MYUBRR ((F_CPU/16/BAUD)-1)
/********************************************************************************
Function Prototypes
********************************************************************************/
void usart_init(uint16_t ubrr);
char usart_getchar( void );
void usart_putchar( char data );
void usart_pstr (char *s);
unsigned char usart_kbhit(void);
/********************************************************************************
Main
********************************************************************************/
int main( void ) {
// configure PORTA as output
DDRA = 0xFF;
// setup PORTB data direction as an input
DDRB = 0;
// make sure it is high impedance and will not source
PORTB = 0;
// fire up the usart
usart_init ( MYUBRR );
// dump some strings to the screen at power on
usart_pstr("Ready to rock and roll!nr");
usart_pstr("Type in a character, and I will transpose it up by 1:nr");
// main loop
while(true) {
// if a key has been pressed, then process it
if(usart_kbhit()) {
usart_putchar(usart_getchar() + 1);
}
// map the PINB inputs to the PORTA outputs
PORTA = PINB;
// a little humor is always good, PB0 gets the user yelled at
if(bit_is_clear(PINB,PB0)) {
usart_pstr("OUCH! Stop poking me!nr");
}
}
}
/********************************************************************************
usart Related
********************************************************************************/
void usart_init( uint16_t ubrr) {
// Set baud rate
UBRRH = (uint8_t)(ubrr>>8);
UBRRL = (uint8_t)ubrr;
// Enable receiver and transmitter
UCSRB = (1<<RXEN)|(1<<TXEN);
// Set frame format: 8data, 1stop bit
UCSRC = (1<<URSEL)|(3<<UCSZ0);
}
void usart_putchar(char data) {
// Wait for empty transmit buffer
while ( !(UCSRA & (_BV(UDRE))) );
// Start transmission
UDR = data;
}
char usart_getchar(void) {
// Wait for incoming data
while ( !(UCSRA & (_BV(RXC))) );
// Return the data
return UDR;
}
unsigned char usart_kbhit(void) {
//return nonzero if char waiting polled version
unsigned char b;
b=0;
if(UCSRA & (1<<RXC)) b=1;
return b;
}
void usart_pstr(char *s) {
// loop through entire string
while (*s) {
usart_putchar(*s);
s++;
}
}
IT DOESN'T WORK !! Reply