Opmerkingen aan het begin van het artikel: Dit artikel is slechts een specifieke inleiding tot de werking van 12864. Het is alleen voor nieuwkomers die zojuist contact hebben opgenomen met 12864. Bekijk het alstublieft. Het schrijven van het artikel is relatief losjes. Het wordt aanbevolen dat beginners eerst de handleiding 12864 en de Engelse handleiding van de besturingsstuurprogramma ST7920 raadplegen. , Lees dit artikel opnieuw nadat u een eerste begrip heeft, u zult een dieper begrip hebben. Het wordt ten zeerste aanbevolen om de ST7920 Engelse handleiding zorgvuldig te lezen! Er is een gedetailleerde introductie in de details, en het meeste van de Chinese 12864 is ook vertaald uit het Chinees.
Dit artikel is verdeeld in drie stappen om het interne bronprincipe van 12864, een gedetailleerde uitleg van de instructieset en toepassingsvoorbeelden te introduceren.
Er zijn vier soorten bewerkingen voor 12864:
1). Lees de bezetstatus (de inhoud van het pointeradres wordt tegelijkertijd gelezen). Na de initialisatie moet elke lees- en schrijfactie naar de 12864 bezetdetectie zijn. 2) Schrijf commando's: U kunt de commandolijst voor alle commando's controleren, en het gedetailleerde gebruik van de commando's zal later worden uitgelegd. Het schrijfadres is ook het schrijfcommando. 3) Gegevens schrijven: De operatieobjecten zijn DDRAM, CGRAM, GDRAM.
4), lees gegevens: het doel van de operatie is ook DDRAM, CGRAM, GDRAM.

Voor de studie van 12864 moet u eerst de interne bronnen begrijpen. Als u weet wat erin zit, kunt u het gemakkelijker gebruiken.
Introduceer eerst kort enkele Engelse namen:
DDRAM: (Data DisplayRam), gegevensweergave RAM, wat u erin schrijft, wordt weergegeven wat het scherm zal weergeven.
CGROM: (CharacterGeneration ROM), ROM voor het genereren van tekens. Binnenin bevinden zich de lettertypen voor het opslaan van Chinese karakters, ook wel bekend als de Chinese karakterbibliotheek. De coderingsmethoden zijn GB2312 (Vereenvoudigd Chinees) en BIG5 (Traditioneel Chinees). De auteur gebruikt de QC12864B van Yusong Electronics en de uitleg is gebaseerd op dit voorbeeld. CGRAM: (CharacterGeneration RAM), karaktergeneratie RAM, 12864 biedt 64x2B CGRAM, dat kan worden gebruikt voor door de gebruiker gedefinieerde 4 16×16 karakters, elk karakter neemt 32 bytes in beslag.
GDRAM: (Grafische DisplayRAM): Grafische display RAM. Dit gebied wordt gebruikt om te tekenen. Hetzelfde geldt: wat er ook in wordt geschreven, het scherm zal weergeven wat er wordt weergegeven. Het verschil tussen DDRAM en DDRAM is dat de gegevens die naar DDRAM worden geschreven, de tekencodering en tekenweergave zijn eerst te vinden in de CGROM en vervolgens toegewezen aan het scherm, en bij het schrijven van gegevens naar GDRAM, gebruikt de dot-matrixinformatie van de afbeeldingen 1 bit om de weergave op te slaan of niet.
HCGROM: (ROM voor het genereren van tekens op halve hoogte): tekengenerator op halve breedte, dit zijn letters en cijfers, dat wil zeggen ASCII-code. Wat betreft ICONRAM (IRAM): het lijkt erop dat 12864 die momenteel op de markt is deze functie niet heeft, en ik heb hem niet gevonden. Applicatie-informatie, dus ik zal het hier niet introduceren.
Hieronder zullen we beginnen met een uitleg van 12864 rond de lijst met hierboven genoemde bronnen: DDRAM:
De 12864 die door de auteur wordt gebruikt, heeft 4 rijen x 32 bytes DDRAM-ruimte binnenin. Maar op een bepaald moment kan het scherm maar 2 regels x 32 bytes aan ruimte weergeven, dus hoe zit het met de resterende ruimte? Ze kunnen worden gebruikt voor cache en deze spaties kunnen van pas komen bij het implementeren van scrolling-weergave.
De DDRAM-structuur is als volgt:
80H, 81H, 82H, 83H, 84H, 85H, 86H, 87H, 88H, 89H, 8AH, 8BH, 8CH, 8DH, 8EH, 8FH90H, 91H, 92H, 93H, 94H, 95H, 96H, 97H , 98H, 99H, 9AH, 9BH, 9CH, 9DH, 9EH, 9FHAOH, A1H, A2H, A3H, A4H, A5H, A6H, A7H, A8H, A9H, AAH, ABH, ACH, ADH, AEH, AFHBOH, B1H, B2H , B3H, B4H, B5H, B6H, B7H, B8H, B9H, BAH, BBH, BCH, BDH, BEH, BFH
De overeenkomst tussen het adres en de schermweergave is als volgt:
Rij-80H, 81H, 82H, 83H, 84H, 85H, 86H, 87H Tweede rij: 90H, 91H, 92H, 93H, 94H, 95H, 96H, 97H Derde rij: 88H, 89H, 8AH, 8BH , 8CH, 8DH, 8EH, 8FH Vierde rij: 98H, 99H, 9AH, 9BH, 9CH, 9DH, 9EH, 9FH
Opmerking: de gegevens in het rode gedeelte worden weergegeven op de bovenste helft van het scherm en de gegevens in het groene gedeelte worden weergegeven op de onderste helft van het scherm. Over het algemeen gebruiken we de ruimte van de bovenstaande twee regels om tekens weer te geven, dat wil zeggen 80H~8FH, 90H~9FH. De ruimte van elk adres is 2 bytes, wat 1 woord is, dus het kan worden gebruikt om tekens op te slaan. De totale coderingsruimte is 128 bytes. Omdat de codering van elk Chinees karakter 2 bytes is, moet elk adres 2 bytes gebruiken om een Chinees karakter op te slaan. Het is natuurlijk ook mogelijk om deze 2 bytes uit elkaar te gebruiken, dat wil zeggen dat er 2 tekens op halve breedte worden weergegeven.
De gegevens die zijn opgeslagen in DDRAM zijn allemaal tekencodes en de codes die kunnen worden geschreven, zijn ASCII-code, GB2312-code en BlG5-code. De 12864 lettertypebibliotheek die door de auteur wordt gebruikt, lijkt onvolledig, en het"nummer" van de tekens kunnen niet worden weergegeven, maar andere tekens worden weergegeven. Als u een lang artikel met Chinese tekens weergeeft, is het voordeel niet geschikt.
DDRAM-gegevens lezen en schrijven:
Alle gegevens die worden gelezen en geschreven, moeten eerst het adres verzenden en vervolgens lezen en schrijven. Wanneer u gegevens naar DDRAM schrijft, zorg er dan voor dat deze zich in de basisinstructieset bevinden (open met instructie 0x30), schrijf vervolgens het adres en schrijf vervolgens twee bytes aan gegevens achter elkaar. Schrijf bij het lezen van gegevens eerst het adres onder de basisinstructieset, lees het dan opnieuw en lees dan continu 2 bytes aan gegevens. Na het lezen is de adreswijzer automatisch één en springt naar het volgende woord. Als je de volgende moet lezen De inhoud van het woord hoeft maar 2 bytes aan data continu te lezen. De valse lezing hier moet worden opgemerkt. Niet alleen het lezen van CGRAM vereist een valse lezing, maar het lezen van andere GDRAM en DDRAM vereist eerst een valse lezing, en dan is de daaropvolgende lezing een echte lezing. De neplezing is om de gegevens één keer te lezen, maar de gegevens worden niet opgeslagen. Dat wil zeggen, de gegevens die voor het eerst worden gelezen na het verzenden van het adres zijn fout en de gegevens daarna zijn correct. (dummy betekent neplezing)

De dingen die moeten worden uitgelegd over de opslag van de code in DDRAM zijn als volgt:
1) Elke keer dat de operatie-eenheid van DDRAM één woord is, dat wil zeggen 2 bytes. Wanneer u gegevens naar DDRAM schrijft, schrijft u eerst het adres en verzendt u vervolgens continu 2 bytes aan gegevens en verzendt u eerst het hoge woord. De gegevens van de sectie, daarna worden de gegevens van de lage byte verzonden. Hetzelfde geldt voor het lezen van gegevens. Schrijf eerst het adres, lees dan de high-byte-gegevens en lees vervolgens de low-byte-gegevens (let op valse lezing bij het lezen van gegevens).
2). Als u ASCII-code tekens op halve breedte weergeeft, stuur dan 2 bytes ASCII-code naar elk adres en er worden 2 tekens op halve breedte weergegeven die overeenkomen met de positie op het scherm. De linker is het high-byte-teken en de rechter is een low-byte-teken.
3). Bij het weergeven van Chinese karakters moeten de twee bytes Chinese karaktercodering in dezelfde adresruimte worden opgeslagen en kunnen niet in twee adressen afzonderlijk worden opgeslagen, anders zullen de weergegeven karakters niet de karakters zijn die u wilt. De 2 bytes in elk woord worden automatisch gecombineerd om het lettertype te vinden en de tekens weer te geven. Als we daarom de 2-byte-codering van een Chinees teken naar een adres schrijven, wordt het teken correct weergegeven. De hoge byte van de codering wordt opgeslagen in de lage byte van het vorige adres en de lage byte van de codering wordt opgeslagen in het hoge woord van het volgende adres. Sectie, uiteraard zullen ze niet combineren om het lettertype te vinden, maar om het lettertype te vinden in combinatie met de overeenkomstige byte van elk adres.

4). Doordat de controller ST7920 4 custom karakters levert, kunnen deze 4 custom karakters ook volledig worden weergegeven. Op dezelfde manier zijn deze 4 aangepaste tekens ook gecodeerd, maar de codering van deze 4 tekens. Ze zijn vast, ze zijn respectievelijk 0000H, 0002HO004H en 0006H. Zoals hieronder getoond:

De bovenstaande afbeelding tekent gewoon de CGRAM-ruimte van 2 tekens en er zullen in de toekomst 2 tekens zijn. Het is te zien dat elk teken 16 rijen en 16 kolommen heeft en dat elke rij 2 bytes gebruikt. Daarom is de ruimte die door een teken wordt ingenomen 32 bytes en het adres 6 bits. De adressen van de 4 karakters zijn: O0H~ OFH,
10H~1FH, 20H~2FH, 30H~3FH. De codering gebruikt 2 bytes. Het is te zien dat 2 bits willekeurig zijn, wat aangeeft dat er meerdere coderingen voor deze 4 karakters kunnen zijn, maar we gebruiken vaak de 4 hierboven genoemde coderingen.
CGRAM: (gegevens lezen en schrijven)
De structuur van CGRAM is hierboven weergegeven. Hier voegen we wat inhoud toe om CGRAM te lezen en te schrijven. Schrijf voor het lezen en schrijven eerst het adres op. De instructie om CGRAM te schrijven is het Ox4O{{1}}-adres. Maar als we het adres schrijven, hoeven we alleen het adres van de eerste regel te schrijven. Het eerste teken is bijvoorbeeld Ox40-OOH en schrijft vervolgens continu 2 bytes aan gegevens, waarna de adresaanwijzer automatisch met één wordt verhoogd en naar de volgende regel springt. Adres, en schrijf vervolgens 2 bytes aan gegevens. Programmeren is eigenlijk om het adres te schrijven en vervolgens 32 bytes aan gegevens continu te schrijven. Om gegevens te lezen, schrijft u eerst het eerste adres, leest u vervolgens een keer ten onrechte en leest u vervolgens 32 bytes aan gegevens continu.
GDRAM: (grafisch display RAM)
De ruimtelijke structuur van teken-RAM is weergegeven in onderstaande figuur:

