📄 led.txt
字号:
EA=1;
return(ad_v);
}
unsigned int adcj(unsigned char tongdao)
{
unsigned int idata adv,sum;
unsigned char data j,l;
unsigned int idata max_min[2];
j=0;l=0;sum=0;adv=0;
for(j=0;j<10;j++)
{
adv=read_ad(tongdao);
sum+=adv;
if(j==0)
{
max_min[0]=adv;max_min[1]=adv;
}
else
{
if(adv>=max_min[0])
{
max_min[0]=adv;
}
if(adv<=max_min[1])
{
max_min[1]=adv;
}
}
}
adv=(sum-max_min[0]-max_min[1])/8;
return adv;
}
void CheckState(unsigned char Zuo_You)
{
unsigned char data dat;
do
{
if(Left==Zuo_You) {dat=Lcd_L_Mang;dat=Lcd_L_Mang;dat=Lcd_L_Mang;}
else {dat=Lcd_R_Mang; dat=Lcd_R_Mang; dat=Lcd_R_Mang; }
}
while(!((dat&0x90)==0));
}
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
//向LCD发送命令
//command :命令
void SendCommandToLCD(unsigned char Zuo_You,unsigned char command)
{
CheckState(Zuo_You);
if(Zuo_You==Left)
Lcd_L_Command=command;
else
Lcd_R_Command=command;
}
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
void Wite_Data(unsigned char Zuo_You,unsigned char date)
{
CheckState(Zuo_You);
if(Zuo_You==Left)
Lcd_W_L_D=date;
else
Lcd_W_R_D=date;
}
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
//清屏
void ClearScreen(void)
{
unsigned char data i,j;
for(i=0;i<8;i++)
{
SendCommandToLCD(Left,i|0xb8);
SendCommandToLCD(Left,i|0x40);
for(j=0;j<64;j++)
{
Wite_Data(Left,0);
}
}
for(i=0;i<8;i++)
{
SendCommandToLCD(Right,i|0xb8);
SendCommandToLCD(Right,i|0x40);
for(j=0;j<64;j++)
{
Wite_Data(Right,0);
}
}
}
void LcdIni(void)
{
SendCommandToLCD(Left,0x3e);
SendCommandToLCD(Right,0x3e);
SendCommandToLCD(Left,0x3f);
SendCommandToLCD(Right,0x3f);
SendCommandToLCD(Left,0xc0);
SendCommandToLCD(Right,0xc0);
}
/*********************************************************************************************************
** 函数名称: DispDate
** 功能描述: 向液晶写显示字符和汉字
** 输 入: hang 显示的行 lie显示的列 data显示的字符串首地址,leixing显示的字符还是汉字值为16或8
** 输 出: 无
** 全局变量: 无
** 调用模块:WRITE_COMD, WriteData
**
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void DispHanZi(unsigned char hang,unsigned char lie,unsigned char *date,unsigned char leixing)
{
unsigned char data i,j,k;
for(i=0;i<2;i++)
{
k=lie;
k%=127;
for(j=0;j<leixing;j++)
{
if(k<=63)
{
SendCommandToLCD(Left,hang|0xb8);
SendCommandToLCD(Left,k|0x40);
Wite_Data(Left,*date);
}
else
{
SendCommandToLCD(Right,hang|0xb8);
SendCommandToLCD(Right,(k-64)|0x40);
Wite_Data(Right,*date);
}
k++; date++;
}
hang++;
}
}
/*********************************************************************************************************
** 函数名称: LcdWriteChineseString
** 功能描述: 向液晶写显示汉字
** 输 入: x 显示的行 layer显示的列 HZString显示的字符串首地址,Length显示的字符还是汉字的个数
** 输 出: 无
** 全局变量: 无
** 调用模块:DispHanZi
**
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcdWriteChineseString(unsigned char x,unsigned char layer,unsigned char HZString[],unsigned char Length)
{
unsigned char data i,j;
unsigned char * p;
unsigned char * t;
unsigned char * pionter;
unsigned int k,m;
p=(unsigned char *)DOTLIB;
t=(unsigned char *)HZString;
for(i=0;i<Length;i++)
{
k=*(t+1)+(((unsigned int)*t)<<8);
for(j=0;j<100;j++)
{
pionter=(unsigned char *)&m;
*pionter=ChineseIndex[2*j];pionter++;
*pionter=ChineseIndex[2*j+1];
if(k==m)
{
DispHanZi(x,layer*8+i*16,p+32*j,hanzi);
break;
}
}
t+=2;
}
}
/*********************************************************************************************************
** 函数名称: LcdWriteChineseString
** 功能描述: 向液晶写显示汉字
** 输 入: x 显示的行layer显示的列 HZString显示的字符串首地址,Length显示的字符还是汉字的个数
** 输 出: 无
** 全局变量: 无
** 调用模块:DispHanZi
**
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcdWriteString(unsigned char x,unsigned char layer,unsigned char HZString[],unsigned char Length)
{
unsigned char data i,j;
unsigned char code *p;
unsigned char *t;
unsigned int k;
p=(unsigned char*)DOT;
t=(unsigned char*)HZString;
for(i=0;i<Length;i++)
{
k=*t;
for(j=0;j<27;j++)
{
if(k==StringIndex[j])
{
DispHanZi(x,layer*8+i*8,p+16*j,zifu);
break;
}
}
t+=1;
}
}
void demsec(void)
{
unsigned char data i,j,k;
for(i=0;i<10;i++)
{
for(j=0;j<200;j++)
{
for(k=0;k<200;k++);
}
}
}
void send_byte(unsigned char out_byte)
{
unsigned char i;
cs=0;
long_delay();
for(i=0;i<8;i++)
{
if(out_byte&0x80)
{
dat=1;
}
else
{
dat=0;
}
clk=1;
short_delay();
clk=0;
short_delay();
out_byte=out_byte*2;
}
dat=0;
}
void write7279(unsigned char cmd, unsigned char dta )
{
send_byte(cmd);
send_byte(dta);
}
unsigned char read7279(unsigned char command)
{
send_byte(command);
return(receive_byte());
}
unsigned char receive_byte(void)
{
unsigned char i,in_byte;
dat=1;
long_delay();
for(i=0;i<8;i++)
{
clk=1;
short_delay();
in_byte=in_byte*2;
if(dat)
{
in_byte=in_byte|0x01;
}
clk=0;
short_delay();
}
dat=0;
return(in_byte);
}
void long_delay(void)
{
unsigned char i;
for(i=0;i<0x30;i++);
}
void short_delay(void)
{
unsigned char i;
for(i=0;i<8;i++);
}
void zhh(unsigned int a)
{
dis[4]=a%10+0x30;
dis[3]=a/10%10+0x30;
dis[1]=a/100%10+0x30;
dis[0]=a/1000%10+0x30;
}
void zhhl(unsigned int e)
{
disl[4]=e%10+0x30;
disl[3]=e/10%10+0x30;
disl[1]=e/100%10+0x30;
disl[0]=e/1000%10+0x30;
}
void zhhlk(unsigned int f)
{
dislk[3]=f%10;
dislk[2]=f/10%10;
dislk[1]=f/100%10;
dislk[0]=f/1000%10;
}
void zhhll(unsigned int m)
{
disll[4]=m%10+0x30;
disll[3]=m/10%10+0x30;
disll[1]=m/100%10+0x30;
disll[0]=m/1000%10+0x30;
}
main()
{
unsigned char *t,*p,*q,*n;
unsigned int ad,djg,k,qp,j;
static unsigned int zl;
static unsigned int zj=0;
SP=0xe0;
LcdIni();
ClearScreen();
ClearScreen();
LcdWriteChineseString(0,0,"重量",2);
LcdWriteChineseString(2,0,"单价",2);
LcdWriteChineseString(4,0,"总价",2);
LcdWriteChineseString(6,0,"皮重",2);
LcdWriteChineseString(2,10,"元",1);
LcdWriteChineseString(4,10,"元",1);
LcdWriteString(0,4,":",1);
LcdWriteString(2,4,":",1);
LcdWriteString(4,4,":",1);
LcdWriteString(6,4,":",1);
LcdWriteString(0,10,"kg",2);
LcdWriteString(6,10,"kg",2);
p=(unsigned char*)disl;
LcdWriteString(2,5,p,5);
q=(unsigned char*)disll;
LcdWriteString(4,5,q,5);
n=(unsigned char*)disqp;
LcdWriteString(6,5,n,5);
while(1)
{
fmq=1;
ad=adcj(0);
zl=0.158*(ad-650)+100;
zhh(zl);
t=(unsigned char*)dis;
LcdWriteString(0,5,t,5);
for(tmr=0;tmr<0x2000;tmr++);
send_byte(CMD_RESET);
key_ber=0xff;
if(!key)
{
key_ber=read7279(CMD_READ);
switch(key_ber)
{
case 0x03:k=0;while(!key);break;
case 0x0B:k=1;while(!key);break;
case 0x13:k=2;while(!key);break;
case 0x02:k=3;while(!key);break;
case 0x0A:k=4;while(!key);break;
case 0x12:k=5;while(!key);break;
case 0x01:k=6;while(!key);break;
case 0x09:k=7;while(!key);break;
case 0x11:k=8;while(!key);break;
case 0x00:k=9;while(!key);break;
case 0x1B:zhhlk(zl);
zhh(zl);
t=(unsigned char*)dis;
LcdWriteString(0,5,t,5);
djg=(dislk[0]*1000+dislk[1]*100+dislk[2]*10+dislk[3])*k;
zhhl(djg);
p=(unsigned char*)disl;
LcdWriteString(2,5,p,5);
zj+=djg;while(!key);break;
case 0x1A:zhhll(zj);
q=(unsigned char*)disll;
LcdWriteString(4,5,q,5);while(!key);break;
case 0x08:zl-=qp;
zhh(zl);
t=(unsigned char*)dis;
LcdWriteString(0,5,t,5);
case 0x19:zj=0;djg=0;zl=0;
zhhll(zj);
zhhl(djg);
zhh(zl);
q=(unsigned char*)disll;
LcdWriteString(4,5,q,5);
p=(unsigned char*)disl;
LcdWriteString(2,5,p,5);
t=(unsigned char*)dis;
LcdWriteString(0,5,t,5);while(!key);break;
case 0x18: qp=zl;
n=(unsigned char*)disqp;
LcdWriteString(6,5,n,5);
while(!key); break;
case 0x10: ;break;
}
}
}
}
#include<reg52.h>
#include<absacc.h>
#include<intrins.h>
#include "DOTLIB.h"
#define Lcd_L_Mang XBYTE[0xd7ff]
#define Lcd_R_Mang XBYTE[0xcfff]
#define Lcd_W_L_D XBYTE[0xb7ff]
#define Lcd_W_R_D XBYTE[0xafff]
#define Lcd_L_Command XBYTE[0x97ff]
#define Lcd_R_Command XBYTE[0x8fff]
#define Left 0
#define Right 1
#define zifu 8
#define hanzi 16
sbit adclk=P1^1;
sbit adin=P1^0;
sbit adout=P1^2;
sbit adcs=P1^3;
void long_delay(void); //长延时
void short_delay(void); //短延时
void delay10ms(unsigned char); //延时10ms
void write7279(unsigned char,unsigned char);
unsigned char read7279(unsigned char);
void send_byte(unsigned char);
unsigned char receive_byte(void);
//***定义变量及I/O口***
unsigned char digit[5];
unsigned char key_ber,j,k;
unsigned int tmr;
unsigned long wait_cnter;
sbit cs=P1^4;
sbit clk=P1^5;
sbit dat=P1^6;
sbit key=P1^7;
sbit fmq=P2^0;
//***HD7279指令***
#define CMD_RESET 0xa4
#define CMD_TEST 0xbf
#define DECODE0 0x80
#define DECODE1 0xc8
#define CMD_READ 0x15
#define UNDECODE 0x90
#define BLINKCTL 0x88
unsigned char data zjkk[20]={"00000000000000000000"};
unsigned char data disll[5]={"00.00"};
unsigned char data dislk[4]={"0000"};
unsigned char data disl[5]={"00.00"};
unsigned char data dis[5]={"00.00"};
unsigned char data disqp[5]={"00.00"};
unsigned int read_ad(unsigned char anx)
{
idata unsigned int ad_v;
idata unsigned char an,x,y;
anx=anx<<4; adclk=0;adcs=1;adcs=0; EA=0;
for(x=0;x<4;x++)
{
an=anx; ad_v=0;
for(y=0;y<12;y++)
{
adin=an&0x80;
an=an<<1;
adclk=1;
ad_v=ad_v<<1;
ACC=adout;
ad_v+=ACC;
adclk=0;
}
}
EA=1;
return(ad_v);
}
unsigned int adcj(unsigned char tongdao)
{
unsigned int idata adv,sum;
unsigned char data j,l;
unsigned int idata max_min[2];
j=0;l=0;sum=0;adv=0;
for(j=0;j<10;j++)
{
adv=read_ad(tongdao);
sum+=adv;
if(j==0)
{
max_min[0]=adv;max_min[1]=adv;
}
else
{
if(adv>=max_min[0])
{
max_min[0]=adv;
}
if(adv<=max_min[1])
{
max_min[1]=adv;
}
}
}
adv=(sum-max_min[0]-max_min[1])/8;
return adv;
}
void CheckState(unsigned char Zuo_You)
{
unsigned char data dat;
do
{
if(Left==Zuo_You) {dat=Lcd_L_Mang;dat=Lcd_L_Mang;dat=Lcd_L_Mang;}
else {dat=Lcd_R_Mang; dat=Lcd_R_Mang; dat=Lcd_R_Mang; }
}
while(!((dat&0x90)==0));
}
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
//向LCD发送命令
//command :命令
void SendCommandToLCD(unsigned char Zuo_You,unsigned char command)
{
CheckState(Zuo_You);
if(Zuo_You==Left)
Lcd_L_Command=command;
else
Lcd_R_Command=command;
}
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
void Wite_Data(unsigned char Zuo_You,unsigned char date)
{
CheckState(Zuo_You);
if(Zuo_You==Left)
Lcd_W_L_D=date;
else
Lcd_W_R_D=date;
}
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -