space1649

multiplexed-display-zeros-delete_for_Anode_Display

Apr 9th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.29 KB | None | 0 0
  1. /**
  2. * Modofied For Anode Type Display // Modfied for Anode and zero delete ++++++++++++++++++++++++++++++++++++++++++
  3. * This sketch is specifically for programming the EEPROM used in the 8-bit
  4. * decimal display decoder described in https://youtu.be/dLh1n2dErzE
  5. */
  6. #define SHIFT_DATA 2
  7. #define SHIFT_CLK 3
  8. #define SHIFT_LATCH 4
  9. #define EEPROM_D0 5
  10. #define EEPROM_D7 12
  11. #define WRITE_EN 13
  12.  
  13. /*
  14. Output the address bits and outputEnable signal using shift registers.
  15. */
  16. void setAddress(int address, bool outputEnable) {
  17. shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, (address >> 8) | (outputEnable ? 0x00 : 0x80));
  18. shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, address);
  19.  
  20. digitalWrite(SHIFT_LATCH, LOW);
  21. digitalWrite(SHIFT_LATCH, HIGH);
  22. digitalWrite(SHIFT_LATCH, LOW);
  23. }
  24.  
  25.  
  26. /*
  27. Read a byte from the EEPROM at the specified address.
  28. */
  29. byte readEEPROM(int address) {
  30. for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin += 1) {
  31. pinMode(pin, INPUT);
  32. }
  33. setAddress(address, /*outputEnable*/ true);
  34.  
  35. byte data = 0;
  36. for (int pin = EEPROM_D7; pin >= EEPROM_D0; pin -= 1) {
  37. data = (data << 1) + digitalRead(pin);
  38. }
  39. return data;
  40. }
  41.  
  42.  
  43. /*
  44. Write a byte to the EEPROM at the specified address.
  45. */
  46. void writeEEPROM(int address, byte data) {
  47. setAddress(address, /*outputEnable*/ false);
  48. for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin += 1) {
  49. pinMode(pin, OUTPUT);
  50. }
  51.  
  52. for (int pin = EEPROM_D0; pin <= EEPROM_D7; pin += 1) {
  53. digitalWrite(pin, data & 1);
  54. data = data >> 1;
  55. }
  56. digitalWrite(WRITE_EN, LOW);
  57. delayMicroseconds(1);
  58. digitalWrite(WRITE_EN, HIGH);
  59. delay(10);
  60. }
  61.  
  62.  
  63. /*
  64. Read the contents of the EEPROM and print them to the serial monitor.
  65. */
  66. void printContents() {
  67. for (int base = 0; base <= 2047; base += 16) { // changed 255 to 2024
  68. byte data[16];
  69. for (int offset = 0; offset <= 15; offset += 1) {
  70. data[offset] = readEEPROM(base + offset);
  71. }
  72.  
  73. char buf[800]; // original 80
  74. sprintf(buf, "%03x: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",
  75. base, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7],
  76. data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15]);
  77.  
  78. Serial.println(buf);
  79. }
  80. }
  81.  
  82.  
  83. void setup() {
  84. // put your setup code here, to run once:
  85. pinMode(SHIFT_DATA, OUTPUT);
  86. pinMode(SHIFT_CLK, OUTPUT);
  87. pinMode(SHIFT_LATCH, OUTPUT);
  88. digitalWrite(WRITE_EN, HIGH);
  89. pinMode(WRITE_EN, OUTPUT);
  90. Serial.begin(57600);
  91.  
  92. // Bit patterns for the digits 0..9 Anode
  93. byte digits[] = { 0x81, 0xCF, 0x92, 0x86, 0xCC, 0xA4, 0xA0, 0x8F, 0x80, 0x84 }; // Modfied for Anode ++++++++++++++++++++++++++++++++++++++++++
  94.  
  95.  
  96.  
  97. // Bit patterns for the digits 0..9 Cathode
  98. //byte digits[] = { 0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, 0x7f, 0x7b };
  99.  
  100. Serial.println("Programming ones place");
  101. for (int value = 0; value <= 255; value += 1) {
  102. writeEEPROM(value, digits[value % 10]);
  103. }
  104. Serial.println("Programming tens place");
  105. for (int value = 0; value <= 255; value += 1) {
  106. writeEEPROM(value + 256, digits[(value / 10) % 10]);
  107. }
  108. Serial.println("Programming hundreds place");
  109. for (int value = 0; value <= 255; value += 1) {
  110. writeEEPROM(value + 512, digits[(value / 100) % 10]);
  111. }
  112. Serial.println("Programming sign");
  113. for (int value = 0; value <= 255; value += 1) {
  114. writeEEPROM(value + 768, 0xFF); // Modfied for Anode ++++++++++++++++++++++++++++++++++++++++++
  115. }
  116.  
  117. Serial.println("Programming ones place (twos complement)");
  118. for (int value = -128; value <= 127; value += 1) {
  119. writeEEPROM((byte)value + 1024, digits[abs(value) % 10]);
  120. }
  121. Serial.println("Programming tens place (twos complement)");
  122. for (int value = -128; value <= 127; value += 1) {
  123. writeEEPROM((byte)value + 1280, digits[abs(value / 10) % 10]);
  124. }
  125. Serial.println("Programming hundreds place (twos complement)");
  126. for (int value = -128; value <= 127; value += 1) {
  127. writeEEPROM((byte)value + 1536, digits[abs(value / 100) % 10]);
  128. }
  129. Serial.println("Programming sign (twos complement)");
  130. for (int value = -128; value <= 127; value += 1) {
  131. if (value < 0) {
  132. writeEEPROM((byte)value + 1792, 0xFE); // Modfied for Anode
  133. } else {
  134. writeEEPROM((byte)value + 1792, 0xFF); // Modfied for Anode
  135. }
  136. }
  137. //***********************************************************************************************************************************
  138. // For Anode Type Display ff= Off
  139. //Modifying delete leading zeros
  140. //Added Code not to display leading zeros
  141.  
  142. Serial.println("Modifying tens place"); // Write 1's to 10 addresses starting at address 256 (100h) 9 digits
  143. for (int value = 256; value <= 265; value += 1) {
  144. writeEEPROM(value, 0xFF); // Modfied for Anode ++++++++++++++++++++++++++++++++++++++++++
  145. }
  146.  
  147. Serial.println("Modifying hundreds place"); // Write 1's to 100 addresses starting at address 512 (200h) 99 digits
  148. for (int value = 512; value <= 611; value += 1) {
  149. writeEEPROM(value, 0xFF); // Modfied for Anode ++++++++++++++++++++++++++++++++++++++++++
  150. }
  151.  
  152.  
  153. Serial.println("Modifying tens place (twos complement)"); // Write 10's to 10 addresses starting at address 1280 (100h) 9 digits
  154. for (int value = 1280; value <= 1289; value += 1) {
  155. writeEEPROM(value, 0xFF); // Modfied for Anode ++++++++++++++++++++++++++++++++++++++++++
  156. }
  157.  
  158. Serial.println("Modifying hundreds place (twos complement)"); // Write 1's to 100 addresses starting at address 1536 (200h) 99 digits
  159. for (int value = 1536; value <= 1635; value += 1) {
  160. writeEEPROM(value, 0xFF); // Modfied for Anode ++++++++++++++++++++++++++++++++++++++++++
  161. }
  162.  
  163.  
  164. Serial.println("Modifying tens place (twos complement)"); // Write 1's to 10 addresses starting at address 1527 (100h) 9 digits
  165. for (int value = 1527; value <= 1535; value += 1) {
  166. writeEEPROM(value, 0xFF); // Modfied for Anode ++++++++++++++++++++++++++++++++++++++++++
  167. }
  168.  
  169. Serial.println("Modifying hundreds place (twos complement)"); // Write 1's to 100 addresses starting at address 1693 (200h) 99 digits
  170. for (int value = 1693; value <= 1791; value += 1) {
  171. writeEEPROM(value, 0xFF); // Modfied for Anode ++++++++++++++++++++++++++++++++++++++++++
  172. }
  173. //***********************************************************************************************************************************
  174.  
  175. // Read and print out the contents of the EERPROM
  176. Serial.println("Reading EEPROM");
  177. printContents();
  178. }
  179.  
  180.  
  181. void loop() {
  182. // put your main code here, to run repeatedly:
  183.  
  184. }
  185.  
  186.  
  187. /* Output Final Mod for Anode Display
  188.  
  189. Programming ones place
  190. Programming tens place
  191. Programming hundreds place
  192. Programming sign
  193. Programming ones place (twos complement)
  194. Programming tens place (twos complement)
  195. Programming hundreds place (twos complement)
  196. Programming sign (twos complement)
  197. Modifying tens place
  198. Modifying hundreds place
  199. Modifying tens place (twos complement)
  200. Modifying hundreds place (twos complement)
  201. Modifying tens place (twos complement)
  202. Modifying hundreds place (twos complement)
  203. Reading EEPROM
  204. 000: 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4
  205. 010: a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf
  206. 020: 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f
  207. 030: 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86
  208. 040: cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84
  209. 050: 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4
  210. 060: a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf
  211. 070: 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f
  212. 080: 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86
  213. 090: cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84
  214. 0a0: 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4
  215. 0b0: a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf
  216. 0c0: 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f
  217. 0d0: 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86
  218. 0e0: cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84
  219. 0f0: 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4
  220. 100: ff ff ff ff ff ff ff ff ff ff cf cf cf cf cf cf
  221. 110: cf cf cf cf 92 92 92 92 92 92 92 92 92 92 86 86
  222. 120: 86 86 86 86 86 86 86 86 cc cc cc cc cc cc cc cc
  223. 130: cc cc a4 a4 a4 a4 a4 a4 a4 a4 a4 a4 a0 a0 a0 a0
  224. 140: a0 a0 a0 a0 a0 a0 8f 8f 8f 8f 8f 8f 8f 8f 8f 8f
  225. 150: 80 80 80 80 80 80 80 80 80 80 84 84 84 84 84 84
  226. 160: 84 84 84 84 81 81 81 81 81 81 81 81 81 81 cf cf
  227. 170: cf cf cf cf cf cf cf cf 92 92 92 92 92 92 92 92
  228. 180: 92 92 86 86 86 86 86 86 86 86 86 86 cc cc cc cc
  229. 190: cc cc cc cc cc cc a4 a4 a4 a4 a4 a4 a4 a4 a4 a4
  230. 1a0: a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 8f 8f 8f 8f 8f 8f
  231. 1b0: 8f 8f 8f 8f 80 80 80 80 80 80 80 80 80 80 84 84
  232. 1c0: 84 84 84 84 84 84 84 84 81 81 81 81 81 81 81 81
  233. 1d0: 81 81 cf cf cf cf cf cf cf cf cf cf 92 92 92 92
  234. 1e0: 92 92 92 92 92 92 86 86 86 86 86 86 86 86 86 86
  235. 1f0: cc cc cc cc cc cc cc cc cc cc a4 a4 a4 a4 a4 a4
  236. 200: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  237. 210: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  238. 220: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  239. 230: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  240. 240: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  241. 250: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  242. 260: ff ff ff ff cf cf cf cf cf cf cf cf cf cf cf cf
  243. 270: cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf
  244. 280: cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf
  245. 290: cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf
  246. 2a0: cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf
  247. 2b0: cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf
  248. 2c0: cf cf cf cf cf cf cf cf 92 92 92 92 92 92 92 92
  249. 2d0: 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92
  250. 2e0: 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92
  251. 2f0: 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92 92
  252. 300: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  253. 310: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  254. 320: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  255. 330: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  256. 340: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  257. 350: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  258. 360: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  259. 370: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  260. 380: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  261. 390: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  262. 3a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  263. 3b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  264. 3c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  265. 3d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  266. 3e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  267. 3f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  268. 400: 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4
  269. 410: a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf
  270. 420: 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f
  271. 430: 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86
  272. 440: cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84
  273. 450: 81 cf 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4
  274. 460: a0 8f 80 84 81 cf 92 86 cc a4 a0 8f 80 84 81 cf
  275. 470: 92 86 cc a4 a0 8f 80 84 81 cf 92 86 cc a4 a0 8f
  276. 480: 80 8f a0 a4 cc 86 92 cf 81 84 80 8f a0 a4 cc 86
  277. 490: 92 cf 81 84 80 8f a0 a4 cc 86 92 cf 81 84 80 8f
  278. 4a0: a0 a4 cc 86 92 cf 81 84 80 8f a0 a4 cc 86 92 cf
  279. 4b0: 81 84 80 8f a0 a4 cc 86 92 cf 81 84 80 8f a0 a4
  280. 4c0: cc 86 92 cf 81 84 80 8f a0 a4 cc 86 92 cf 81 84
  281. 4d0: 80 8f a0 a4 cc 86 92 cf 81 84 80 8f a0 a4 cc 86
  282. 4e0: 92 cf 81 84 80 8f a0 a4 cc 86 92 cf 81 84 80 8f
  283. 4f0: a0 a4 cc 86 92 cf 81 84 80 8f a0 a4 cc 86 92 cf
  284. 500: ff ff ff ff ff ff ff ff ff ff cf cf cf cf cf cf
  285. 510: cf cf cf cf 92 92 92 92 92 92 92 92 92 92 86 86
  286. 520: 86 86 86 86 86 86 86 86 cc cc cc cc cc cc cc cc
  287. 530: cc cc a4 a4 a4 a4 a4 a4 a4 a4 a4 a4 a0 a0 a0 a0
  288. 540: a0 a0 a0 a0 a0 a0 8f 8f 8f 8f 8f 8f 8f 8f 8f 8f
  289. 550: 80 80 80 80 80 80 80 80 80 80 84 84 84 84 84 84
  290. 560: 84 84 84 84 81 81 81 81 81 81 81 81 81 81 cf cf
  291. 570: cf cf cf cf cf cf cf cf 92 92 92 92 92 92 92 92
  292. 580: 92 92 92 92 92 92 92 92 92 cf cf cf cf cf cf cf
  293. 590: cf cf cf 81 81 81 81 81 81 81 81 81 81 84 84 84
  294. 5a0: 84 84 84 84 84 84 84 80 80 80 80 80 80 80 80 80
  295. 5b0: 80 8f 8f 8f 8f 8f 8f 8f 8f 8f 8f a0 a0 a0 a0 a0
  296. 5c0: a0 a0 a0 a0 a0 a4 a4 a4 a4 a4 a4 a4 a4 a4 a4 cc
  297. 5d0: cc cc cc cc cc cc cc cc cc 86 86 86 86 86 86 86
  298. 5e0: 86 86 86 92 92 92 92 92 92 92 92 92 92 cf cf cf
  299. 5f0: cf cf cf cf cf cf cf ff ff ff ff ff ff ff ff ff
  300. 600: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  301. 610: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  302. 620: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  303. 630: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  304. 640: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  305. 650: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  306. 660: ff ff ff ff cf cf cf cf cf cf cf cf cf cf cf cf
  307. 670: cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf
  308. 680: cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf cf
  309. 690: cf cf cf cf cf cf cf cf cf cf cf cf cf ff ff ff
  310. 6a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  311. 6b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  312. 6c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  313. 6d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  314. 6e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  315. 6f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  316. 700: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  317. 710: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  318. 720: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  319. 730: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  320. 740: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  321. 750: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  322. 760: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  323. 770: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  324. 780: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  325. 790: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  326. 7a0: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  327. 7b0: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  328. 7c0: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  329. 7d0: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  330. 7e0: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  331. 7f0: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  332.  
  333.  
  334.  
  335. */
Advertisement
Add Comment
Please, Sign In to add comment