This document describes the design and implementation of a microcontroller-based scientific calculator. Key features include its ability to perform 17 mathematical functions using 20 buttons on a 5x4 matrix keypad. The calculator can accept 4-digit integers and 2-digit decimals, and displays results with up to 8 total digits. The microcontroller scans the keypad continuously to detect button presses and perform the corresponding calculations. Software for the calculator was written in C and interfaces with an LCD display for input/output.
This document describes the design and implementation of a microcontroller-based scientific calculator. Key features include its ability to perform 17 mathematical functions using 20 buttons on a 5x4 matrix keypad. The calculator can accept 4-digit integers and 2-digit decimals, and displays results with up to 8 total digits. The microcontroller scans the keypad continuously to detect button presses and perform the corresponding calculations. Software for the calculator was written in C and interfaces with an LCD display for input/output.
This document describes the design and implementation of a microcontroller-based scientific calculator. Key features include its ability to perform 17 mathematical functions using 20 buttons on a 5x4 matrix keypad. The calculator can accept 4-digit integers and 2-digit decimals, and displays results with up to 8 total digits. The microcontroller scans the keypad continuously to detect button presses and perform the corresponding calculations. Software for the calculator was written in C and interfaces with an LCD display for input/output.
This document describes the design and implementation of a microcontroller-based scientific calculator. Key features include its ability to perform 17 mathematical functions using 20 buttons on a 5x4 matrix keypad. The calculator can accept 4-digit integers and 2-digit decimals, and displays results with up to 8 total digits. The microcontroller scans the keypad continuously to detect button presses and perform the corresponding calculations. Software for the calculator was written in C and interfaces with an LCD display for input/output.
Copyright:
Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online from Scribd
Download as pdf or txt
You are on page 1of 6
At a glance
Powered by AI
The key takeaways are that the article presents a microcontroller-based scientific calculator that can perform 17 mathematical functions using a 5x4 matrix keypad. A PIC18F4580 microcontroller is used at the heart of the calculator along with an LCD display.
The main features of the scientific calculator are that it can perform 17 mathematical functions, accepts 4 digits for the integer place and 2 digits for the decimal place, and has a maximum of 8 digits total for display but limits the decimal place to 4 digits.
The 5x4 matrix keypad is interfaced to the PIC18F4580 microcontroller through its port pins. The five rows are connected to five pins of Port B and the four columns are connected to four pins of Port A. Key debouncing technique is used to eliminate false key presses.
cONSTRUcTION
108 June 2011 electroni cs for you www. e f y ma g . c o m
BodhiBrata Mukhopadhyay Microcontroller-Based scientific calculator SUNL KUMAR log and ln functions. 2. It performs operations on signed numbers. Parts List Semiconductors: IC1 - PIC18F4580 microcontroller IC2 - 7805 5V regulator Resistors (all -watt, 5% carbon): R1 - 10-kilo-ohm R2-R5 - 1-kilo-ohm R6 - 100-ohm VR1 - 10-kilo-ohm preset Capacitors: C1, C2 - 22pF ceramic disk C3 - 0.1F ceramic disk C4 - 2.2F, 16V electrolytic Miscellaneous: S1-S21 - Push-to-on tactile switch S22 - On/off switch LCD - 162 line LCD module X TAL - 20MHz crystal BATT. - 9V battery a scientifc calculator gives you quick access to certain math- ematical functions. Basically, its an electronic calculator designed to solve problems in science, engineering and mathematics. Here we present a microcontroller- based scientifc calculator. Its main features are: 1. Out of the 20 switches on the 54 matrix keypad, seven are for mathematical operations, performing 17 mathematical functions. That is, one switch can perform more than one mathematical function; for example, a single switch for sine, cosine and tan- gent functions, and a single switch for Fig. 1: Circuit of the microcontroller-based scientifc calculator 3. The calculator accepts four digits for integer place and two digits for decimal place. The output has a total of eight digits for integer and decimal places but the maximum number of digits in decimal place is limited to four. 4. The program is written such that inputting wrong data is made diffcult. For example, while inputting an integer, it will not accept any operator function even if you press the operator switches. Error will of course occur if the answer is out of range. circuit description Fig. 1 shows the circuit of the micro- controller-based scientifc calculator. cONSTRUcTION electroni cs for you June 2011 109 www. e f y ma g . c o m Microcontroller PIC18F4580 is at the heart of this calculator. It has 32 kB of enhanced Flash programmable mem- ory, fve bidirectional input/output ports, four timers, 11-bit analogue- to-digital converter, two comparators and is also capable of serial communication. It offers dif- ferent oscillator options to provide the basic clock fre- quency. Power-on reset is pro- vided by the combination of resistor R1 and capacitor C4. Switch S21 is used for manual reset. A 20MHz crys- tal connected to pins 13 and 14 provides the basic clock to the microcontroller. Port pins RD4 through RD7 of the microcontroller are connected to data port pins D4 through D7 of the LCD module, re- spectively. The microcontroller drives the LCD in 4-bit mode and sends the data in two nibbles (4-bit parts) for display on the LCD. Port pins RC0, RC1 and RC5 are connected to read/ write (R/W), register-select (RS) and enable (E) of the LCD, respectively, to control the LCD operation. Preset VR1 is used for contrast con- trol of the LCD. The 54-matrix keypad is interfaced to microcontroller PIC18F4580 through its port pins. Its fve rows are con- nected to fve pins of Port B (RB0 through RB4) and four columns to four pins of Port A (RA0 through RA3). Key debounce technique is used to eliminate false key-press detection. The microcontroller scans the keypad continuous- ly to detect and identify the key pressed by the user. Eight out of 20 keys (S1 through S20 switches) can perform more than one function at a time. IC 7805 (IC2) provides regulated 5V to the circuit. Capacitor C3 bypasses ripples, if any, in the regu- lated supply. An actual-size, single-side PCB for the microcontroller-based sci- entifc calculator is shown in Fig. 2 and its component layout in Fig. 3. Assembling the circuit on a PCB minimises time and assembly errors. Carefully assemble the components and double-check for any overlooked error. Use bases to avoid damage to ICs due to direct soldering and over- heating. functions of different keys Functions assigned to different switch- es on the keypad are shown in the ta- ble. Fig. 4 shows the user manual of the calculator for division of two numbers. The +/ key is used to give sign to the number. It works only when the cursor is below letter S displayed on the LCD. If it is pressed once + sign is displayed, and if it is pressed twice - sign is displayed. Digits 0 through 9 on the keypad have the same functions as in a normal calculator. You can enter digits only when the cursor is below digit 0 dis- played in the LCD. When you press a number key, 0 displayed on the LCD changes to the number pressed. After the frst data is inputted, the calculator shows word operator in the second line of the LCD. There are seven operator keys. When an operator Fig. 2: An actual-size, single-side PCB for the microcontroller- based scientifc calculator Fig. 3: Component layout for the PCB Keypad Details Switch Function S1 1 S2 2 S3 3 S4 4 S5 5 S6 6 S7 7 S8 8 S9 9 S10 0 S11 +/- S12 AC S13 ADD/SUB S14 MUL/DIV S15 POW/SQR/SQRT S16 INV./EXP. S17 EXC S18 LOG/LN S19 SIN/COS/TAN S20 ASIN/ACOS/ATAN cONSTRUcTION 110 June 2011 electroni cs for you www. e f y ma g . c o m key is pressed once, its frst operator value is displayed. When it is pressed again, the second operator value is dis- played. Pressing the key for the third time displays the third operator (if it is present) or again the frst operator. So by repeatedly pressing a key, the mathematical operator on the LCD can be changed. The user can enter an op- erator by pressing the respective key as many times as needed and then leave the keypad for a fnite time gap. After that time, the calculator will accept only the operator shown on the LCD and reject any other operator from the keypad. If the mathematical operator re- quires only one operand, wait for some time after setting the operator. An E will be displayed in the second row of the LCD. Press the execution key to see the result. If the mathematical operator requires two numbers, you will need to enter the second operand after setting the operator. After inputting the sec- ond operand, wait for some time until letter E is displayed in the second row of the LCD. Press the execution key to see the result. If the answer to any mathematical operation goes out of range, the LCD shows Error message. The AC key can be pressed at any time to clear the display and reset the whole system. software The source program of this scientifc calculator is written in C language and compiled using MPLAB IDE. The program is well commented and easy to understand. MPLAB IDE and MPLAB C18 must be installed before compilation of the program. Fig. 5 shows the confguration bits setting of microcontroller PIC18F4580. Set the confguration bits before compiling the source program and check before burning the code into the microcon- troller. A software called Microchip Ap- plication Maestro is used to generate the xlcd.h and xlcd.c fles to interface the LCD. In the main program, only library routines have been called for writing to the LCD. The Microchip Application Maestro Modules is available on website http://ww1. microchip.com/downloads/en/De- viceDoc/mpammodulesv103.zip. After installation, run the Microchip Application Maestro application and select XLCD for C Language (refer Fig. 6). Confgure the LCD by selecting different parameters like interfacing mode, data port and control pins (RS, R/W, E). After the confguration is done, click Generate Code icon. Save the generated fles in the same direc- tory as the source program MPLAB. Both the xlcd.c and xlcd.h fles are added in the workspace of MPLAB. XLCDc.readme and XLCD.DEF are also generated. XLCDc.readme con- Fig. 5: Confguration bits setting of microcontroller PIC18F4580 Fig. 4: User manual of the calculator for division of two numbers (f) The result displayed (e) 23 is the second operand data. The letter E indicates the user to press the execute button now (d) The operator is division /, so it requires the second operand (c) After the frst operand is inputted the word operator shows up (b) The sign bit S is replaced with + sign (a) Initial stage of the LCD cONSTRUcTION electroni cs for you June 2011 111 www. e f y ma g . c o m tains names of all the library routines. Before compiling the program, some delay subroutines need to be written in the xlcd.c fles in order to add delays required for the working of the LCD. The program works as per the fow-chart shown in Fig. 7. In the program, header fles for timers, delays, lcd and math have been used. First, confgure Port A pins as digital input. The LCD is initialised for 4-bit mode, display on, cursor on, blink off, etc. The frst op- erand is displayed in the frst line of the LCD with the help of the function input_number. The word operator displayed in the second line of the LCD means that the program is wait- ing for an operator from the user. Pressing an operator switch displays the operator on the LCD. At this time, no switch other than the operator switch will work. Operator switches are time-multi- plexed. That means an operator switch allows you to perform more than one function. When an operator switch is pressed once, it displays the frst op- erator function. Pressing it again soon after displays another operator at the same position of the LCD. A switch can have two-three operators. After you select the desired op- erator, leave the keypad. After a small period of time, the program will Fig. 7: Flow-chart of working of scientifc calculator Fig. 6: Microchip Application Maestro screenshot time to read the data from the LCD and then perform mathematical opera- tion on it. It checks the value of ope to know which mathematical operation has to be performed. After performing the mathematical operation, it shows letter E on the right side of the second line of the LCD. Now if you press the execution key, the result is shown in the second line of the LCD. Pressing the execution key before letter E is displayed in the LCD will not give any result. If AC key is pressed while execut- ing the code, the LCD gets cleared and the program starts executing from the beginning. After letter E is shown on the LCD, only EXC and AC keys work. Keyboard subroutine. This subrou- tine uses the keys debounce technique and works as per the fow-chart shown in Fig. 8. When the keyboard function is called, the program waits for any key to be pressed and returns to its position (column and row values). The value of the row and the column understand which operator has been selected. Flag variable f is used to fnd out the number of times a switch is pressed. Its initial value is 0. When an operator key is pressed, the fag variables value changes from 0 to 1. If the same switch is pressed again, the program comes to know through the fag variable that the same switch is pressed for the second time and changes the fag variable value from 1 to 2, depending on the number of operators related to that switch. Now the LCD shows the second operator function of the switch. A number is given to each opera- tor to understand which operation is selected or which operation has to be performed. This number is stored in variable ope. For example, + has ope value of 1, - has ope value of 2, log has ope value of 10 and so on. When the program accepts the opera- tor, the word operator in the second line of the LCD is erased. Now the program checks whether the given mathematical operator re- quires another operand or not. If it requires another operand, the above process repeats. The only difference is that now the second line of the LCD, not the frst line, is used for inputting the data. After the operand and the operator are entered, the program takes some cONSTRUcTION 112 June 2011 electroni cs for you www. e f y ma g . c o m matches with the value of the 5x4 ma- trix of the matrix array key_pad [5][4] declared in the program. Row reading. 1. Starting with the top row, the microcontroller makes each row high at a time and then reads the columns. If the data read is all zeros, no key in that row is activated and the program moves to the next row. 2. It makes the next row high, reads the columns and checks for any high. 3. This process continues until the row having a key pressed is identifed, i.e., reading of the column returns a non-zero value. 4. After identifcation of the row in which the key has been pressed, the program fnds out which column the pressed key belongs to. Column reading. The microcon- troller reads the data at Port A and masks its lower bit. Variables row and column are global, and they can be used from anywhere in the program. For read- ing a switch which has more than one operation, timer1 is started before en- tering the function keyboard( ). The program goes on reading the keyboard until timer1 stops counting. When timer1 finishes counting, it returns from the function. Key multiplexing is done with the help of the timer. At frst, the timer is initialised to 16 bits and TMR0IF is set to 0. The timer starts counting only when a value is written to it. After it fnishes counting, TMR0IF becomes 1. This timer is used only for those keys which perform mathematical op- eration. For keys other than operator keys, it does not start counting. But at the press of any operator key, Write- Timer0(50000) is used to write value to the timer and the timer starts count- ing. If the same key is pressed again before the timer completes counting, the second value of the key gets ac- cepted and the timer value is again set to 50000. The process goes on. This way, key multiplexing is done and a single key can perform more than one operation. Read from LCD subroutine. This subroutine reads numbers from the LCD and returns them as signed, double-data type. The cursor goes to the LCD location (given by the user) from where the data is to be read. The program reads the num- ber, sign and decimal point from the LCD one by one, and stores them in string array ch[i]. Then it converts the string array into signed, double- data type ans using function atof( ) and returns the value of ans. Now the microcontroller has the number that was typed into the LCD and any mathematical operation can be per- formed on it. Write result to LCD subroutine. This subroutine writes the result to the LCD. It receives the LCD location where the data is to be written, the signed foating point number and the number of places to be displayed after the decimal point. This function also displays word Error on the LCD if the result of any mathematical operation is out of range or mathematically incorrect. Input number subroutine. This function takes operand inputs for mathematical calculations. For math- ematical operations requiring two op- erands (like addition and subtraction), it is executed twice. For mathematical operations requiring a single operand (like log), it is executed only once. It frst takes the input of the sign bit, then the integer part followed by the decimal part. The function uses time multiplex- ing of the sign (+/) switch with the (c) Tan inverse of a number (b) Ln of a number (a) Square of a number Fig. 9: User manual of the calculator for square, natural log (Ln) and tan inverse Fig. 8: Flow-chart of keyboard subroutine cONSTRUcTION electroni cs for you June 2011 113 www. e f y ma g . c o m Fig. 10: Working prototype of scientifc calculator help of timer0. When +/ switch is pressed once, the LCD shows +. When it is pressed again within a short period of time, the LCD shows -. Pressing it further shows +. After reset, S0000 is shown on the LCD. Initially, the cursor is at S. At this time, no switch other than +/- works. This +/- switch is time- multiplexed, and either + or can be displayed at the same location of the LCD. As you input + or from the keypad, the cursor moves to the next position. The four zeros (0000) allow you to input the 4-digit number from the keypad. The digits are taken one by one. Then .00 is displayed on the LCD, allowing you to input digits in decimal places as well. Pressing the AC key while executing the code clears the LCD and the program starts executing from the beginning. Fig. 9 shows the user manual of the calculator. Fig. 10 shows the authors working prototype. EFY note. The source code of this article is available on www.efymag. com website.