⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 在STC51上开发的一个电子称程序 KEILUV3环境开发
💻 C
字号:
#include "hardware.h"
#include "beep.h"

uchar Lcdbit=0x0c;
uchar idata  display_buffer[8]={0,0,0,0,0,0,0,0};

//液晶段码
#define a 0x08
#define b 0x04
#define c 0x02
#define d 0x01
#define e 0x20
#define f 0x80
#define g 0x40
#define h 0x10

unsigned code seg[]=
{
a+b+c+d+e+f,//0	0
b+c,//1	1
a+b+g+e+d,//2	2
a+b+g+c+d,//3	3
f+g+b+c,//4	4
a+f+g+c+d,//5	5
a+f+g+e+d+c,//6	6
a+b+c,//7	7
a+b+c+d+e+f+g,//8	8
a+b+c+d+g+f,//9	9
0,//a
0,//b
0,//c
0,//d
0,//e
0,//0x0f
0,//10
0,//11
0,//12
0,//13
0,//14
0,//15
0,//16
0,//17
0,//18
0,//19
0,//1a
0,//1b
0,//1c
0,//1d
0,//1e
0,//1f
0,//20	' '空格
0,//21
0,//22
0,//23
0,//24
0,//25
0,//26
0,//27	`
0,//28	(
0,//29	)
0,//2a	*
0,//2b	+
0,//2c	,
g,//2d	-
h,//2e	.
0,//2f	/
a+b+c+d+e+f+h,//30	0.
b+c+h,//31	                1.
a+b+g+e+d+h,//32	        2.
a+b+g+c+d+h,//33	        3.
f+g+b+c+h,//34 	        4.
a+f+g+c+d+h,//35	        5.
a+f+g+e+d+c+h,//36	6.
a+b+c+h,//37	        7.
a+b+c+d+e+f+g+h,//38    8.
a+b+c+d+g+f+h,//39	9.
0,//3a
0,//3b
0,//3c
0,//3d
0,//3e
0,//3f
0,//40
a+b+c+e+f+g,//41    A
0,//42	    B
a+d+e+f,//43	    C
0,//44	    D
a+d+e+f+g,//45	    E
a+e+f+g,//46	    F
a+b+c+d+f+g,//47    G
b+c+e+f+g,//48	    H
0,//49	I
0,//4a	J
0,//4b	K
d+e+f,//4c	L
a+c+e,//4d	M
0,//4e	N
a+b+c+d+e+f,//4f	O
a+b+e+f+g,//50	P
0,//51	Q
0,//52	R
a+c+d+f+g,//53	S
0,//54	T
b+c+d+e+f,//55	U
0,//56	V
0,//57	W
0,//58	X
0,//59	Y
a+b+g+e+d,//5a	Z
0,//5b
0,//5c
0,//5d
0,//5e
0,//5f
0,//60
0,//61	a
c+d+e+f+g,//62	b
0,//63	c
b+c+d+e+g,//64	d
0,//65	e
0,//66	f
0,//67	g
e+c+f+g,//68	h
c,//69	i
0,//6a	j
0,//6b	k
0,//6c	l
0,//6d	m
c+e+g,//6e	n
c+d+e+g,//6f	o
0,//70	p
0,//71	q
e+g,//72	r
0,//73	s
d+e+f+g,//74	t
c+d+e,//75	u
b+c+d+e,//76	v
0,//77	w
0,//78	x
0,//79	y
0,//7a	z
d+e+f+g+h,//t.
0,//7c
0,//7d
0,//7e
0,//7f----十进制127
};

//定义液晶数码管地址
#define ADDR_SMG1 0x00
#define ADDR_SMG2 0x02
#define ADDR_SMG3 0x04
#define ADDR_SMG4 0x06
#define ADDR_SMG5 0x08
#define ADDR_SMG6 0x0a

//定义HT1621的命令
#define  ComMode    0x29  //4COM,1/3bias  1000    010 1001  0  
#define  LCD_on     0x03  //打开LCD 偏压发生器1000     0000 0 11 0 
#define  LCD_off    0x02  //关闭LCD显示 
#define  Sys_en     0x01  //系统振荡器开 1000   0000 0010 
#define  RC         0x18  //片上晶振

#define  Ctrl_cmd   0x80  //写控制命令 
#define  Data_cmd   0xa0  //写数据命令  

void nop(void)//延时1us
 {}

void delayus(uchar i) //延时i us
 {while(i--);}

void delayms(uint m) //延时m ms  
 {
  uint i,j;
  for(i=0;i<m;i++)
  for(j=0;j<65;j++)
  delayus(1);
 }

//写命令
void LcdWriteCommand(char dat_)
{
	unsigned char temp;
	delayms(200);	//ID=100
	Lcs=0;
	Ldata=1;
		Lwr=0;
		nop();
		Lwr=1;
		nop();
	Ldata=0;
		Lwr=0;
		nop();
		Lwr=1;
		nop();
	Ldata=0;
		nop();
		Lwr=0;
		nop();
		Lwr=1;
for (temp=0;temp<9;temp++)
	{
		dat_= dat_<< 1;
		Ldata= CY;
		Lwr=0;
		nop();
		Lwr=1;
		nop();
	}
	Lcs=1;
}

//写数据
void LcdWriteData(unsigned char add_, unsigned char da_)
{
	unsigned char temp,num;
    Lcs=0;
Ldata=1;  //ID=101
	Lwr=0;
	nop();
	Lwr=1;
	nop();
Ldata=0;
	Lwr=0;
	nop();
	Lwr=1;
	nop();
Ldata=1;
	Lwr=0;
	nop();
	Lwr=1;
	nop();
	add_=add_<<2;//取8位的后6位
	for (temp=0;temp<6;temp++)
				{
					add_=add_<<1;
					Ldata=CY;
					Lwr=0;
					nop();
					Lwr=1;
					nop();
				}
	for (num=0;num<8;num++)
				{
					da_ = da_<< 1;
					Ldata= CY;
					Lwr=0;
					nop();
					Lwr=1;
					nop();
				}
	Lcs=1;
}

//清屏消隐
void LcdClr(void)
{
	unsigned char temp;
	Lcs=0;
Ldata=1;     //ID=101
	Lwr=0;
	nop();
	Lwr=1;
	nop();
Ldata=0;
	Lwr=0;
	nop();
	Lwr=1;
	nop();
Ldata=1;
	Lwr=0;
	nop();
	Lwr=1;
	nop();
	for (temp=0;temp<200;temp++)
		{
			Ldata=0;
			Lwr=0;
			nop();
			Lwr=1;
			nop();
		}
	Lcs=1;
}

//LCD初始化
void InitLcd(void)
{
 delayms(20);
 LcdWriteCommand(ComMode);  //开系统晶振
 LcdWriteCommand(Sys_en);   //开LCD
 LcdWriteCommand(LCD_on);   //...1/3 BIAS
 LcdWriteCommand(RC);
 LcdClr();  //清屏消隐
 delayms(20);
}
	
//================================LCD显示重量结果=============================	
void DispResult(unsigned long data1)	
 {
 	unsigned char  i;
//	bit ZeroFlag;
    display_buffer[0] = data1 / 100000;
	display_buffer[1] = data1 % 100000 / 10000;
    display_buffer[2] = data1 % 10000 / 1000;
	display_buffer[3] = data1 % 1000 / 100;	   
	display_buffer[4] = data1 % 100 / 10;
	display_buffer[5] = data1 % 10;
	
	for(i=0;i<6;i++)
	  {
	   LcdWriteData(i*2,seg[display_buffer[i]]);
	  }
 }

//=================================全显示===================================
void LcdAllOn(void)
{
 uchar data z;
 uchar addr=0;
 for(z=0;z<17;z++)
  {
   LcdWriteData(addr,0xFF);
   addr++;
  }
 delayms(1000);
}

 //==============================开机自检程序================================
void OnCheck(void)
{ 
 uchar i;
 uchar j;
 for(i=9;i!=-1;i--)
  {
   for(j=0;j<12;j+=2)
     {
      LcdWriteData(j,seg[i]);
	 }
	// Beep(2);
     delayms(130);
   }
}

//===============================符号单位===============================
void ShowBattery()
  {LcdWriteData(11,8);}

void ShowHi()
  {LcdWriteData(11,4);}

void ShowOk()
  {LcdWriteData(11,2);}

void ShowLo()
  {LcdWriteData(11,1);}
//=================================
void ShowStab()
  {LcdWriteData(12,8);}

void ShowM()
  {LcdWriteData(16,8);}

void ShowFS()
  {LcdWriteData(12,4);}

void ShowNet()
  {LcdWriteData(12,2);}

void ShowZero()
  {LcdWriteData(12,1);}
//=================================
void ShowGross()
  {LcdWriteData(13,8);}

void ShowOz()
  {LcdWriteData(13,4);}

void ShowTAI()
  {LcdWriteData(13,2);}

void ShowT()
  {LcdWriteData(13,1);}
//==================================
void ShowPcs()
  {LcdWriteData(14,8);}

void ShowJING()
  {LcdWriteData(14,4);}

void ShowGANG()
  {LcdWriteData(14,2);}

void ShowK()
  {LcdWriteData(14,1);}
//==================================
void ShowBFH()
  {LcdWriteData(15,4);}

void ShowLb()
  {LcdWriteData(15,2);}

void ShowG()
  {LcdWriteData(15,1);}




//==========================显示字符串函数==================================
void Disp_str(unsigned char *str)
   {   
     unsigned char i;    
     for(i=0;i<6;i++)    
       {        
        if(str[i]==0)break;        
        LcdWriteData(i*2,seg[str[i]]);
        }
	}

//===============================菜单=============================


































































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -