Files

228 lines
8.9 KiB
C
Raw Permalink Normal View History

2026-06-12 02:55:04 -07:00
/*!
* @defgroup ST7735
* @brief ST7735 LCD
<table>
<caption id="ArabicAdafruitLCDpins">Adafruit ST7735R pins </caption>
<tr><th>Pin <th>Connection <th>Description
<tr><td>10<td>+3.3<td>Backlight
<tr><td>9 <td>nc <td>SPI1 MISO (used for SDC)
<tr><td>8 <td>PB9 <td>SPI1 SCLK clock out
<tr><td>7 <td>PB8 <td>SPI1 PICO data out
<tr><td>6 <td>PB6 <td>SPI1 CS0=TFT_CS
<tr><td>5 <td>nc <td>CARD_CS (used for SDC)
<tr><td>4 <td>PA13<td>Data/Command(GPIO), high for data, low for command
<tr><td>3 <td>PB15<td>RESET, low to reset, (GPIO)
<tr><td>2 <td>+3.3<td>VCC
<tr><td>1 <td>Gnd <td>ground
</table>
<table>
<caption id="Arabicwidehkpins">wide.hk ST7735R with ADXL345 accelerometer pins </caption>
<tr><th>Pin<th>Connection
<tr><td>VCC <td> +3.3 V
<tr><td>GND <td> Ground
<tr><td>!SCL <td> SPI1 SCLK: PB9 clock
<tr><td>!SDA <td> SPI1 PICO: PB8 MOSI SPI data from microcontroller to TFT or SDC
<tr><td>DC <td> GPIO PA13 TFT data/command
<tr><td>RES <td> GPIO PB15 TFT reset
<tr><td>CS <td> SPI1 CS0: PB6 TFT_CS, active low to enable TFT
<tr><td>*CS <td> (NC) SDC_CS, active low to enable SDC
<tr><td>MISO <td> (NC) MISO SPI data from SDC to microcontroller
<tr><td>SDA <td> (NC) I2C data for ADXL345 accelerometer
<tr><td>SCL <td> (NC) I2C clock for ADXL345 accelerometer
<tr><td>SDO <td> (NC) I2C alternate address for ADXL345 accelerometer
<tr><td>Backlight + - Light, backlight connected to +3.3 V
</table>
<table>
<caption id="Arabicwidehkpins335">wide.hk ST7735R with ADXL335 accelerometer pins </caption>
<tr><th>Pin<th>Connection
<tr><td>VCC <td> +3.3 V
<tr><td>GND <td> Ground
/<tr><td>!SCL<td> SPI1 SCLK: PB9
<tr><td>!SDA <td> SPI1 PICO: PB8 MOSI SPI data from microcontroller to TFT or SDC
<tr><td>DC <td> GPIO PA13 TFT data/command
<tr><td>RES <td> GPIO PB15 TFT reset
<tr><td>CS <td> SPI1 CS0: PB6 TFT_CS, active low to enable TFT
<tr><td>*CS <td> (NC) SDC_CS, active low to enable SDC
<tr><td>MISO <td> (NC) MISO SPI data from SDC to microcontroller
<tr><td>X<td> (NC) analog input X-axis from ADXL335 accelerometer
<tr><td>Y<td> (NC) analog input Y-axis from ADXL335 accelerometer
<tr><td>Z<td> (NC) analog input Z-axis from ADXL335 accelerometer
<tr><td>Backlight + <td> Light, backlight connected to +3.3 V
</table>
<table>
<caption id="ArabicHiLetgopins">HiLetgo ST7735 TFT and SDC pins </caption>
<tr><th>signal<th>Pin<th>Connection
<tr><td>LED- <td>16<td>TFT, to ground
<tr><td>LED+ <td>15<td>TFT, to +3.3 V
<tr><td>SD_CS <td>14<td>SDC, to chip select
<tr><td>MOSI <td>13<td>SDC, to MOSI
<tr><td>MISO <td>12<td>SDC, to MISO
<tr><td>SCK <td>11<td>SDC, to serial clock
<tr><td>CS <td>10<td>TFT, to PB6 SPI1 CS0
<tr><td>SCL <td> 9<td>TFT, to PB9 SPI1 SCLK
<tr><td>SDA <td> 8<td>TFT, to PB8 MOSI SPI1 PICO
<tr><td>A0 <td> 7<td>TFT, to PA13 Data/Command, high for data, low for command
<tr><td>RESET <td> 6<td>TFT, to PB15 reset (GPIO), low to reset
<tr><td>NC <td>3,4,5<td>not connected
<tr><td>VCC <td> 2<td>to +3.3 V
<tr><td>GND <td> 1<td>to ground
</table>
<table>
<caption id="ArabicTyenazapins">Tyenaza Tyenazaqhf72mi9s3 pins </caption>
<tr><th>signal<th>Pin<th>Connection
<tr><td>LED <td>8<td> to +3.3 V
<tr><td>SCK <td>7<td>SCLK to PB9 SPI1 SCLK
<tr><td>SDA <td>6<td>MOSI, to PB8 SPI1 PICO
<tr><td>A0 <td>5<td>Data/Command to PA13 (GPIO), high for data, low for command
<tr><td>RESET <td>4<td>to PB15 (GPIO), low to reset
<tr><td>CS <td>3<td>to PB6 SPI1 CS0:
<tr><td>Gnd <td>2<td>to ground
<tr><td>VCC <td>1<td>to +3.3 V
</table>
* @{*/
/**
* @file Arabic.h
* @brief Arabic output to LCD
* @details Arabic character/string output to ST7735R display<br>
* @version ECE319K v1.0
* @author Amina Meddad and Jonathan Valvano
* @copyright Copyright 2024 by Jonathan W. Valvano, valvano@mail.utexas.edu,
* @warning AS-IS
* @note For more information see http://users.ece.utexas.edu/~valvano/
* @date August 14, 2024
<table>
<caption id="ArabicAdafruitLCDpins2">Adafruit ST7735R pins </caption>
<tr><th>Pin <th>Connection <th>Description
<tr><td>10<td>+3.3<td>Backlight
<tr><td>9 <td>nc <td>SPI1 MISO (used for SDC)
<tr><td>8 <td>PB9 <td>SPI1 SCLK clock out
<tr><td>7 <td>PB8 <td>SPI1 PICO data out
<tr><td>6 <td>PB6 <td>SPI1 CS0=TFT_CS
<tr><td>5 <td>nc <td>CARD_CS (used for SDC)
<tr><td>4 <td>PA13<td>Data/Command(GPIO), high for data, low for command
<tr><td>3 <td>PB15<td>RESET, low to reset, (GPIO)
<tr><td>2 <td>+3.3<td>VCC
<tr><td>1 <td>Gnd <td>ground
</table>
<table>
<caption id="Arabicwidehkpins2">wide.hk ST7735R with ADXL345 accelerometer pins </caption>
<tr><th>Pin<th>Connection
<tr><td>VCC <td> +3.3 V
<tr><td>GND <td> Ground
<tr><td>!SCL <td> SPI1 SCLK: PB9 clock
<tr><td>!SDA <td> SPI1 PICO: PB8 MOSI SPI data from microcontroller to TFT or SDC
<tr><td>DC <td> GPIO PA13 TFT data/command
<tr><td>RES <td> GPIO PB15 TFT reset
<tr><td>CS <td> SPI1 CS0: PB6 TFT_CS, active low to enable TFT
<tr><td>*CS <td> (NC) SDC_CS, active low to enable SDC
<tr><td>MISO <td> (NC) MISO SPI data from SDC to microcontroller
<tr><td>SDA <td> (NC) I2C data for ADXL345 accelerometer
<tr><td>SCL <td> (NC) I2C clock for ADXL345 accelerometer
<tr><td>SDO <td> (NC) I2C alternate address for ADXL345 accelerometer
<tr><td>Backlight + - Light, backlight connected to +3.3 V
</table>
<table>
<caption id="Arabicwidehkpins3352">wide.hk ST7735R with ADXL335 accelerometer pins </caption>
<tr><th>Pin<th>Connection
<tr><td>VCC <td> +3.3 V
<tr><td>GND <td> Ground
/<tr><td>!SCL<td> SPI1 SCLK: PB9
<tr><td>!SDA <td> SPI1 PICO: PB8 MOSI SPI data from microcontroller to TFT or SDC
<tr><td>DC <td> GPIO PA13 TFT data/command
<tr><td>RES <td> GPIO PB15 TFT reset
<tr><td>CS <td> SPI1 CS0: PB6 TFT_CS, active low to enable TFT
<tr><td>*CS <td> (NC) SDC_CS, active low to enable SDC
<tr><td>MISO <td> (NC) MISO SPI data from SDC to microcontroller
<tr><td>X<td> (NC) analog input X-axis from ADXL335 accelerometer
<tr><td>Y<td> (NC) analog input Y-axis from ADXL335 accelerometer
<tr><td>Z<td> (NC) analog input Z-axis from ADXL335 accelerometer
<tr><td>Backlight + <td> Light, backlight connected to +3.3 V
</table>
<table>
<caption id="ArabicHiLetgopins2">HiLetgo ST7735 TFT and SDC pins </caption>
<tr><th>signal<th>Pin<th>Connection
<tr><td>LED- <td>16<td>TFT, to ground
<tr><td>LED+ <td>15<td>TFT, to +3.3 V
<tr><td>SD_CS <td>14<td>SDC, to chip select
<tr><td>MOSI <td>13<td>SDC, to MOSI
<tr><td>MISO <td>12<td>SDC, to MISO
<tr><td>SCK <td>11<td>SDC, to serial clock
<tr><td>CS <td>10<td>TFT, to PB6 SPI1 CS0
<tr><td>SCL <td> 9<td>TFT, to PB9 SPI1 SCLK
<tr><td>SDA <td> 8<td>TFT, to PB8 MOSI SPI1 PICO
<tr><td>A0 <td> 7<td>TFT, to PA13 Data/Command, high for data, low for command
<tr><td>RESET <td> 6<td>TFT, to PB15 reset (GPIO), low to reset
<tr><td>NC <td>3,4,5<td>not connected
<tr><td>VCC <td> 2<td>to +3.3 V
<tr><td>GND <td> 1<td>to ground
</table>
<table>
<caption id="ArabicTyenazapins2">Tyenaza Tyenazaqhf72mi9s3 pins </caption>
<tr><th>signal<th>Pin<th>Connection
<tr><td>LED <td>8<td> to +3.3 V
<tr><td>SCK <td>7<td>SCLK to PB9 SPI1 SCLK
<tr><td>SDA <td>6<td>MOSI, to PB8 SPI1 PICO
<tr><td>A0 <td>5<td>Data/Command to PA13 (GPIO), high for data, low for command
<tr><td>RESET <td>4<td>to PB15 (GPIO), low to reset
<tr><td>CS <td>3<td>to PB6 SPI1 CS0:
<tr><td>Gnd <td>2<td>to ground
<tr><td>VCC <td>1<td>to +3.3 V
</table>
<br>
******************************************************************************/
#ifndef _ARABIC_
#define _ARABIC_
#include <stdint.h>
/**
* \brief Arabic character set
*/
typedef enum {null,alif,ayh,baa,daad,daal,dhaa,dhaal,faa,ghayh,haa,ha,jeem,kaaf,khaa,laam,meem,noon,qaaf,raa,saad,seen,sheen,ta,thaa,twe,waaw,yaa,zaa,space,dot} Arabic_t;
/**
* Move the cursor to the desired X- and Y-position. The
* next character will be printed here. X=0 is the leftmost
* column. Y=0 is the top row. *
* @param none
* @param newX new X-position of the cursor (0<=newX<=7)
* @param newY new Y-position of the cursor (0<=newY<=9)
* @return none
* @brief Move Arabic cursor
*/
void Arabic_SetCursor(uint32_t newX, uint32_t newY);
/**
* Output one Arabic character to the LCD
* Position determined by Arabic_SetCursor command
* Color set by ST7735_SetTextColor
* @param ch 8-bit Arabic character
* @return none
* @brief Output an Arabic character
*/
void Arabic_OutChar(Arabic_t ch);
/**
* Output an Arabic string to the LCD
* Position determined by Arabic_SetCursor command
* Color set by ST7735_SetTextColor.
* The string will automatically wrap.
* @param ptr pointer to null-terminated Arabic string
* @return none
* @brief Output an Arabic string
*/
void Arabic_OutString(Arabic_t *ptr);
#endif
/** @}*/