วิธีสร้างเครื่องคิดเลข


15

ฉันเป็นมือใหม่ในอุปกรณ์อิเล็กทรอนิกส์ ฉันกำลังพยายามสร้างเครื่องคิดเลขตั้งแต่เริ่มต้นเป็นโครงการง่ายๆและงานอดิเรกด้านข้างเพื่อให้ฉันไม่ว่าง

เป้าหมายของฉันคือการสร้างเครื่องคิดเลขอย่างง่ายไม่ใช่เครื่องคิดเลขเชิงวิทยาศาสตร์หรือกราฟแม้ว่าฉันไม่สนใจที่จะรับข้อมูลเกี่ยวกับวิธีการทำเช่นนั้นเพียงแค่เตะ

มีแบบฝึกหัดที่ดีสำหรับเรื่องนี้หรือไม่? ฉันจะเริ่มได้อย่างไร


2
มีชุดอุปกรณ์ในการสร้างเครื่องคิดเลข 4 ฟังก์ชันพื้นฐานได้ที่นี่: spikenzielabs.com/Catalog/ ......
jwygralak67

คำตอบ:


26

นี่คือตัวอย่างของเครื่องคิดเลขที่คุณสามารถสร้างโดยปราศจากความรู้ทางอิเล็กทรอนิกส์มากเกินไป มีคุณลักษณะครบถ้วนแม้ว่าจะไม่รวมการเพิ่ม

ใช่ฉันพูดเล่นไม่จริงจังเกินไป


ฮ่า ๆ. นั่นคืออะไร? ฉันคิดว่าฉันเคยเห็นมาก่อน แต่ฉันไม่แน่ใจ อยากรู้อยากเห็นมากว่าฉันจะได้รับในหนึ่งในนั้น คุณมีชื่อหรือลิงค์ไปยังหนึ่งในนั้นหรือไม่?
ปรัชญา


สิ่งนี้เป็นแรงบันดาลใจให้กับคำถามของฉัน: electronics.stackexchange.com/questions/11263
markrages

@KerxPhilo - Hahahahahahahahahahah ...... โอ้เวลาเปลี่ยนไปอย่างไร
Connor Wolf

@markrages รุ่งโรจน์คำถามของคุณน่าสนใจมาก :)
Philoxopher

18

นั่นไม่ใช่โครงการที่ไม่สำคัญ มีโครงการย่อยทางการศึกษามากมายที่ต้องกังวล หนึ่งคือปุ่มและ debouncing อีกอย่างคือการเขียนตัวอักษรลงบนจอแสดงผล มีการตัดสินใจว่าคุณต้องการนำสิ่งนี้ไปใช้อย่างไรคุณสนใจที่จะทำมันจากกล่องขนาดใหญ่ของประตู nand หรือต้องการที่จะใช้ไมโครคอนโทรลเลอร์หรือโปรเซสเซอร์อื่น ๆ และเขียนซอฟต์แวร์? คุณสนใจที่จะใช้ fpga และทำคณิตศาสตร์ทั้งหมดใน RTL หรือไม่? คุณต้องแบ่งปัญหาออกเป็นองค์ประกอบเหล่านั้นและทำงาน / เรียนรู้องค์ประกอบครั้งละหนึ่งชิ้นแล้วรวมเข้าด้วยกัน ตัวอย่างเช่นหากเอนจินคณิตศาสตร์หลักเป็นซอฟต์แวร์จริงบนไมโครคอนโทรลเลอร์งานหนึ่งจะรวมถึงการเขียนฟังก์ชัน C บางอย่างบนคอมพิวเตอร์เดสก์ท็อปของคุณซึ่งคุณสามารถป้อนการกดแป้นพิมพ์และอักขระเอาต์พุตที่จะไปที่จอแสดงผลในท้ายที่สุด งานที่ไม่สำคัญถ้าคุณไม่เคยตั้งโปรแกรมมาก่อน

ในฐานะที่เป็นโครงการด้านการศึกษาสิ่งที่ฉันจะทำคือรับ mapp430 launchapads ไม่กี่ตัวภายใต้ 5 bucks แต่ละตัวหรือค้นพบค่าของ STM32 line (stm32 / arm based อันหนึ่งไม่ใช่แบบอื่น) ประมาณ 12 bucks คนจำนวนมากจะพาคุณไปสู่ ​​arduino และนั่นก็เป็นแพลตฟอร์มที่ดีเช่นกันมันมีข้อดีและข้อเสียของมันฉันไม่อยากไปกับมันในฐานะไมโครคอนโทรลเลอร์ตัวแรกของฉัน ซื้อจอแอลซีดีสองบรรทัดแบบง่าย ๆ , earth earth เคยเป็นสถานที่ที่ดี, บางทีแค่ไปที่ sparkfun นำบอร์ดไมโครคอนโทรลเลอร์หนึ่งแผ่นติดไว้ที่แผงจอแอลซีดีและเรียนรู้วิธีใส่อักขระบนจอ ฉันจะเรียนรู้วิธีใช้ uart บนไมโครคอนโทรลเลอร์ซึ่งมักจะเริ่มต้นด้วยการระเบิดไบต์ออกจากนั้นก็รับและสะท้อนกลับในภายหลัง ใช้ uart receiver เพื่อรับสิ่งต่าง ๆ ที่จะนำมาวางบนหน้าจอจากนั้นใช้เทอร์มินัลโง่ (putty, hyperterm, minicom) จากสิ่งที่ฟีดในคอมพิวเตอร์และตรวจสอบให้แน่ใจว่ามันใช้งานได้ จากนั้นนำไมโครคอนโทรลเลอร์อีกตัวมาใช้ uart ของคุณเข้าและออกประสบการณ์และทำงานกับเอ็นจิ้นคณิตศาสตร์หลักจากคอมพิวเตอร์ของคุณป้อน 0 - 9, +, -, = ในตอนแรกจากนั้นเพิ่มทวีคูณและหารและจากนั้นถ้าคุณกล้าพอ สำหรับสิ่งนั้น (หรือมีห้องสมุดที่เหมาะสม) เอาท์พุทจากโมดูลคณิตศาสตร์จะสะท้อนจำนวนอินพุตและผลการพิมพ์เมื่อ = ถูกส่งเข้า ฯลฯ จากนั้นหาว่าจะทำอย่างไรกับปุ่มค้นหาอาเรย์ของปุ่มป้อนเข้าไปในไมโครคอนโทรลเลอร์ตัวที่สาม debounce และกลายเป็น uart จาก 0 - 9, +, -, = ถึงไมโครคอนโทรลเลอร์ทางคณิตศาสตร์ จากนั้นลดทั้งหมดนี้เป็นไมโครคอนโทรลเลอร์เดียวโดยไม่มีสิ่งที่ uart อยู่ตรงกลาง ใช้ประสบการณ์การเข้าและออกของ uart และทำงานกับเอ็นจิ้นคณิตศาสตร์หลักจากคอมพิวเตอร์ของคุณป้อน 0 - 9, +, -, = ในตอนแรกจากนั้นเพิ่มการคูณและหารแล้วจุดลอยถ้าคุณกล้าพอสำหรับ (หรือมี ห้องสมุดที่เหมาะกับ) เอาท์พุทจากโมดูลคณิตศาสตร์จะสะท้อนจำนวนอินพุตและผลการพิมพ์เมื่อ = ถูกส่งเข้า ฯลฯ จากนั้นหาว่าจะทำอย่างไรกับปุ่มค้นหาอาเรย์ของปุ่มป้อนเข้าไปในไมโครคอนโทรลเลอร์ตัวที่สาม debounce และกลายเป็น uart จาก 0 - 9, +, -, = ถึงไมโครคอนโทรลเลอร์ทางคณิตศาสตร์ จากนั้นลดทั้งหมดนี้เป็นไมโครคอนโทรลเลอร์เดียวโดยไม่มีสิ่งที่ uart อยู่ตรงกลาง ใช้ประสบการณ์การเข้าและออกของ uart และทำงานกับเอ็นจิ้นคณิตศาสตร์หลักจากคอมพิวเตอร์ของคุณป้อน 0 - 9, +, -, = ในตอนแรกจากนั้นเพิ่มการคูณและหารแล้วจุดลอยถ้าคุณกล้าพอสำหรับ (หรือมี ห้องสมุดที่เหมาะกับ) เอาท์พุทจากโมดูลคณิตศาสตร์จะสะท้อนจำนวนอินพุตและผลการพิมพ์เมื่อ = ถูกส่งเข้า ฯลฯ จากนั้นหาว่าจะทำอย่างไรกับปุ่มค้นหาอาเรย์ของปุ่มป้อนเข้าไปในไมโครคอนโทรลเลอร์ตัวที่สาม debounce และกลายเป็น uart จาก 0 - 9, +, -, = ถึงไมโครคอนโทรลเลอร์ทางคณิตศาสตร์ จากนั้นลดทั้งหมดนี้เป็นไมโครคอนโทรลเลอร์เดียวโดยไม่มีสิ่งที่ uart อยู่ตรงกลาง เอาท์พุทจากโมดูลคณิตศาสตร์จะสะท้อนจำนวนอินพุตและผลการพิมพ์เมื่อ = ถูกส่งเข้า ฯลฯ จากนั้นหาว่าจะทำอย่างไรกับปุ่มค้นหาอาเรย์ของปุ่มป้อนเข้าไปในไมโครคอนโทรลเลอร์ตัวที่สาม debounce และกลายเป็น uart จาก 0 - 9, +, -, = ถึงไมโครคอนโทรลเลอร์ทางคณิตศาสตร์ จากนั้นลดทั้งหมดนี้เป็นไมโครคอนโทรลเลอร์เดียวโดยไม่มีสิ่งที่ uart อยู่ตรงกลาง เอาท์พุทจากโมดูลคณิตศาสตร์จะสะท้อนจำนวนอินพุตและผลการพิมพ์เมื่อ = ถูกส่งเข้า ฯลฯ จากนั้นหาว่าจะทำอย่างไรกับปุ่มค้นหาอาเรย์ของปุ่มป้อนเข้าไปในไมโครคอนโทรลเลอร์ตัวที่สาม debounce และกลายเป็น uart จาก 0 - 9, +, -, = ถึงไมโครคอนโทรลเลอร์ทางคณิตศาสตร์ จากนั้นลดทั้งหมดนี้เป็นไมโครคอนโทรลเลอร์เดียวโดยไม่มีสิ่งที่ uart อยู่ตรงกลาง

อีกทางเลือกหนึ่งคือการได้รับหนึ่งในบอร์ด rs-232 fpga จาก knjn.com หรือ lattice brevia (มีขนาดใหญ่พอ?) หรือจำนวนอื่น ๆ จากนั้นทำงานในแต่ละบล็อกการทำงานโดยใช้ภาษา RTL ส่วนของมันจะง่ายกว่าโซลูชันซอฟต์แวร์ที่เทียบเท่าบางส่วนจะหนักกว่าโซลูชันซอฟต์แวร์เล็กน้อย

หากคุณสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณคิดกล่องแก้ปัญหา nand gates หรือไมโครคอนโทรลเลอร์ที่ใช้โซลูชันหรือคุณกำลังคิดถึงสิ่งอื่นอยู่หรือไม่?


7

เครื่องคิดเลขอิเล็กทรอนิกส์ที่ง่ายที่สุดที่คุณสามารถสร้างได้คือเครื่องคำนวณเลขฐานสองแบบสี่ฟังก์ชัน คุณสามารถสร้างได้โดยใช้สวิทช์ไปยังหมายเลขไบนารีการป้อนข้อมูลและ 7400 ครอบครัวพื้นฐานองค์ประกอบตรรกะสามารถจัดการกับงูที่จะจัดการนอกจากนี้ คุณสามารถใช้ LEDs แต่ละตัวเพื่อแทนเลขฐานสองแต่ละตัวในเอาต์พุตหรือคุณสามารถใช้เจ็ดส่วนเซกเมนต์เพื่อแสดงตัวเลขเป็นเลขฐานสิบหก การสร้างเครื่องคิดเลขแบบไบนารีจะช่วยให้คุณหลีกเลี่ยงการสร้างตัวแปลงทศนิยมเป็นแบบไบนารีและจะช่วยให้คุณทำความคุ้นเคยกับการทำงานของอุปกรณ์อิเล็กทรอนิกส์ดิจิทัล หากคุณวางแผนที่จะเข้าไปทำงานในระบบอิเล็กทรอนิกส์ดิจิตอลเป็นงานอดิเรกคุณอาจต้องการพิจารณาLogisimซึ่งเป็นโปรแกรมฟรีที่ให้คุณจำลองวงจรก่อนที่จะสร้างมันขึ้นมา


2
ว้าว. ในยุคของ System-on-Chip คุณต้องการให้เขาต่อสายยี่สิบประตูต่อหลักเพียงเพื่อเพิ่ม ? แม้แต่เครื่องคิดเลขมือถือเครื่องแรกก็ไม่ทำเช่นนั้น เครื่องคิดเลขชิปตัวเดียวมีมานานกว่าสามสิบปีแล้ว
Ron

ทีนี้คุณสามารถใช้ 74181 สำหรับชิ้น 4 บิต มันจะง่ายกว่านี้ถ้าไม่มีอะไรอื่น
W5VO

1
ใช่สามารถทำได้ด้วยหนึ่งหรือสองชิป (โดยใช้ไมโครโปรเซสเซอร์เช่นนี้ ) ถ้าเขาต้องการสร้างเครื่องคิดเลขในซอฟต์แวร์ บางทีการสร้างเครื่องคิดเลขทั้งหมดโดยใช้ส่วนประกอบที่ไม่ต่อเนื่องอาจใช้เวลานานเกินไป แต่ถ้าเขาต้องการเข้าไปในฮาร์ดแวร์เครื่องคิดเลขไบนารีอาจเป็นจุดเริ่มต้นที่ดี
inventorM

นี่เป็นความคิดที่ดีจริง ๆ เพื่อให้เข้าใจคณิตศาสตร์เลขฐานสองอย่างถูกต้อง ฉันทำโครงการครึ่งบวกกับลูกสาววัย 12 ปีของฉันในขณะที่เราวิ่งออกจากห้องไปบนเขียงหั่นขนม - เธอเดินไปที่ "สร้าง" มันใน Minecraft เธอ "ได้รับ" แนวคิดของประตูและเพิ่มบิตซึ่งเป็นจุดรวม
Ron J.

สำหรับสิ่งที่มีค่าเครื่องคิดเลข (ปกติ) ไม่ทำงานภายในเป็นเลขฐานสองและแปลงพวกเขาทำงานโดยตรงใน BCD ชิ้นสี่บิตนั้นเพียงพอสำหรับ ALU (อันที่จริงแล้วเป็นงานดั้งเดิมของ Intel 4004)
Spehro Pefhany

6

นี่คือวิธีที่ฉันทำ

เลือกส่วนประกอบ:

Input Device(ปุ่มกด 4x4 ในกรณีของฉัน 10 คีย์สำหรับตัวเลข 4 ตัวดำเนินการหนึ่งตัวสำหรับ '=' และอีกอันสำหรับ 'รีเซ็ต / รีเฟรช')

Processor(8-bit AVR)

Output device(จอแอลซีดี 16x2)

Power supply(ตัวควบคุม LM7805 พร้อมแบตเตอรี่ 9 โวลต์)

BreadBoard(ทำ PCB หลังจากเริ่มทำงาน)

ฉันเลือกที่จะเขียนโปรแกรมในการประชุม (เพื่อเรียนรู้) เรื่องของการเลือกส่วนบุคคล ฉันใช้ AVR Studio 4 เป็น IDE และโปรแกรมเมอร์ 'ISP' ที่ใช้ lpt ในบ้านสำหรับการกะพริบ hex เป็น AVR

ฉันเขียนไดรเวอร์สำหรับ LCD และปุ่มกด เมื่อสามารถที่จะใช้เข้าและส่งออกผลิตผลเริ่มแยกเลขทศนิยมและผู้ประกอบการแล้วฉันแยกวิเคราะห์การแสดงออกและการอ่านเกี่ยวกับการผูก, Postfix และคำนำหน้าวิธีการ ฉันทำงานของฉันในแอสเซมบลีดังนั้นจึงไม่มี 'ประเภทข้อมูลสนับสนุน FLOAT' และฉันก็ลงมือใช้ประเภทข้อมูลที่กำหนดเองของฉัน (ประเภทข้อมูล BCD ที่ใช้สำหรับการรักษาความแม่นยำทศนิยม 15 หลักมันเสียขนาดใหญ่บน RAM!)

ทั้งหมดนี้เสร็จแล้วและ Voila .. เครื่องคิดเลขของฉันพร้อมแล้ว (ฉันตั้งชื่อ BUB!)

Mine วิ่งที่ 1MHz และสามารถเอาชนะ casio_991MS (ในแง่ของความแม่นยำทศนิยมและการคูณและการหาร)

ฉันหวังว่านี่จะช่วยผู้อื่น


5

คุณสามารถใช้ชุดพัฒนากับทุกสิ่งที่อยู่ในบอร์ดเพื่อให้คุณสามารถมุ่งเน้นไปที่ซอฟต์แวร์ ตัวอย่างเช่นhttp://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=th024858&part=DM240001ชุดนี้มีปุ่ม PIC, LCD และปุ่มน้อย มีส่วนหัวมากมายในการเพิ่มปุ่มเพิ่มเติม ข้อเสียเปรียบอย่างหนึ่งคือ LCD มีขนาดใหญ่กว่านั้นคุณอาจต้องการใช้ในตอนแรก แต่มันจะช่วยให้คุณเริ่มต้นได้อย่างแน่นอน

หากคุณค้นหารอบ ๆ คุณอาจสามารถหาสิ่งที่เล็กกว่า (และราคาถูกกว่า) ที่คุณสามารถเริ่มต้นได้

การใช้ชุดอุปกรณ์เช่นนี้จะช่วยให้เริ่มต้นการเขียนโค้ดของคุณได้ง่ายขึ้นเนื่องจากเป็นตัวอย่างบางส่วนและลบปัญหาของฮาร์ดแวร์ออกเนื่องจากติดตั้งอย่างถูกต้อง ข้อเสียเปรียบอีกประการหนึ่งคือชุดนี้ใช้ภาพระดับสูงซึ่งเกินความจำเป็นสำหรับโครงการเครื่องคิดเลข แต่มันทำให้คุณมีพื้นที่ที่จะเติบโตและดัดแปลงมันในอนาคตเพื่อทำงานอื่น ๆ นอกจากนี้ยังจะให้แผนผังคุณใช้เป็นจุดเริ่มต้นสำหรับการทำบอร์ดของคุณเองในอนาคต


5

บนหิ้งของฉันฉันมี "เครื่องคิดเลขอิเล็กทรอนิกส์" โดย H. Edward Roberts, แก้ไขโดย Forrest M. Mims III 1974

มันเป็นการศึกษาที่ค่อนข้างดีเกี่ยวกับวิธีที่ผู้คนใช้ในการสร้างเครื่องคิดเลขในปี 1974 ภาพถ่ายจำนวนมากเป็นวงจรชีวิตที่สมบูรณ์ของเครื่องคิดเลข MITS ที่ผลิตขึ้นมาจำนวนมาก - ภาพถ่ายของต้นแบบ ตารางร่าง) ชิ้นส่วนแต่ละชิ้นสายการประกอบเครื่องประสานคลื่นและการแก้ไขปัญหา

อาหลายอย่างเปลี่ยนไปตั้งแต่นั้นมา หนังสือของวันนี้มักจะหลีกเลี่ยงการแสดงปาเก็ตตี้สายใหญ่ เครื่องคิดเลขในปัจจุบันหลีกเลี่ยงการใช้แรงดันไฟฟ้าหลักกับ PCB เครื่องคิดเลขโดยตรง

หลายสิ่งยังคงเหมือนเดิม คนมักจะทำปาเก็ตตี้ขนาดใหญ่ของสายไฟในขณะที่ต้นแบบ


3

สำหรับผู้เริ่มคุณควรคิดถึงองค์ประกอบหลักที่คุณต้องการ คุณอาจจำเป็นต้องมีไมโครคอนโทรลเลอร์ปุ่มกดและหน้าจอ LCD เมื่อคุณเลือกส่วนประกอบเหล่านั้นแล้วมันควรจะง่ายเหมือนการพัฒนาเฟิร์มแวร์


รายละเอียดเพิ่มเติมใด ๆ ที่คุณสามารถให้ได้โปรดจำไว้ว่าฉันเป็นมือใหม่ทั้งหมดเมื่อพูดถึงการสร้างอุปกรณ์อิเล็กทรอนิกส์และฉันต้องการท้าทายครั้งนี้เป็นครั้งแรกของฉัน ด้วยข้อมูลที่คุณให้ไว้ข้างต้นมันเป็นการเริ่มต้นที่ดี แต่ฉันไม่รู้ว่าฉันต้องการไมโครคอนโทรลเลอร์ นอกจากนี้วิธีการพัฒนาเฟิร์มแวร์? คุณเขียนเฟิร์มแวร์ใน C และอัปโหลดไปยังเฟิร์มแวร์หรือคุณต้องเขียนมันใน ASM?
ปรัชญา

คุณสามารถให้เว็บไซต์ที่ดีที่ขายอุปกรณ์อิเล็กทรอนิกส์ในอัตราที่ไม่แพงมากสำหรับมือสมัครเล่นหรือไม่? ขอบคุณสำหรับการสนับสนุนของคุณ!
ปรัชญา

ไมโครคอนโทรเลอร์มือใหม่สองคนคือ PIC และ AVR มีคอมไพเลอร์ C สำหรับอุปกรณ์ทั้งสองนี้ ไมโครคอนโทรลเลอร์ที่เรียบง่ายจะทำงานให้กับโครงการของคุณตราบใดที่มีหมุดอินพุต / เอาท์พุตเพียงพอสำหรับเชื่อมต่อกับปุ่มกดและจอแอลซีดีของคุณ เว็บไซต์ที่ดีสำหรับงานอดิเรกอิเล็กทรอนิกส์คือSparkFun
Ryan

2
@KerxPhilo: ใช่ส่วนใหญ่ของคนที่ฝังระบบเขียนเฟิร์มใน C. Ladyada มีดีบทเรียนเกี่ยวกับวิธีการเขียนเฟิร์มใน C และอัปโหลดไปยังไมโครคอนโทรลเลอร์เช่นเดียวกับบทเรียนในการเชื่อมต่อจอแอลซีดีและแสดงสิ่งที่อยู่ในนั้น
davidcary

3

ฉันเชื่อว่านี่เป็นโครงการการเรียนรู้ที่ดีครั้งแรก แต่มันไม่สำคัญและคุณจะต้องเรียนรู้ไปพร้อม ๆ กันและต้องอดทนเพราะโครงการนี้มีโครงการย่อยจำนวนมากเพื่อจัดการตาม ทาง

อุปสรรคการออกแบบครั้งแรกที่คุณต้องตัดสินใจคือเทคโนโลยีระดับใดที่คุณต้องการจะทำ มีหรือไม่มีไมโครคอนโทรลเลอร์ (ไมโครโพรเซสเซอร์แบบพอเพียงส่วนใหญ่), ตรรกะที่ไม่ต่อเนื่อง (เช่น AND, OR, NOR Gates และ flip-flop) โดยมี / ไม่มีหน่วยคำนวณ (ALU), ตรรกะที่ตั้งโปรแกรมได้ (CPLD, FPGA) ไม่ได้กล่าวถึงหรือพิจารณา สิ่งนี้ควรเป็นสิ่งแรกที่เกี่ยวกับเทคโนโลยีที่ใช้ในการคำนวณการควบคุมอินพุต / เอาต์พุตเป็นการตัดสินใจที่สอง (จอแสดงผล LED เจ็ดเซกเมนต์, จอ LCD) ส่วนใหญ่ได้รับอิทธิพลจากสุนทรียภาพหรือค่าใช้จ่าย

จุดเริ่มต้นที่เป็นประโยชน์อย่างหนึ่งสำหรับการเรียนรู้เกี่ยวกับการคำนวณแบบดิจิทัลคือหนังสือที่เข้าถึงได้ง่ายมากคอมพิวเตอร์ใช้คณิตศาสตร์อย่างไร (ISBN: 0471732788) โดย Clive Maxfield ที่แปลกตา สิ่งนี้เขียนขึ้นที่ "soft" - การเขียนโปรแกรมหรือระดับตรรกะซึ่งคุณจะต้องเข้าใจเพื่อทำการคำนวณจริง

บางคนพูดถึงโครงการuWatch (- micro-Watch ) เป็นตัวอย่างและมีการอ้างอิงทั่วอินเทอร์เน็ตกับวิศวกรไฟฟ้า (หรือนักเรียน EE) ที่สร้างเครื่องคิดเลขของตัวเองในปี 1970 นอกจากนี้ยังมีรายละเอียดเกี่ยวกับการสร้าง FPGA (พีแอลดี) ตามเครื่องคิดเลข

สำหรับมือใหม่ด้านอิเล็กทรอนิกส์ (หรืออุปกรณ์อิเล็กทรอนิกส์ดิจิทัล) ฉันขอแนะนำให้ใช้ไมโครคอนโทรเลอร์เป็นจุดเริ่มต้นในการออกแบบของคุณลองอ่านเว็บไซต์ของหนังสือเล่มนี้เพื่อดูความซับซ้อนในการเขียนโปรแกรม (ไม่มากถ้าคุณมีประสบการณ์การเขียนโปรแกรม) สำหรับไมโครคอนโทรลเลอร์และไปจากที่นั่น


1

นักออกแบบ VisualTFTมีเครื่องคิดเลขหน้าจอสัมผัสที่เรียบง่ายเป็นหนึ่งในตัวอย่าง ซอฟต์แวร์ดังกล่าวสร้างรหัสสำหรับ Mikroelektronika Pascal, Basic และ C compilers สำหรับ AVR, PIC, ARM และ 8051 ไมโครคอนโทรลเลอร์


0

ข้อกำหนดด้านฮาร์ดแวร์

  • ปุ่มกดสำหรับป้อนข้อมูลผู้ใช้
  • จอแอลซีดีสำหรับการแสดงการป้อนข้อมูลและผลของมัน
    ในสินค้าที่มีเครื่องคิดเลขจริงคุณต้องมีจอแอลซีดีที่กำหนดเองสำหรับการแสดงตัวอักษรพิเศษเช่น=, -และM(สำหรับMC , MRและMSการดำเนินงาน) สัญญาณ การออกแบบ LCD แบบกำหนดเองมีค่าใช้จ่ายสูงถึง 3,000 $ แต่จากนั้น LCD ที่ออกแบบขึ้นเองนั้นประหยัดกว่า เนื่องจากโครงการของคุณเป็นเพียงงานอดิเรกฉันขอแนะนำให้คุณใช้ LCD สำหรับวัตถุประสงค์ทั่วไปพร้อมกับคอนโทรลเลอร์ KS0108
  • ไมโครคอนโทรลเลอร์ที่ราคาถูกและไม่โดดเด่น
    คุณต้องการคอนโทรลเลอร์ขั้นพื้นฐานมากเนื่องจากคุณจะต้องทำงานง่ายๆ คุณสามารถใช้ไมโครคอนโทรลเลอร์ PIC ราคาถูก

ขั้นตอนการออกแบบ

  • ขับเคลื่อนจอ LCD ของคุณ
    จัดการขับ LCD ของคุณ เขียนตัวเลขลงบนมัน เขียนอินเตอร์เฟสซอฟต์แวร์ให้
  • ทดสอบปุ่มกดของคุณ
    ทำตามขั้นตอนเดียวกับ LCD ตรวจสอบให้แน่ใจว่าคุณมีซอฟต์แวร์ควบคุมบนแป้นของคุณ
  • เขียนอัลกอริธึมที่ใช้ในการดำเนินการทางคณิตศาสตร์
    ถ้าคุณใช้ไมโครคอนโทรลเลอร์ที่สามารถคูณและหารได้คุณไม่จำเป็นต้องดำเนินการด้วยตัวเอง แต่คุณต้องจ่ายมากขึ้นสำหรับไมโครคอนโทรลเลอร์ในทางกลับกันคุณเรียนรู้น้อยลงและได้รับประสบการณ์ที่น้อยลงระหว่างโครงการของคุณ

หากคุณต้องการที่จะเพิ่มคุณสมบัติทางคณิตศาสตร์ที่สูงขึ้น (เช่นรากตารางไซน์ / โคไซน์คำนวณ ฯลฯ ) คุณจำเป็นต้องใช้ขั้นตอนวิธีการคำนวณที่เกี่ยวข้องโดยใช้วิธีของนิวตันหรือขยายตัวเทย์เลอร์ซีรีส์

มิฉะนั้นจะเป็นโครงการง่ายๆ ความท้าทายหลักของคุณคือการขับ LCD และแป้นพิมพ์หากคุณไม่เคยมีประสบการณ์มาก่อน


ขึ้นอยู่กับระดับความทะเยอทะยานของคน ๆ หนึ่งสามารถใช้รีจิสเตอร์การเปลี่ยนแปลงเล็กน้อยและตรรกะที่แยกออกมาเล็กน้อยพร้อมกับ "ROM" (อาจเป็น EPROM หรือแฟลชขนาน) เพื่อสร้างไมโครคอนโทรลเลอร์ที่หยาบมาก เครื่องคิดเลขอย่างง่ายอาจทำได้โดยใช้ 20 ชิปหรือน้อยกว่านั้นโดยเฉพาะ ถ้าใช้ ROM ตัวใหญ่พอสมควร คำสั่งทั่วไปจะเป็น "เอาท์พุท X บน shift register 1, Y บน shift register 2, ตั้งเอาท์พุท strobe เป็น Z, แล้วดึงคำสั่งถัดไปจากที่อยู่ที่เกิดขึ้นจากการเชื่อมค่าของรีจิสเตอร์บางค่าเข้ากับค่าคงที่ A"
supercat

เราไม่จำเป็นต้องมีวงจรใด ๆ เพื่อทำการเพิ่ม BCD ซึ่งสามารถจัดการได้ภายในโค้ด หากมีการลงทะเบียน shift shift ที่สามารถควบคุมได้แยกกันสองตัวให้เลื่อนล่วงหน้าตามความจำเป็นเพื่อให้ตัวถูกดำเนินการต้นทางและปลายทางนั้นเรียงกันจากนั้นใช้คำสั่งสี่คำสั่งเพื่อให้ CPU เข้าสู่สถานะหนึ่งใน 20 สถานะตามค่าสี่บิต คำสั่งสี่รายการถัดไปสามารถใช้สี่บิตถัดไปจากแต่ละ shift shift ในขณะที่เขียนทับหนึ่งในนั้นด้วยสี่บิตแรกของผลลัพธ์ที่คำนวณ
supercat

ฉันต้องการโต้แย้ง "ข้อกำหนด LCD แบบกำหนดเอง" LCD ของเครื่องคิดเลขให้ลักษณะของสินค้าทุกชิ้นที่มีรูปแบบเพียงไม่กี่แบบเท่านั้น - แบบพิทช์, แบบเรียบง่ายและแบบวิทยาศาสตร์ ภายในตัวเลือกที่ระบุด้านบนจะมีหลายสิบรายการหากไม่นับหลายร้อยรายการซึ่งเทียบเท่ากับการใช้งานแม้ว่าจะมีมิติหรือรูปแบบตัวอักษรแตกต่างกันเล็กน้อย
Chris Stratton

@ChrisStratton: หากต้องการจอแสดงผล 8 หลักที่ไม่มีตัวแจ้งเตือนจะมีชิ้นส่วนที่ไม่ได้วางจำหน่ายซึ่งจะตรงกับคำอธิบายนั้น ฉันไม่คิดว่าฉันเคยเห็นหน้าจอแสดงผลแบบนอกชั้นวางซึ่งเทียบเท่ากับฟังก์ชั่นในเครื่องคิดเลขทั่วไป โปรดทราบว่าเครื่องคิดเลขมีแนวโน้มที่จะใช้การเชื่อมต่อแบบแถบม้าลายซึ่งมีราคาถูกกว่าหมุดในการผลิต แต่ทำงานได้ยากกว่าในโครงการ DIY
supercat

@supercat - LCD ที่ใช้ในเครื่องคิดเลขราคาถูกมักใช้ริบบิ้นที่มีกาวแบบเปิดใช้ความร้อนไม่ใช่แถบม้าลาย และส่วนใหญ่เป็นสินค้าที่ไม่ได้มาตรฐานซึ่งสามารถสับเปลี่ยนระหว่างการผลิตได้
Chris Stratton

0

วิธีที่ง่ายที่สุดในการใช้เครื่องคิดเลขอาจจะเป็นการใช้ไมโครคอนโทรลเลอร์ หากคุณตัดสินใจที่จะไปเส้นทางนั้นขั้นตอนแรกคือการค้นหารหัสบางอย่างเพื่อทำการคำนวณจริง คุณต้องมีโปรแกรมที่ยอมรับตัวถูกดำเนินการและตัวดำเนินการและแยกผลลัพธ์ออกมา โมดูลเครื่องคิดเลขนี้ค่อนข้างง่ายที่เขียนในคควรให้คุณมีความคิดในสิ่งที่จำเป็น มันสามารถเพิ่ม, ลบ, คูณและหารเช่นเดียวกับการดำเนินการระดับบิตและถ้าคุณใช้ Reverse Polish Notation เช่นในเครื่องคิดเลขวิทยาศาสตร์ก็สามารถแก้ปัญหาการแสดงออกย่อยในวงเล็บ ดังนั้นคุณจะอ่านสิ่งที่กดปุ่มรวบรวม "โทเค็น" แต่ละอันในบัฟเฟอร์ที่แปลงตัวเลขใด ๆ ให้เป็นค่าตัวเลขจริงจากนั้นเมื่อคุณได้รับปุ่ม "=" คุณจะป้อนรายการโทเค็นให้เป็นรหัส Eval นี้ซึ่งช่วยลดและแก้ไข การแสดงออกที่เกิดขึ้นในค่าเดียว


0

สำหรับผู้เริ่มต้นนี่คือ BOM ที่แนะนำสำหรับโครงการของคุณ:

  • บอร์ด Arduino Uno หรือ Leonardo 1x ซึ่งมีไมโครคอนโทรลเลอร์ที่จำเป็นต้องใช้
  • HD44780จอแอลซีดี1x ที่ใช้งานง่ายเช่นจอ 16x2 ที่แพร่หลาย
  • ปุ่มกดแบบ 4x4 4x4

สิ่งนี้จะทำให้สามารถสร้างเครื่องคิดเลขพื้นฐานได้

สำหรับวัตถุประสงค์ขั้นสูงเพิ่มเติมนี่คือ BOM ที่แนะนำของฉัน:

  • 1x Arduino Mega 2560 หรือ Arduino Due (โปรแกรมจะมีขนาดใหญ่ในกรณีนี้)
  • ST7920จอแอลซีดีเมทริกซ์แบบ1x ที่รองรับทั้งตัวละครและกราฟิก
  • 1x Shield Arduino Host USB (Mega 2560 เท่านั้นเนื่องจากมีคุณสมบัติโฮสต์ USB ดั้งเดิม) สำหรับแป้นพิมพ์

สิ่งนี้จะช่วยให้คุณสร้างเครื่องคิดเลขกราฟที่ซับซ้อนเช่น TI-83 Plus หรือ TI-nSpire ซีรีส์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.