### LCD 7-seg page 1/1

LCD 7 segments with Arduino

Help me by sharing this post

This is a very short example. How to use this LCD to display numbers and some letters such as A, b, F and so on. Aslo the decimal point. Below you have the schematic, code and library taht you need for this example. Read all the comments in the code.

First, you need a 7 segments LCD like this one on this link. This uses serial data to show up to 6 numbers from 0 to 9 and 5 decimal dots. To send data, all we have to do is to send data on the data pin.

## PART 1 -Schematic

Ok, make the serial connection between the Arduino and the LCD as below. In this case, we won't need any library. All we have to do is to shift data on the data pins and control some registers inside of the LCd chip. The rest is done by the LCD driver. Copy the code from below and see the test.

## PART 2 -Example code

We don't need any library for this example. All we have to do is to send data to the chip by shifting each byte value on the data pin. Read the code to see more. Upload the test code, make the connections and give it a test.

``````
/*  7 segment LCD serial control
Schematic: https://www.electronoobs.com/eng_arduino_tut55_sch1.php
Code: https://www.electronoobs.com/eng_arduino_tut55_code1.php
*/

#define CS 13  //Pin 13 as chip selection output
#define WR 12  //Pin 12 as read clock  output
#define DATA 7  //Pin 7 as Serial data output

#define CS1    digitalWrite(CS, HIGH)
#define CS0    digitalWrite(CS, LOW)
#define WR1    digitalWrite(WR, HIGH)
#define WR0    digitalWrite(WR, LOW)
#define DATA1  digitalWrite(DATA, HIGH)
#define DATA0  digitalWrite(DATA, LOW)

#define sbi(x, y)  (x |= (1 << y))
#define cbi(x, y)  (x &= ~(1 << y ))
#define uchar   unsigned char
#define uint   unsigned int

//定义HT1621的命令
#define  ComMode    0x52  //4COM,1/3bias  1000    010 1001  0
#define  RCosc      0x30  //1000 0011 0000
#define  LCD_on     0x06  //1000     0000 0 11 0
#define  LCD_off    0x04
#define  Sys_en     0x02  //1000   0000 0010
#define  CTRl_cmd   0x80
#define  Data_cmd   0xa0

/*0,1,2,3,4,5,6,7,8,9,A,b,C,c,d,E,F,H,h,L,n,N,o,P,r,t,U,-, ,*/

const char num[]={0x7D,0x60,0x3E,0x7A,0x63,0x5B,0x5F,0x70,0x7F,0x7B,0x77,0x4F,0x1D,0x0E,0x6E,0x1F,0x17,0x67,0x47,0x0D,0x46,0x75,0x37,0x06,0x0F,0x6D,0x02,0x00,};
//0      1      2      3        4      5      6       7       8       9
char dispnum[6]={0x00,0x00,0x00,0x00,0x00,0x00};

int i = 0;

void SendBit_1621(uchar sdata,uchar cnt)
{
//data cnt HT1621
uchar i;
for(i=0;i<cnt;i++)
{
WR0;
if(sdata&0x80) DATA1;
else DATA0;
WR1;
sdata<<=1;
}
}

void SendCmd_1621(uchar command)
{
CS0;
SendBit_1621(0x80,4);
SendBit_1621(command,8);
CS1;
}

{
CS0;
SendBit_1621(0xa0,3);
SendBit_1621(sdata,8);
CS1;
}

void HT1621_all_off(uchar num)
{
uchar i;
for(i=0;i<num;i++)
{
}
}

void HT1621_all_on(uchar num)
{
uchar i;
for(i=0;i<num;i++)
{
}
}

void Init_1621(void)
{
SendCmd_1621(Sys_en);
SendCmd_1621(RCosc);
SendCmd_1621(ComMode);
SendCmd_1621(LCD_on);
}

void displaydata(int p)
{
uchar i=0;
switch(p)
{
case 1:
sbi(dispnum[0],7);
break;
case 2:
sbi(dispnum[1],7);
break;
case 3:
sbi(dispnum[2],7);
break;
default:break;
}
for(i=0;i<=5;i++)
{
Write_1621(i*2,dispnum[i]);
}
}

void setup() {
pinMode(CS, OUTPUT); //
pinMode(WR, OUTPUT); //
pinMode(DATA, OUTPUT); //
CS1;
DATA1;
WR1;
delay(50);
Init_1621();
HT1621_all_on(16); //1621
delay(1000);
HT1621_all_off(16); //1621
delay(1000);

/*displaydata(1);//light on the first decimal point starting from the right side
dispnum[5]=num[5];
dispnum[4]=num[4];
dispnum[3]=num[3];
dispnum[2]=num[2];
dispnum[1]=num[1];
dispnum[0]=num[0];

//sbi(dispnum[5],7);
//cbi(dispnum[5],7);
//sbi(dispnum[4],7);
//cbi(dispnum[4],7);
//sbi(dispnum[3],7);
//cbi(dispnum[3],7);

//Write_1621(0,num[0]);
//Write_1621(2,num[28]);
//Write_1621(4,num[2]);
//Write_1621(6,num[28]);
//Write_1621(8,num[4]);
//Write_1621(10,num[5]);
*/
}

void loop() {

while (i < 24)
{
Write_1621(0,num[i]);
Write_1621(2,num[i]);
Write_1621(4,num[i]);
Write_1621(6,num[i]);
Write_1621(8,num[i]);
Write_1621(10,num[i]);
delay(300);
i=i+1;
}
i = 0;

}
``````

Next tutorial →
More tutorials ←

Help me by sharing this post