Graphing Calculator
ECE 476 Final Project, Spring 2003
Jeannette Lukito :: Jonathan Wang

:Introduction:
:High.Level.Design:
:Program.Design:
:Hardware.Design:
:Results:
:Pictures:
:Conclusions:
:Appendix:
:Code.of.Ethics:











Jeannette Lukito
jl259@cornell.edu
Jonathan Wang
jdw24@cornell.edu

Results

     A major challenge of the design was to graph an entire function to the screen without causing flicker. We decided that storing all the points to an array and printing them to the TV at once would not be possible within the refresh rate, so we decided to calculate the points on the fly and print them out one by one to the screen. Although this worked well, we were not able to include as many extensions of the Taylor series expansions as we would have liked. As a result, our accuracy suffered a little. Thus we added a precision mode that uses math.h in case the user wants to insure accuracy. We also had trouble graphing certain functions that required too much computation per point. An example of this is graphing 5 tan(3x + 2). We started getting flicker because the processor could not finish the computation in time for the next screen refresh.

     We only printed results of calculations out to the second decimal point. When in normal mode of operation, all the basic numerical functions(add, multiply, divide, subtract) and sine and cosine were accurate for all legal input. The other functions’ accuracy suffered because of the limitations of using the Taylor expansions.

     Below are the functions and their approximate range of accuracy:

  • Tangent: -1 < x < 1
  • ex : -2 < x < 3
  • arcsin: -.8 < x < .8
  • arccos: -.9 < x < .9
  • arctan: -.9 < x < .9
  • ln: 0 < x < 1.5

     This graphing calculator has a very high safety rating. It does not have many moving parts and those not use large amounts of power or generate large amounts of heat.

     Our calculator does not interfere with other designs in any way.

     The calculator is very user-friendly once one has familiarized themselves with how the keypads work. We implemented lots of error checking and bound checking for the user’s convenience. We have clear screen and delete functions in case the user makes a mistake. We clearly show which mode the user is currently in, as well as any parameters that a user may have to input. We clearly show if the user is in precision mode or normal mode, and if the user is graphing using dots or lines. The viewing window of the graphs has been tailored to each specific function for maximum visibility.