📄 licheng.txt
字号:
#include<reg52.h>
#include<absacc.h>
#include <stdio.h>
#include <intrins.h>
sbit licheng=P2^4;
xdata unsigned char CW _at_ 0xf9fc;//1111 1001 1111 1100 写指令
xdata unsigned char CR _at_ 0xf9fe;//1111 1001 1111 1110 读指令
xdata unsigned char DW _at_ 0xf9fd;//1111 1001 1111 1101 写数据
xdata unsigned char DR _at_ 0xf9ff;//1111 1001 1111 1111 读数据
unsigned char code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
unsigned char a,flag1=1,num,flag2,flag3=1,a1,a2,a3;
bit flag;
void delay(unsigned int i)//延迟子函数
{ while(i--);
}
unsigned char lc_read(void)//读指令子函数
{ unsigned char a;
delay(100);
a=CR;
return(a);
}
void readbf(void)//检测忙信号
{ while(flag)
{ flag=(bit)(lc_read())&0x80;
}
}
void lc_write(unsigned char a)//写指令子函数
{ delay(20);
CW=a;
delay(20);
}
void ld_write(unsigned char a)//写数据子函数
{ delay(20);
DW=a;
delay(20);
}
void init(void)//函数初始化
{
readbf();
lc_write(0x38);
delay(500);
readbf();
lc_write(0x38);
delay(500);
readbf();//三次不检测忙信号
lc_write(0x38);//8位2行5x7点阵
delay(500);
lc_write(0x01);//清屏
readbf();
lc_write(0x0f);
readbf();
delay(500);
lc_write(0x0e);//开显示,有光标。光标闪烁
readbf();
delay(500);
lc_write(0x06);//光标右移,整屏不移动
delay(500);
}
void main()
{
init();
lc_write(0x80+0x40);
readbf();
delay(2000);
ld_write(0x30);
ld_write(0x30);
ld_write(0x30);
while(1)
{
while(licheng||flag1==0)
{
flag1=0;//计数金属的个数,要延时一会再判断
delay(50);
if(licheng==1) {flag1=0;a=1;}
else flag1=0;
}
if(flag1==0&&a) {num++;a=0;}
a1=num/100;
a2=num/10%10;
a3=num%10;
lc_write(0x01);
readbf();
delay(2000);
lc_write(0x0c);
delay(2000);
ld_write(table[a1]);
ld_write(table[a2]);
ld_write(table[a3]);
delay(2000);
//if(flag2)
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -