7 segment rolling display using PC

 It is very interesting and convenient to be able to control everything while sitting at your PC terminal. Here, a simple hardware circuit and software is used to interface a 7-segment based rolling display. The printer port of a PC provides a set of points with some acting as input lines and some others as output lines. Some lines are open collector type which can be used as input lines. The circuit given here can be used for interfacing with any type of PC�s printer port. The 25-pin parallel port connector at the back of a PC is a combination of three ports. The address varies from 378H-37AH. The 7 lines of port 378H (pins 2 through 8) are used in this circuit to output the code for segment display through IC1. The remaining one line of port 378H (pin 9) and four lines of port 37AH (pins 1, 14, 16, 17) are used to enable the display digits (one a time) through IC2. The bits D0, D1 and D3 of port 37AH connected to pins 1, 14 and 17 of �D� connector are inverted by the computer before application to the pins while data bit D2 is not inverted. Therefore to get a logic high at any of former three pins, we must send logic 0 output to the corresponding pin of port 37AH. Another important concept illustrated by the project is the time division multiplexing. Note that all the five 7-segment displays share a common data bus. The PC places the 7-segment code for the first digit/character on the data bus and enables only the first 7-segment display. After delay of a few milliseconds, the 7-segment code for the digit/character is replaced by that of the next charter/digit, but this time only second display digit is enabled. After the display of all characters/digits in this way, the cycle repeats itself over and over again. Because of this repetition at a fairly high rate, there is an illusion that all the digits/characters are continuously being displayed. DISP1 is to be physically placed as the least significant digit. IC1 (74LS244) is an octal buffer which is primarily used to increase the driving capability. It has two groups of four buffers with non-inverted tri-state outputs. The buffer is controlled by two active low enable lines. IC2 (75492) can drive a maximum of six 7-segment displays. (For driving up to seven common-cathode displays one may use ULN2003 described elsewhere in this section.) The program for rolling display is given in the listing DISP.C above. Whatever the message/characters to be displayed (here five characters have been displayed), these are separated and stored in an array. Then these are decoded. Decoding software is very simple. Just replace the desired character with the binary equivalent of the display code. The display code is a byte that has the appropriate bits turned on. For example, to display character �L�, the segments to be turned on are f, e and d. This is equivalent to 111000 binary or 38 hex. Please note that only limited characters can be formed using 7-segment display. Characters such as M, N and K cannot be formed properly.


PC based Frequency Meter

Here is a simple technique for measuring frequencies over quite a wide frequency range and with acceptable accuracy limits using a PC. It follows the basic technique of measuring low frequencies, i.e. at low frequency, period is measured for a complete wave and frequency is calculated from the measured time-period. Cascaded binary counters are used for converting the high-frequency signals into low-frequency signals. The parallel port of a computer is used for data input from binary counters. This data is used for measuring time and calculating the frequency of the signal. The block diagram shows the basic connections of the counters and parallel port pin numbers on 25-pin �D� connector of a PC (control register 379 Hex is used for input). External hardware is used only for converting the higher frequency signals into low frequency signals. Thus, the major role in frequency-measurement is played by the software. The PC generates a time-interrupt at a frequency of 18.21 Hz, i.e. after every 54.92 millisecond. Software uses this time-interrupt as a time-reference. The control register of the PC�s parallel port is read and the data is stored continuously in an array for approximately 54.9 ms using a loop. This stored data is then analysed bit-wise. Initially, the higher-order bit (MSB or the seventh-bit) of every array element is scanned for the presence of a complete square wave. If it is found, its time period is measured and if not then the second-highest order bit (sixth bit) is scanned. This operation is performed till the third bit and if no full square wave is still found, an error message is generated which indicates that either there is an error in reading or the frequency signal is lower than 19 Hz. Lower three bits of the control register are not used. When a wave is found, along with its time-period and frequency components, its measurement precision in percentage is also calculated and displayed. Number of data taken in 54.9 ms is also displayed. As stated above, the lower starting range is about 19 Hz. Data is read for approximately 54.9 ms. Thus, the lowest possible frequency that can be measured is 1/.0549 Hz. Lower range depends only on the sampling time and is practically fixed at 19 Hz (18.2 Hz, to be precise). Upper range depends on factors such as value of the MOD counter used and the operating frequency range of the counter IC. If MOD-N counter is used (where N is an integer), upper limit (UL) of frequency is given by UL=19xN5 Hz. Thus for MOD 16 counters UL@20 MHz, and for MOD 10 counters UL@1.9 MHz. Care should be taken to ensure that this upper limit is within the operating frequency range of counter IC used. Precision of measurement is a machine-dependent parameter. High-speed machines will have better precision compared to others. Basically, precision depends directly upon the number of data read in a standard time. Precision of measurement varies inversely as the value of MOD counter used. Precision is high when MOD 10 counters are used in place of MOD 16 counters, but this will restrict the upper limit of frequency measurement and vice-versa.


Simple Analog to Digital Converter

Normally analogue-to-digital con-verter (ADC) needs interfacing through a microprocessor to convert analogue data into digital format. This requires hardware and necessary software, resulting in increased complexity and hence the total cost.
The circuit of A-to-D converter shown here is configured around ADC 0808, avoiding the use of a microprocessor. The ADC 0808 is an 8-bit A-to-D converter, having data lines D0-D7. It works on the principle of successive approximation. It has a total of eight analogue input channels, out of which any one can be selected using address lines A, B and C. Here, in this case, input channel IN0 is selected by grounding A, B and C address lines.
Usually the control signals EOC (end of conversion), SC (start conversion), ALE (address latch enable) and OE (output enable) are interfaced by means of a microprocessor. However, the circuit shown here is built to operate in its continuous mode without using any microprocessor. Therefore the input control signals ALE and OE, being active-high, are tied to Vcc (+5 volts). The input control signal SC, being active-low, initiates start of conversion at falling edge of the pulse, whereas the output signal EOC becomes high after completion of digitisation. This EOC output is coupled to SC input, where falling edge of EOC output acts as SC input to direct the ADC to start the conversion.
As the conversion starts, EOC signal goes high. At next clock pulse EOC output again goes low, and hence SC is enabled to start the next conversion. Thus, it provides continuous 8-bit digital output corresponding to instantaneous value of analogue input. The maximum level of analogue input voltage should be appropriately scaled down below positive reference (+5V) level.
The ADC 0808 IC requires clock signal of typically 550 kHz, which can be easily derived from an astable multivibrator constructed using 7404 inverter gates. In order to visualise the digital output, the row of eight LEDs (LED1 through LED8) have been used, wherein each LED is connected to respective data lines D0 through D7. Since ADC works in the continuous mode, it displays digital output as soon as analogue input is applied. The decimal equivalent digital output value D for a given analogue input voltage Vin can be calculated from the relationship

Control electrical appliances using PC

Here is a circuit for using the printer port of a PC, for control application using software and some interface hardware. The interface circuit along with the given software can be used with the printer port of any PC for controlling up to eight equipment .
The interface circuit shown in the figure is drawn for only one device, being controlled by D0 bit at pin 2 of the 25-pin parallel port. Identical circuits for the remaining data bits D1 through D7 (available at pins 3 through 9) have to be similarly wired. The use of opto-coupler ensures complete isolation of the PC from the relay driver circuitry.
Lots of ways to control the hardware can be implemented using software. In C/C++  one can use the outportb(portno,value) function where portno is the parallel port address (usually 378hex for LPT1) and 'value' is the data that is to be sent to the port. For a value=0 all the outputs (D0-D7) are off. For value=1 D0 is ON, value=2 D1 is ON, value=4, D2 is ON and so on. eg. If value=29(decimal) =   00011101(binary)  ->D0,D2,D3,D4 are ON and the rest are OFF.                       

Code Software in C :


/*program to control devices using PC parallel port
The devices are controlled by pressing the keys 1-8
that corresponds to each of the 8 possible devices
*/

#include<dos.h>
#include<stdio.h>
#include<conio.h>
#define PORT 0x378 /* This is the parallel port address */

main()
{
char val=0,key=0;
char str1[]="ON ";
char str2[]="OFF";
char *str;
clrscr();
printf("Press the approriate number key to turn on/off devices:\n\n");
printf("Here Device1 is connected to D0 of parallel port and so on\n\n");
printf("Press \"x\" to quit\n\n");
gotoxy(1,8);
printf("Device1:OFF Device2:OFF Device3:OFF Device4:OFF\n");
printf("Device5:OFF Device6:OFF Device7:OFF Device8:OFF");

while(key!='x' && key!='X')
{
gotoxy(1,12);
printf("Value in hex sent to the port:");
key=getch();
switch(key){

case '1':

    gotoxy(9,8);
    val=(val&0x01)?(val&(~0x01)):val|0x01;
    str=(val&0x01)?str1:str2;
    printf("%s",str);
    outportb(PORT,val);
    gotoxy(1,13);
    printf("%x",val);
    break;

case '2':

    gotoxy(21,8);
    val=(val&0x02)?(val&(~0x02)):val|0x02;
    str=(val&0x02)?str1:str2;
    printf("%s",str);
    outportb(PORT,val);
    gotoxy(1,13);
    printf("%x",val);
    break;

case '3':

    gotoxy(33,8);
    val=(val&0x04)?(val&(~0x04)):val|0x04;
    str=(val&0x04)?str1:str2;
    printf("%s",str);
    outportb(PORT,val);
    gotoxy(1,13);
    printf("%x",val);
    break;

case '4':

    gotoxy(45,8);
    val=(val&0x08)?(val&(~0x08)):val|0x08;
    str=(val&0x08)?str1:str2;
    printf("%s",str);
    outportb(PORT,val);
    gotoxy(1,13);
    printf("%x",val);
    break;

case '5':

    gotoxy(9,9);
    val=(val&0x10)?(val&(~0x10)):val|0x10;
    str=(val&0x10)?str1:str2;
    printf("%s",str);
    outportb(PORT,val);
    gotoxy(1,13);
    printf("%x",val);
    break;

case '6':

    gotoxy(21,9);
    val=(val&0x20)?(val&(~0x20)):val|0x20;
    str=(val&0x20)?str1:str2;
    printf("%s",str);
    outportb(PORT,val);
    gotoxy(1,13);
    printf("%x",val);
    break;

case '7':

    gotoxy(33,9);
    val=(val&0x40)?(val&(~0x40)):val|0x40;
    str=(val&0x40)?str1:str2;
    printf("%s",str);
    outportb(PORT,val);
    gotoxy(1,13);
    printf("%x",val);
    break;

case '8':
    gotoxy(45,9);
    val=(val&0x80)?(val&(~0x80)):val|0x80;
    str=(val&0x80)?str1:str2;
    printf("%s",str);
    outportb(PORT,val);
    gotoxy(1,13);
    printf("%x",(unsigned char)val);
    break;

    }

}


}

Telephone Number Display



The given circuit, when connected in parallel to a telephone, dis- plays the number dialled from the telephone set using the DTMF mode. This circuit can also show the number dialled from the phone of the called party. This is particularly helpful for receiving any number over the phone lines. The DTMF signal 'generated by the phone on dialling a number' is decoded by DTMF decoder CM8870P1 (IC1), which converts the received DTMF signal into its equivalent BCD number that corresponds to the dialled number. This binary number is stored sequentially in 10 latches each time a number is dialled from the phone. The first number is stored in IC5A (1/2 of CD4508) while the second number is stored in IC5B and so on. The binary output from IC1 for digit '0' as decoded by IC1 is 10102 (=1010), and this cannot be displayed by the seven-segment decoder, IC10. Therefore the binary output of IC1 is passed through a logic-circuit which converts an input of '10102' into '00002' without affecting the inputs '1' through '9'. This is accomplished by gates N13 through N15 (IC11) and N1 (IC12). The storing of numbers in respective latches is done by IC2 (4017). The data valid output from pin 15 of IC1 is used to clock IC2. The ten outputs of IC2 are sequentially connected to the store and clear inputs of all the latches, except the last one, where the clear input is tied to ground. When an output pin of IC2 is high, the corresponding latch is cleared of previous data and kept ready for storing new data. Then, on clocking IC2, the same pin becomes low and the data present at the inputs of that latch at that instant gets stored and the next latch is cleared and kept ready. The similar input and output pins of all latches are connected together to form two separate input and output buses. There is only one 7-segment decoder/driver IC10 for all the ten displays. This not only reduces size and cost but reduces power requirement too. The output from a latch is available only when its disable pins (3 and 15) are brought low. This is done by IC3, IC12 and IC13. IC3 is clocked by an astable multivibrator IC4 (555). IC3 also drives the displays by switching corresponding transistors. When a latch is enabled, its corresponding display is turned on and the content of that latch, after decoding by IC10, gets displayed in the corresponding display. 

For instance, contents of IC5A are displayed on display "DIS1", that of IC5B on "DIS2" and so on. The system should be connected to the telephone lines via a DPDT switch (not shown) for manual switching, otherwise any circuit capable of sensing handset's off-hook condition and thereby switching relays, etc. can be used for automatic switching. The power-supply switch can also be replaced then. Though this circuit is capable of showing a maximum of ten digits, one can reduce the display digits as required. For doing this, connect the reset pin of IC2, say, for a 7-digit display, with S6 output at pin 5. The present circuit can be built on a veroboard and housed in a suitable box. The displays are common-cathode type. To make the system compact, small, 7-segment displays can be used but with some extra cost. Also, different colour displays can be used for the first three or four digits to separate the exchange code/STD code, etc. The circuit can be suitably adopted for calling-line display

Cordless phone backup



Normally the base of a cordless phone has an adaptor and the handset has Ni-Cd cells for its operation. The base unit becomes inoperative in case of power failure. In such conditions, it is better to provide a backup using Ni-Cd cells externally. Here is a simple circuit which can be used with cordless phone SANYO CLT-420 or similar sets.
The working is simple. When AC mains is present, Ni-Cd cells are charged through IC LM317L, which is wired as a current source. Also, diode D3 is reverse-biased, which keeps Ni-Cd cells isolated from positive rail. When AC mains goes off, the Ni-Cd cells provide supply to the cordless phone base unit through diode D3. A green LED is used to indicate the presence of AC mains.
Each Ni-Cd cell costs around Rs 34, and the cost of the backup unit, including the box and cells, would not exceed Rs 300. Hence the circuit is well worth the investment

Multipurpose Circuit for telephone



This add-on device for telephones can be connected in parallel to the telephone instrument.
The circuit provides audio-visual indication of on-hook, off-hook, and ringing modes. It can also be used to connect the telephone to a cid (caller identification device) through a relay and also to indicate tapping or misuse of telephone lines by sounding a buzzer.
 
In on-hook mode, 48V dc supply is maintained across the telephone lines. In this case, the bi-colour led glows in green, indicating the idle state of the telephone. The value of resistor r1 can be changed somewhat to adjust the led glow, without loading the telephone lines (by trial and error).

In on-hook mode of the hand-set, potentiometer vr1 is so adjusted that base of t1 (bc547) is forward biased, which, in turn, cuts off transistor t2 (bc108). While adjusting potmeter vr1, ensure that the led glows only in green and not in red.
When the hand-set is lifted, the voltage drops to around 12V dc. When this happens, the voltage across transistor t1's base-emitter junction falls below its conduction level to cut it off. As a result transistor pair t2-t3 starts oscillating and the piezo-buzzer starts beeping (with switch s1 in on position). At the same time, the bi-colour led glows in red.

In ringing mode, the bi-colour led flashes in green in synchronisation with the telephone ring.
A cid can be connected using a relay. The relay driver transistor can be connected via point a as shown in the circuit. To use the circuit for warning against misuse, switch s1 can be left in on position to activate the piezo-buzzer when anyone tries to tap the telephone line. (When the telephone line is tapped, it's like the off-hook mode of the telephone hand-set.)

Two 1.5V pencil cells can provide Vcc1 power supply, while a separate power supply for Vcc2 is recommended to avoid draining the battery. However, a single 6-volt supply source can be used in conjunction with a 3.3V zener diode to cater to both Vcc2 and Vcc1 supplies

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cheap international calls