Now with the hardware aspect completed, it’s time to move onto the programming portion. The video below is the current status of the DSKY. If this goes well, I may consider uploading more video update logs.
For people who don't know what is happening on the video, at the start of the video, the micro controllers tells the shift registers to display 8 on their entire screen. It's more for presentation rather than function. After the initialization is completed, the first thing I program into the device is Verb (V) 35. This tells the DSKY to test all the lights to verify that it is in working order. Following V35, The next thing I programmed is Verb 16 Noun (N) 36. This informs the DSKY to display the Ground Elapse Time (GET). The last program is V25N36. This is used to configure GET. Once initiated, the computer notifies the use with code V21N36. This informs the user to input the values for the hour portion of the GET. After the hour has been inputted, V22N36 ask the user to input the minutes. Lastly V23N36 ask the user to program the seconds. Once programmed, it goes back to displaying GET with the new information. The following section is going to cover the programming aspect of the project.
I'm not going to go in detail with each portion of the code but I will provide a general overview on how I code each of the DSKY program. Before we start, Most of my information is retrieved from Ibibio If you need to refresh or get additional information, go and spend some getting some background. The other source of information is from the Apollo 15 user manual from Delco Electronics. From those three sources, I should recreate the software portion of DSKY.The source code for the project is already uploaded onto the Mbed website. DSKY Code
Test Light Program V35 (Line No: 628 - 661):
Test_Lights() function is rather simple. It starts by configuring all the shift register data to 0x08 which basically tells the 7-segments to display 8. The program then waits one second and configures just the verb and noun to 0x0f which turns off the 7 segments.
Display GET Program V16N36 (Line No: 482 - 554):
This function does involve some math and forethought. The format may not be the efficient way, but it's in a format where I could easily understand what I code. Commenting on the code does help also. The next portion of the code then calculates the time difference and sub divides it for hours, minutes, and seconds. It then displays the values into the shift registers.
GET Configure Program V25N36 (Line No: 673 - 786):
Once this function is initialized, It blinks V21N36 asking for input for the hours category. Then blinks V22N36 asking for input for the minutes, and lastly blink V23N36 for input for the seconds’ category. Once all information is inputted, it then checks whether the value exceeds the maximum hours, minutes, and seconds. If it does not, it then continues by converting both the hours and minutes to seconds. After calculations, it then resets the clock and goes to GET program