<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic LCD HELP in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/LCD-HELP/m-p/131595#M1555</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;All&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Does anybody have any example C code to operate an LCD (using a Sunplus SPLC780A1 LCD controller/driver). I am using a 68HC912C32 (32 pin) on a technological arts development board.&lt;/DIV&gt;&lt;DIV&gt;I have been attempting to control the LCD in 8 bit mode though a HC595 shift register but to no avail. I have now reverted to try and&amp;nbsp;control it in 4 bit mode using 6 general purpose ports (port T) for DB4-7&amp;nbsp;and EN and RS.&amp;nbsp;I can't even get the thing to initialise.&lt;/DIV&gt;&lt;DIV&gt;HELP&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Martin&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 06 Apr 2006 17:12:19 GMT</pubDate>
    <dc:creator>marti</dc:creator>
    <dc:date>2006-04-06T17:12:19Z</dc:date>
    <item>
      <title>LCD HELP</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/LCD-HELP/m-p/131595#M1555</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;All&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Does anybody have any example C code to operate an LCD (using a Sunplus SPLC780A1 LCD controller/driver). I am using a 68HC912C32 (32 pin) on a technological arts development board.&lt;/DIV&gt;&lt;DIV&gt;I have been attempting to control the LCD in 8 bit mode though a HC595 shift register but to no avail. I have now reverted to try and&amp;nbsp;control it in 4 bit mode using 6 general purpose ports (port T) for DB4-7&amp;nbsp;and EN and RS.&amp;nbsp;I can't even get the thing to initialise.&lt;/DIV&gt;&lt;DIV&gt;HELP&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Martin&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Apr 2006 17:12:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/LCD-HELP/m-p/131595#M1555</guid>
      <dc:creator>marti</dc:creator>
      <dc:date>2006-04-06T17:12:19Z</dc:date>
    </item>
    <item>
      <title>Re: LCD HELP</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/LCD-HELP/m-p/131596#M1556</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Further to above, I have now gone back to trying to operate the LCD in 8 bit mode using SPI to transfer the data into a hc595 shift register. I am using 2 general purpose ports for enable and reset bits to the LCD, R/W pin is grounded.&lt;/P&gt;&lt;P&gt;The data seems to shifts into the&amp;nbsp;S/R ok but only appears at the output parallel pins if I connect the storage and shift clocks together. Pulsing the master reset has no effect.&amp;nbsp;I cannot get the LCD to even initialize. I have attached the code if anybody can see where I am going wrong I would be eternally greatful.&lt;/P&gt;&lt;P&gt;Martin&amp;nbsp;&lt;/P&gt;&lt;P&gt;Message Edited by marti on &lt;SPAN class="date_text"&gt;04-06-2006&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;08:56 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;#define CMD 0&amp;nbsp;&amp;nbsp;// For command mode RST-low, EN-high&lt;BR /&gt;#define DISP 1&amp;nbsp; // For display mode RST-high, EN-high&lt;BR /&gt;#define EN 0x08&lt;BR /&gt;#define RS 0x04&lt;BR /&gt;#define MR 0x10&lt;BR /&gt;/*--- Port direction and SPI setup ---*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;void SPI_Set(void){&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;DDRM = 0x38; // Set PortM as output&lt;BR /&gt;&amp;nbsp;DDRT = 0x1C;&amp;nbsp; // Set PortT as output&lt;BR /&gt;&amp;nbsp;SPICR1 = 0x50; // Set SPI control register 1&lt;BR /&gt;&amp;nbsp;SPICR2 = 0x0; // Set SPI control register 2&lt;BR /&gt;&amp;nbsp;SPIBR = 0x0; //Set max baud rate&lt;BR /&gt;&amp;nbsp;PTT |= MR;&amp;nbsp; //Master reset for hc595 set high&lt;BR /&gt;}&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;/*--- Delay Code ---*/&lt;BR /&gt;/*--- Needs to be configured to Bus clock, Boot 24Mhz, Run 4Mhz ---*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;void Delay(unsigned int sec, unsigned int mult){&lt;BR /&gt;&amp;nbsp;unsigned int i, j;&lt;BR /&gt;&amp;nbsp;for(i = 0; i &amp;lt; sec; i++){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(j = 0; j &amp;lt; mult; j++){&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;/*-- Routine to send command or character to display --*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;void set_lcd(char n, char reg){&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;unsigned char dummy;&lt;BR /&gt;&amp;nbsp;//First send the byte to the HC595&lt;BR /&gt;&amp;nbsp;if(reg == DISP){ // Command or write?&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PTT |= EN|RS; // Command EN and RS high&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;}else{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PTT |= EN; // Write EN only high&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;SPIDR = n; // Send byte into shift register&lt;BR /&gt;&amp;nbsp;while((SPISR &amp;amp; 0x80) == 0); // Wait for SPI ready SPIF interrupt flag&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;PTT &amp;amp;= ~MR; PTT |= MR;&amp;nbsp; /*Pulse MR to load 595 storage register&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;This doesn't seem to have any effect.&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;Data only latches when&amp;nbsp;shift&amp;nbsp;and storage clocks are connected together*/&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;dummy = SPIDR; //Clear ready bit&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;PTT &amp;amp;= ~(EN|RS); // Tell LCD to do it&lt;BR /&gt;&amp;nbsp;Delay(3, 100); //100uS delay for LCD operation&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;/*---- Main program ---*/&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;void main(void){&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;EnableInterrupts;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;&amp;nbsp;&lt;BR /&gt;SPI_Set(); // Initialize SPI system and serial ports&lt;BR /&gt;Delay(40,1000); //Wait 15mS after power on&lt;BR /&gt;set_lcd(0x30, CMD); //Function set 8 bits&lt;BR /&gt;Delay(10,1000);//wait 4.1mS&lt;BR /&gt;set_lcd(0x30, CMD); //Function set 8 bits&lt;BR /&gt;set_lcd(0x30, CMD); //Function set 8 bits&lt;BR /&gt;set_lcd(0x38, CMD); //Set 8 bit 2 lines&lt;BR /&gt;set_lcd(0xE, CMD); //Display on, Cursor on&lt;BR /&gt;set_lcd(0x6, CMD); //Set Cursor&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="time_text"&gt;for(;&lt;IMG alt=":smileywink:" class="emoticon emoticon-smileywink" id="smileywink" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-wink.gif" title="Smiley Wink" /&gt;{&lt;BR /&gt;set_lcd(0x57, DISP); //display "W"&lt;BR /&gt;set_lcd(0x45, DISP); //display "e"&lt;BR /&gt;}&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Message Edited by marti on &lt;SPAN class="date_text"&gt;04-06-2006&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;08:59 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Apr 2006 20:54:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/LCD-HELP/m-p/131596#M1556</guid>
      <dc:creator>marti</dc:creator>
      <dc:date>2006-04-06T20:54:59Z</dc:date>
    </item>
    <item>
      <title>Re: LCD HELP</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/LCD-HELP/m-p/131597#M1557</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;P&gt;Here is the code I use to access a AD5262 Digital Pot. Maybe it will help you out to see how I got it working. Also depending on the SPI port you are using you may need to look in the PIM(Port Integration Module) and connect the SPI(x) to the pins as needed. Sometimes they default to other functions unless configured using the PIM Registers.&lt;/P&gt;&lt;P&gt;In the code below I have&amp;nbsp;two AD5262's on the same SPI bus so I use ChipSelect to determine which Enable lines to use.&lt;/P&gt;&lt;P&gt;Also here are the HIBYTE and LOWBYTE MAcros used in the code.&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Returns the low byte of the word */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;#define LOBYTE(w) ((BYTE)(w))&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Returns the high byte of the word */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;#define HIBYTE(w) ((BYTE)(((WORD)(w) &amp;gt;&amp;gt; 8) &amp;amp; 0xFF))&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;void InitializeAD5262(void) {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* PortP bit3 ON */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;PTP_PTP3 = 1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* PortM bit0 ON */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;PTM_PTM0 = 1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Configure PORTM outputs */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;DDRM_DDRM0 = 1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Configure PORTP outputs */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;DDRP |= 0x0E;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Set the SPI baud rate */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;SPI1BR = 0x0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* SPI on, master mode, CPHA = 0 */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;SPI1CR1 = 80;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;void AD5262Write(UINT8 ChipSelect, UINT8 Rdac, UINT8 Data) {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Local variables */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;UINT8 Temp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;UINT16 Timeout;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;UINT16 Command = Data;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Set address bit (16) */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;if(Rdac)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Command |= 256;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* SS pin low */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;if(ChipSelect)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;PTM_PTM0 = 0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;else&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;PTP_PTP3 = 0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Make sure transmit buffer is empty */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;while(!SPI1SR_SPTEF) {};&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Write Address to SPI Data Reg */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;SPI1DR = HIBYTE(Command);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Wait for transfer complete flag */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Timeout = 250;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;while(!SPI1SR_SPIF) {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;if(!(Timeout--))&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;return;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Read SPI Data Reg. */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Temp = SPI1DR;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Make sure transmit buffer is empty */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;while(!SPI1SR_SPTEF) {};&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Write Address to SPI Data Reg */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;SPI1DR = LOBYTE(Command);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Wait for transfer complete flag */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Timeout = 250;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;while(!SPI1SR_SPIF) {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;if(!(Timeout--))&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;return;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* Read SPI Data Reg. */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Temp = SPI1DR;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;/* SS pin high */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;if(ChipSelect)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;PTM_PTM0 = 1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;else&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;PTP_PTP3 = 1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Apr 2006 00:43:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/LCD-HELP/m-p/131597#M1557</guid>
      <dc:creator>Technoman64</dc:creator>
      <dc:date>2006-04-07T00:43:13Z</dc:date>
    </item>
  </channel>
</rss>

