INFO - FAQ - CC2-Forum - CCPro-Forum |
Guten Tag zusammen, nach langem suchen im Internet und auf unendlich vielen Hotlines müssen wir jetzt leider endgültig feststellen, dass wir an dieser stelle nicht weiterkommen. Es geht um folgendes: Wir, also drei meiner Kollegen und ich, sind in Mönchengladbach auf der Fachhochschule für Technik und Medien und streben hier unseren Elektrotechnikertitel an. Momentan haben wir die so genannten Projektwochen, d.h. wir selbst haben uns eine Problemstellung gesucht, die es zu lösen gilt. Wir nennen unser Thema „Entwicklung und Aufbau eines Medikamenten-Einnahme-Erinnerungs-Timer“ kurz MEET. Wir wollen also ein Batteriebetriebenes Handgerät entwickeln mit der M I Unit als Herzstück. Ein Arzt soll später über eine Visual Basic 6.0 Oberfläche die Möglichkeit haben: 1. Einen Medikamentennamen (z.B. „Hustentropfen“) 2. Eine Menge (z.B. „3“) 3. Eine Einheit (z.B. „ml“) 4. Eine Einnahme Empfehlung (z.B. „mit Wasser verdünnt einnehmen“) 5. Eine Uhrzeit zu der das Medikament eingenommen werden soll (z.B. „14.00h“) 6. Ein Startdatum ab wann das Medikament zu ersten mal eingenommen wird (z.B. „22.02.2005“) und 7. Einen Intervall (z.B. ab Startdatum „täglich“ oder „alle zwei Tage“….) auf den Mikrokontroller zu schicken und zu speichern. Der Kontroller soll dann die mit der DCF-77 empfangene Uhrzeit mit der vom Arzt angegebenen Uhrzeit und Datum vergleichen und bei Übereinstimmung die Punkte 1 bis 4 auf das Vierzeilige Display ausgeben. Hier kommt unser Problem: Wie bekommen wir die Die Punkte 1 – 6 in dem EEPROM des Controllers im laufenden Betrieb als Zeichenketten so gespeichert, das einzelne Teile z.B. die Uhrzeit ausgelesen werden können um sie zu vergleichen um dann einzelne Teile wie z.B. Med.Name, Menge, Einheit, Empfehlung passend zu der richtigen Uhrzeit ausgegeben werden können auch wenn mehrere dieser Punkte 1 – 6 vorhanden sind ( Meist gilt es ja mehrere Medikamente zu verschiedenen Zeiten einzunehmen ). Da wir dazu die genauen Angaben der Speicheradressen der einzelnen String angeben müssten ist diese Problem wahrscheinlich ja nur über die Assemblerprogrammierung möglich. (Vorschläge mit C-Control währen noch lieber) Den passenden Assembler der dem Buch mit der Bestellnummer Conrad : 919179 beiliegt ist laut Aussagen mehrerer ihrer Kollegen nicht mehr erhältlich! Bitte schicken sie uns Lösungsansätze oder Lösungen per Email zu! Michael.Erkes@t-online.de; Micha2010@freenet.de; Herrrossy1@gmx.de; Cruecke@web.de Das Fach Projektarbeit wird zu einer eigenen Abschluss - Zeugnisnote zum Techniker und ist somit sehr wichtig für uns. Wir müssen bis Mitte nächster Woche damit fertig sein. Würden uns über schnelle Antworten und Lösungsvorschläge freuen, da wir unter starken Zeitdruck stehen! Mit freundlichen Grüßen Michael E. Rainer O. Christian R. Ronald G. ' *** Daten-Definition *** define lcd_buf byte define lcd_param byte define daten byte define position byte define light port[2] light=on ' *** Definition LCD-Ports *** define lcd_port byteport[2] define lcd_rs port[14] define lcd_rw port[13] define lcd_e port[15] '*** ASCII-Codes *** define A_ &H41 define B_ &H42 define C_ &H43 define D_ &H44 define E_ &H45 define F_ &H46 define G_ &H47 define H_ &H48 define I_ &H49 define J_ &H4A define K_ &H4B define L_ &H4C define M_ &H4D define N_ &H4E define O_ &H4F define P_ &H50 define Q_ &H51 define R_ &H52 define S_ &H53 define T_ &H54 define U_ &H55 define V_ &H56 define W_ &H57 define X_ &H58 define Y_ &H59 define Z_ &H5A define ka_ &H61 define kb_ &H62 define kc_ &H63 define kd_ &H64 define ke_ &H65 define kf_ &H66 define kg_ &H67 define kh_ &H68 define ki_ &H69 define kj_ &H6A define kk_ &H6B define kl_ &H6C define km_ &H6D define kn_ &H6E define ko_ &H6F define kp_ &H70 define kq_ &H71 define kr_ &H72 define ks_ &H73 define kt_ &H74 define ku_ &H75 define kv_ &H76 define kw_ &H77 define kx_ &H78 define ky_ &H79 define kz_ &H7A define A1_ &H31 define A2_ &H32 define A3_ &H33 define A4_ &H34 define A5_ &H35 define A6_ &H36 define A7_ &H37 define A8_ &H38 define A9_ &H39 define LEERZ &H20 define MINUS &H2D define NULL &H30 define GLEICH &H3D define DOPPELPUNKT &H3A define PUNKT &H2E define KOMMA &H2C define FRAGEZ &H3F '*** Programmoperationen *** GoSub LCD_INIT #loop position = 0 lcd_param = 1: GoSub LCD_GOTOLINE lcd_param = Null + Day / 10: GoSub LCD_WRITECHAR lcd_param = Null + Day Mod 10: GoSub LCD_WRITECHAR lcd_param = PUNKT: GoSub LCD_WRITECHAR lcd_param = Null + Month / 10: GoSub LCD_WRITECHAR lcd_param = Null + Month Mod 10: GoSub LCD_WRITECHAR lcd_param = PUNKT: GoSub LCD_WRITECHAR lcd_param = Null + Year / 10: GoSub LCD_WRITECHAR lcd_param = Null + Year Mod 10: GoSub LCD_WRITECHAR lcd_param = leerz: GoSub LCD_WRITECHAR lcd_param = leerz: GoSub LCD_WRITECHAR lcd_param = leerz: GoSub LCD_WRITECHAR lcd_param = leerz: GoSub LCD_WRITECHAR lcd_param = leerz: GoSub LCD_WRITECHAR lcd_param = leerz: GoSub LCD_WRITECHAR lcd_param = Null + Hour / 10: GoSub LCD_WRITECHAR lcd_param = Null + Hour Mod 10: GoSub LCD_WRITECHAR lcd_param = doppelpunkt: GoSub LCD_WRITECHAR lcd_param = Null + Minute / 10: GoSub LCD_WRITECHAR lcd_param = Null + Minute Mod 10: GoSub LCD_WRITECHAR lcd_param = 2: GoSub LCD_GOTOLINE lcd_param = M_: GoSub LCD_WRITECHAR lcd_param = e_: GoSub LCD_WRITECHAR lcd_param = d_: GoSub LCD_WRITECHAR lcd_param = i_: GoSub LCD_WRITECHAR lcd_param = k_: GoSub LCD_WRITECHAR lcd_param = a_: GoSub LCD_WRITECHAR lcd_param = m_: GoSub LCD_WRITECHAR lcd_param = e_: GoSub LCD_WRITECHAR lcd_param = n_: GoSub LCD_WRITECHAR lcd_param = t_: GoSub LCD_WRITECHAR lcd_param = doppelpunkt: GoSub LCD_WRITECHAR lcd_param = 4: GoSub LCD_GOTOLINE lcd_param = D_: GoSub LCD_WRITECHAR lcd_param = o_: GoSub LCD_WRITECHAR lcd_param = s_: GoSub LCD_WRITECHAR lcd_param = i_: GoSub LCD_WRITECHAR lcd_param = s_: GoSub LCD_WRITECHAR lcd_param = doppelpunkt: GoSub LCD_WRITECHAR '******** Eingabe *************** '************************************************************************************************************* #init1 lcd_param = 3: GoSub LCD_GOTOLINE GoTo eingabe1 #eingabe1 baud r1200 get daten ' An dieser Stelle soll nicht das von Vicual Basic 6 position = position + 1 ' eingegebene Zeichen/Wort (hier ein bestimmtes Medikament) If position = &H15 Then GoTo posi ' auf dem Display erscheinen sondern sollte im EEPROM If daten = leerz Then GoTo init2 ' gespeichert und zu einer gewissen Uhrzeit ausgegeben. werden) lcd_param = daten: GoSub LCD_WRITECHAR ' Geht das nur über Assembler??? Und wenn ja - wie??? GoTo eingabe1 ' Vielen Dank im Voraus. #init2 lcd_param = 4: GoSub zeile4 GoTo eingabe2 #eingabe2 baud r1200 get daten position = position + 1 if position=&h0e then goto loop if daten = leerz then goto loop lcd_param = daten: GoSub LCD_WRITECHAR GoTo eingabe2 #zeile4 If lcd_param = 4 Then lcd_param = &HE6 GoTo LCD_WRITECMD #posi position = 0 GoTo init2 '****************************************************************************************************************** '*** LCD_Interface *** #LCD_INIT ' alle ports 0 lcd_port = OFF ' 8-Bit-Modus aktivieren lcd_param = &H34: GoSub LCD_WRITECMD ' mit 8-Bit-Command in 4-Bit-Modus umschalten lcd_port=&B00000010 tog lcd_e tog lcd_e ' ab jetzt 4-Bit-Modus lcd_param = &H9: GoSub LCD_WRITECMD ' Umstellung auf 4 Zeilen Modus lcd_param = &H28: GoSub LCD_WRITECMD lcd_param = &HC: GoSub LCD_WRITECMD ' Display loeschen #LCD_CLS lcd_param = &H2: GoSub LCD_WRITECMD lcd_param = &H1: GoSub LCD_WRITECMD Return ' Zeilenwechsel #LCD_GOTOLINE If lcd_param = 1 Then lcd_param = &H80 If lcd_param = 2 Then lcd_param = &H94 If lcd_param = 3 Then lcd_param = &HC0 If lcd_param = 4 Then lcd_param = &HD4 GoTo LCD_WRITECMD ' LCD-Kommando #LCD_WRITECMD lcd_buf = OFF GoTo LCD_WRITE ' Zeichenausgabe #LCD_WRITECHAR lcd_buf = &B00100000 ' Kommando oder Zeichen an Display senden #LCD_WRITE lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble tog lcd_e tog lcd_e lcd_port = lcd_buf Or (lcd_param And &HF) ' Lo-Nibble tog lcd_e tog lcd_e Return |
Antwort schreiben |