/**********************HJ-3G实验开发板例程************************
* 晶振:11.0592MHZ
******************************************************************
程序功能:按下键盘矩阵后,在六个数码管上依次显示所按下的键所代表的数字。
按复位键可以清空显示为0
******************************************************************/
#include<reg51.h>
#define uchar unsigned char
uchar a0=16,b0=16,c0=16,d0=16,e0=16,f0=16,wei,temp,key,i,j,k;
uchar jia,jian,cheng,chu,dengyu,qianready,jia0,jian0,cheng0,chu0,qingling;
uchar s0,s1,s2,s3,s4,s5; //参加运算的各个位
long qian,hou;//定义参于运算的第一个数和第二个数。
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void delay(uchar i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{
dula=0;
P0=table[a];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[b];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
P0=table[c];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(5);
P0=table[d];
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay(5);
P0=table[e];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay(5);
P0=table[f];
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay(5);
}
void keyscan()
{
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
wei++;
break;
case 0xde:
key=1;
wei++;
break;
case 0xbe:
key=2;
wei++;
break;
case 0x7e:
key=3;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
wei++;
break;
case 0xdd:
key=5;
wei++;
break;
case 0xbd:
key=6;
wei++;
break;
case 0x7d:
key=7;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=8;
wei++;
break;
case 0xdb:
key=9;
wei++;
break;
case 0xbb:
qingling=1;
//key=10;
//wei++;
break;
case 0x7b:
dengyu=1;
//key=11;
//wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
jia=1;
//key=12;
// wei++;
break;
case 0xd7:
jian=1;
//key=13;
//wei++;
break;
case 0xb7:
cheng=1;
//key=14;
//wei++;
break;
case 0x77:
chu=1;
//key=15;
//wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
}
}
void display0()
{
if(key!=20)
{
switch(wei)
{
case 1: a0=key;
b0=16;
c0=16;
d0=16;
e0=16;
f0=16;
break;
case 2: b0=key;
c0=16;
d0=16;
e0=16;
f0=16;
break;
case 3: c0=key;
d0=16;
e0=16;
f0=16;
break;
case 4: d0=key;
e0=16;
f0=16;
break;
case 5: e0=key;
f0=16;
break;
case 6: f0=key;
//wei=0;
break;
}
key=20;
}
display(a0,b0,c0,d0,e0,f0);
if(a0!=16) s5=a0;
if(b0!=16) s4=b0;
if(c0!=16) s3=c0;
if(d0!=16) s2=d0;
if(e0!=16) s1=e0;
if(f0!=16) s0=f0;
}
void jieguo()
{
switch(wei)
{
case 6:
hou=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break;
case 5:
hou=s5*10000+s4*1000+s3*100+s2*10+s1;break;
case 4:
hou=s5*1000+s4*100+s3*10+s2;break;
case 3:
hou=s5*100+s4*10+s3;break;
case 2:
hou=s5*10+s4;break;
case 1:
hou=s5;break;
}
wei=0;
s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
}
void fenwei()
{
if(hou<10)
{
a0=hou;b0=16;c0=16;d0=16;e0=16;f0=16;
}
else
{
if(hou<100)
{a0=hou/10;b0=hou%10;c0=16;d0=16;e0=16;f0=16;}
else
{
if(hou<1000)
{a0=hou/100;b0=hou%100/10;c0=hou%10;d0=16;e0=16;f0=16;}
else
{
if(hou<10000)
{a0=hou/1000;b0=hou%1000/100;c0=hou%100/10;d0=hou%10;e0=16;f0=16;}
else
{
if(hou<100000)
{a0=hou/10000;b0=hou%10000/1000;c0=hou%1000/100;d0=hou%100/10;e0=hou%10;f0=16;}
else
{
if(hou<1000000)
{a0=hou/100000;b0=hou%100000/10000;c0=hou%10000/1000;d0=hou%1000/100;e0=hou%100/10;f0=hou%10;}
}
}
}
}
}
display(a0,b0,c0,d0,e0,f0);
P1=hou;
}
void main()
{ uchar gongneng,yunsuan;
while(1)
{
keyscan();
gongneng=jia|jian|cheng|chu|dengyu|qingling;
if(gongneng==0)
{
display0();
}
else
{ yunsuan=jia|jian|cheng|chu;
if(yunsuan)
{
a0=16;
b0=16;
c0=16;
d0=16;
e0=16;
f0=16;
//wei=0;
if(jia)
{
jia=0; jia0=1;jian0=0;cheng0=0;chu0=0;
if(qianready)
{
jieguo();
hou=hou+qian;
fenwei();
}
}
if(jian)
{
jian=0;jia0=0;jian0=1;cheng0=0;chu0=0;
jieguo();
hou=qian-hou;
fenwei();
}
if(cheng)
{
cheng=0;jia0=0;jian0=0;cheng0=1;chu0=0;
jieguo();
hou=qian*hou;
fenwei();
}
if(chu)
{
chu=0; jia0=0;jian0=0;cheng0=0;chu0=1;
jieguo();
hou=qian/hou;
fenwei();
}
if(qianready==0)
{
switch(wei)
{
case 6:
qian=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break;
case 5:
qian=s5*10000+s4*1000+s3*100+s2*10+s1;break;
case 4:
qian=s5*1000+s4*100+s3*10+s2;break;
case 3:
qian=s5*100+s4*10+s3;break;
case 2:
qian=s5*10+s4;break;
case 1:
qian=s5;break;
}
qianready=1;
}
wei=0;
s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
display(a0,b0,c0,d0,e0,f0);
//P1=0x55;
}
if(dengyu)
{
dengyu=0;
//display(16,16,16,16,16,16);
jieguo();
if(jia0)
{jia0=0; hou=qian+hou;}
if(jian0)
{jian0=0; hou=qian-hou;}
if(cheng0)
{cheng0=0; hou=qian*hou;}
if(chu0)
{chu0=0; hou=qian/hou;}
fenwei();
}
if(qingling)
{
a0=16;b0=16;c0=16;d0=16;e0=16;f0=16;
s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
jia=0;jian=0;cheng=0;chu=0;
jia0=0;jian0=0;cheng0=0;chu0=0;
qingl
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
STC开发板相关程序,C语言例程34个 (533个子文件)
0 11KB
0 9KB
0 1KB
1 2KB
1 2KB
1zijie 3KB
2 1KB
21FJDQ 396B
24c02 10KB
24c02 8KB
59 4KB
59 3KB
59 3KB
PCF8591.__i 37B
PCF8591.__i 37B
anjian 6KB
liu.asm 12KB
21FJDQ.ASM 555B
hj-c52_uvopt.bak 75KB
hj-c52_uvopt.bak 74KB
hj-c52_uvproj.bak 13KB
hj-c52_uvproj.bak 13KB
jvzhenjianpan_Uv2.Bak 2KB
clockdingshi_Uv2.Bak 2KB
jiaotongdeng_Uv2.Bak 2KB
geshihua_Uv2.Bak 2KB
menling_Uv2.Bak 2KB
mimasuo_Uv2.Bak 2KB
jishiqi_Uv2.Bak 2KB
HL-1_Uv2.Bak 2KB
HL-1_Uv2.Bak 2KB
1zijie_Uv2.Bak 2KB
stdlib_Uv2.Bak 2KB
fenpin_Uv2.Bak 2KB
24c02_Uv2.Bak 2KB
24c02_Uv2.Bak 2KB
timer_Uv2.Bak 2KB
deng_Uv2.Bak 2KB
iic_Uv2.Bak 2KB
led_Uv2.Bak 2KB
pwm_Uv2.Bak 2KB
0_Uv2.Bak 2KB
59_Uv2.Bak 2KB
59_Uv2.Bak 2KB
LED_Uv2.Bak 2KB
1_Uv2.Bak 2KB
2_Uv2.Bak 2KB
1_Uv2.Bak 2KB
0_Uv2.Bak 2KB
fenpinqi2_Uv2.Bak 2KB
jisuanqi1_Uv2.Bak 2KB
mimaiic_Uv2.Bak 2KB
qiangda_Uv2.Bak 2KB
jieshou_Uv2.Bak 2KB
anjian_Uv2.Bak 2KB
didi_Uv2.Bak 2KB
led_Uv2.Bak 2KB
59_Uv2.Bak 2KB
0_Uv2.Bak 2KB
hj-c52.Uv2.bak 2KB
hj-c52.Uv2.bak 2KB
21FJDQ_Uv2.Bak 2KB
hj-c52_Uv2.Bak 2KB
hj-c52_Uv2.Bak 2KB
liu_Uv2.Bak 2KB
liu_Opt.Bak 1KB
jishiqi_Opt.Bak 1KB
led_Opt.Bak 1KB
qiangda_Opt.Bak 1KB
led_Opt.Bak 1KB
jisuanqi1_Opt.Bak 1KB
21FJDQ_Opt.Bak 1KB
hj-c52.opt.bak 994B
hj-c52.opt.bak 994B
clockdingshi_Opt.Bak 990B
hj-c52_Opt.Bak 989B
hj-c52_Opt.Bak 989B
jvzhenjianpan_Opt.Bak 988B
stdlib_Opt.Bak 986B
jiaotongdeng_Opt.Bak 986B
fenpin_Opt.Bak 985B
geshihua_Opt.Bak 982B
1zijie_Opt.Bak 982B
24c02_Opt.Bak 982B
fenpinqi2_Opt.Bak 980B
mimasuo_Opt.Bak 977B
menling_Opt.Bak 976B
mimaiic_Opt.Bak 975B
anjian_Opt.Bak 975B
0_Opt.Bak 975B
jieshou_Opt.Bak 973B
24c02_Opt.Bak 971B
HL-1_Opt.Bak 971B
didi_Opt.Bak 971B
timer_Opt.Bak 971B
pwm_Opt.Bak 970B
deng_Opt.Bak 970B
59_Opt.Bak 969B
iic_Opt.Bak 969B
HL-1_Opt.Bak 968B
共 533 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
中国周文龙
- 粉丝: 2286
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 美宝莲郑州国贸360店图纸增加灯片完稿.rar
- 基于C++实现的Hough Forests算法用于人体动作识别检测(提供了可视化功能).zip
- this is a GPU word
- 成都金楠天街活动包店.rar
- 【cocos creator】下拉框
- 基于pytorch实现3D ResNet网络的视频动作分类项目源码+运行说明+模型(支持得分模式和特征模式).zip
- 360国贸纽约城市&女神像.rar
- 更新城市蔓延指数数据集(1990-2023年).xlsx
- 动作识别基于PyTorch的3D ResNets模型实现的动作识别任务+运行说明(含训练、微调和测试、在UCF-101和HMDB-51等多数据集训练).zip
- datafor3dgs
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功