/////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////键盘扫描程序////////////////////////////////////
uchar keyscan()
{
uint tem;
uchar key='a';
P3=0xfe;
tem=P3;
tem=tem&0xf0;
if(tem!=0xf0)
{
// delayms(10);
P3=0xfe;
tem=P3;
tem=tem&0xf0;
if(tem!=0xf0)
{ tem=P3;
switch(tem)
{
case 0x7e:key='A';break;
case 0xee:key='1';break;
case 0xde:key='2';break;
case 0xbe:key='3';break;
}
while(tem!=0xf0)
{
tem=P3;
tem=tem&0xf0;
}
}
}
P3=0xfd;
tem=P3;
tem=tem&0xf0;
if(tem!=0xf0)
{
delayms(10);
P3=0xfd;
tem=P3;
tem=tem&0xf0;
if(tem!=0xf0)
{ tem=P3;
switch(tem)
{
case 0xed:key='4';break;
case 0xdd:key='5';break;
case 0xbd:key='6';break;
case 0x7d:key='B';break;
}
while(tem!=0xf0)
{
tem=P3;
tem=tem&0xf0;
}
}
}
P3=0xfb;
tem=P3;
tem=tem&0xf0;
if(temp!=0xf0)
{
delayms(10);
P3=0xfb;
tem=P3;
tem=temp&0xf0;
if(tem!=0xf0)
{ tem=P3;
switch(tem)
{
case 0xeb:key='7';break;
case 0xdb:key='8';break;
case 0xbb:key='9';break;
case 0x7b:key='C';break;
}
while(tem!=0xf0)
{
tem=P3;
tem=tem&0xf0;
}
}
}
P3=0xf7;
tem=P3;
tem=tem&0xf0;
if(tem!=0xf0)
{
delayms(10);
P3=0xf7;
tem=P3;
tem=tem&0xf0;
if(tem!=0xf0)
{ tem=P3;
switch(tem)
{
case 0xe7:key='*';break;
case 0xd7:key='0';break;
case 0xb7:key='#';break;
case 0x77:key='D';break;
}
while(tem!=0xf0)
{
tem=P3;
tem=tem&0xf0;
}
}
}
return key;
}
void displayprice() //显示price
{
static uchar bufferprice[4]={' ',' ',' '}; //把bufferprice定到能保存4个字符型数据,主要是为了在做清零时方便
static uchar buffermoney[4];
uint j;
static char ii;//这里不能用uchar型数据,静态数据必须加
button=keyscan();
if(button!='a') //如果有键按下
{
if(button=='D')
{
money=atof(bufferprice)*weight/1000;//atof将字符串转换为浮点型
sprintf(buffermoney,"%f",money);//将浮点型转换为字符串
write_com(0x80+0x46);
for(j=0;j<4;j++)
write_date(buffermoney[j]);
}
else if(button=='C')//单价
{
for(j=0;j<3;j++)
bufferprice[j]=' ';
write_com(0x80+0x0c);
ii=0;
}
else if(button=='C') //清零
{
ii=ii-1; //因为会减到-1,所以i不能用uchar型
if(ii<=0)ii=0;
bufferprice[ii]=' ';
}
else
{
bufferprice[ii]=button;
ii++;
if(ii>=3)ii=3;
}
}
write_com(0x80+0x0c); //price
for(j=0;j<3;j++)
write_date(bufferprice[j]);//price
}
//////////////////喇叭函数///////////////////
void delayus(uint z)
{
while(z--)
{
_nop_();
}
}
void sound()
{
uint j;
for(j=0;j<200;j++)
{
delayus(200);
spk=!spk;
}
spk=0;
for(j=0;j<200;j++)
{
delayms(1);
//spk=!spk;
}
}
dianzicheng.rar_dianzcheng
版权申诉
190 浏览量
2022-09-24
20:41:15
上传
评论
收藏 80KB RAR 举报
JaniceLu
- 粉丝: 84
- 资源: 1万+
最新资源
- 一个简单的 Python 代码示例,演示了如何实现树状数组(也称为二进制索引树)
- 最新USB转vga hdmi驱动Fresco logic FL2000-2.1.36287驱动
- 基于原生语言开发的智慧养老微信小程序(只含页面)
- 课程设计基于sort+knn实现高空抛物演示python源码+演示视频.7z
- 基于Java的万年历源代码
- halcon检测表面的缺陷例子
- 基于LabView+MATLAB的说话人识别系统
- 基于Flask Web的中文自动语音识别演示系统,包含语音识别、语音合成、声纹识别之说话人识别
- 基于Labview的转子动平衡测控系统
- 基于VHDL的读写接口RD-WR-INTERFACE.vhd
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈