Catalog · How the catalog works
BCD-Decoder
BCD Decoder project in pascal
- ★ 1 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
BCD-Decoder
Projet d'affichage d'un nombre sur un 7-segment.
Auteurs: H2WO4, Samy8z
Code source dans le fichier ./Decodeur.pas
Éxécutable dans le fichier out/Decodeur.exe
Sommaire
Raisonement derrière l'analyse
- Étape d'entrée des données.
Sa place en premier et évidente et nécessaire. - Étape de division du nombre en tableau de chiffres.
L'algorithme suivant ne marche que sur des chiffres, il est donc nécessaire de d'abord transformer le nombre.- Procèdure pour inverser un tableau.
Ne sachant pas la taille du nombre, la méthode utilisée nous donnera le tableau dans l'ordre inverse. Cette procèdure vient corriger cela.
- Procèdure pour inverser un tableau.
- Étape de conversion des chiffres en nibbles.
L'algorithme suivant opère sur la représentation en base 2 d'un chiffre, il est donc nécessaire de d'abord transformer chaque chiffre.
Contrairement au 2., la taille du tableau est connue à l'avance, et il n'y a pas besoin d'inverser le tableau.- Procédure pour convertir un chiffre en nibble. Pour éviter de rendre le code illisible en embriquant des boucles FORs non-triviale, il a été jugé nécessaire de séparer ceci dans sa propre procédure.
- Étape de conversion des nibbles en représentation 7-segments.
L'affichage nécéssite un tableau des segments à afficher, il est donc nécessaire de d'abord transformer chaque chiffre. - Étape d'affichage des chiffres.
Maintenant que les données sont dans un format utilisable, nous pouvont les afficher à l'écran.- / ii. Procéure pour afficher un trait horizontal / vertical.
Ce morceau de code est réutilisé plusieurs fois avec des paramètres différents, il a donc été jugé judicieux d'en faire ça propre procédure. - Procédure pour afficher un rectangle.
Les deux procédures précédentes sont très similaires, pour éviter la répétition de code, il a été jugé plus élégant de les faire "hériter" d'une procédure mère.
- / ii. Procéure pour afficher un trait horizontal / vertical.
Options incluses
- Entrée d'un nombre plutôt qu'un chiffre
- Entrée d'un niveau de zoom

Tableaux de Karnaugh
L'étape 4 nécessite des équations le plus simple possible pour effectuer la conversion.
Une méthode pour obtenir de telles équations est la méthode de Karnaugh, ici utilisé.
Les équations ont ensuite encore été simplifié via l'algèbre de Boole, via factorisation des termes, ainsi que l'utilisation des portes XOR et XAND.
Segment A

Segment B

Segment C

Segment D

Segment E

Segment F

Segment G

Éventuels bugs
- Entrée d'un nombre supérieur à 18,446,744,073,709,551,615 (2^64 - 1). (Overflow, mais pas de crash)
- Entrée d'un nombre négatif. (Le programme crash)
- Entrée d'un zoom inférieur ou égal à 0. (N'affiche rien)
- Entrée de coordonées négatives. (Affiche n'importe quoi)
Ordre de programmation
- Groupe FP5
Pour pouvoir tester les étapes de data-process, le mieux et de commençer par le data-out.- FT5.(1&2).1 → FS5.1 & FS5.2 → FP5
Ainsi, il suffit de remonter dans l'arbre, en partant donc du bas.
- FT5.(1&2).1 → FS5.1 & FS5.2 → FP5
- FP4 → FS3.1 → FP3 → FP2.1 → FP2
Nous pouvons donc commencer le data-process, par la fin, car cela nous permet de directement envoyer le résultat de cette procédure dans le data-out, FP5. - FP1
Maintenant que le data-process et le data-out sont fonctionels, nous pouvont programmer le data-in, et nous pouvons, sans aucune difficulté s'assurer qu'il fonctionne.
Fiches de programmation


.1.png)

