找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 983|回复: 0
打印 上一主题 下一主题
收起左侧

数码管键盘 程序

[复制链接]
跳转到指定楼层
楼主
ID:249713 发表于 2018-6-6 14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <STC15F2K60S2.H>
unsigned char seg[]={0x05,0xdd,0x46,0x54,0x9c,0x34,0x24,0x5d,0x04,0x14};
unsigned char num[4]={0};
unsigned int i=0;
sbit v1=P3^4;
sbit v2=P3^5;
sbit v3=P3^6;
sbit v4=P3^7;
sbit s1=P3^2;
sbit s2=P0^0;
sbit spk=P0^5;
sbit ledc=P0^7;
void delay()
{
unsigned int i;
for(i=0;i<6000;i++);
}
void dela()
{
unsigned int i;
for(i=0;i<40000;i++);
}
bit keyscan()
{
unsigned char keytemp;
ledc=1;
ledc=1;
P1=0xff;
P1=0xff;
P1=0xfe;
keytemp=P1;
keytemp=keytemp&0xf0;
if(keytemp!=0xf0)
{
  num[0]=num[1];
  num[1]=num[2];
  num[2]=num[3];
  if(keytemp==0xe0) num[3]=1;
  if(keytemp==0xd0) num[3]=2;
  if(keytemp==0xb0) num[3]=3;
  return 1;
}
  P1=0xfd;
keytemp=P1;
keytemp=keytemp&0xf0;
if(keytemp!=0xf0)
{
  num[0]=num[1];
  num[1]=num[2];
  num[2]=num[3];
  if(keytemp==0xe0) num[3]=4;
  if(keytemp==0xd0) num[3]=5;
  if(keytemp==0xb0) num[3]=6;
  return 1;
}
  P1=0xfb;
keytemp=P1;
keytemp=keytemp&0xf0;
if(keytemp!=0xf0)
{
  num[0]=num[1];
  num[1]=num[2];
  num[2]=num[3];
  if(keytemp==0xe0) num[3]=7;
  if(keytemp==0xd0) num[3]=8;
  if(keytemp==0xb0) num[3]=9;
  return 1;
}
P1=0xf7;
keytemp=P1;
keytemp=keytemp&0xf0;
if(keytemp!=0xf0)
{
  if(keytemp==0xe0) {num[0]=0;num[1]=0;num[2]=0;num[3]=0;}
  if(keytemp==0xd0) {num[0]=num[1];num[1]=num[2];num[2]=num[3];num[3]=0;}
  return 1;
}
return 0;
}
void main()
{
unsigned int j;
P2M1=0x00;
P2M0=0xff;
P3M1=0x00;
P3M0=0xff;
P0M1=0x00;
P0M0=0xff;
P5M1=0x00;
P5M0=0xff;
P1M1=0x00;
P1M0=0x00;
s1=1;
s2=1;
spk=1;
ledc=1;
while(1)
{
  if(keyscan())
  {
   P1=0xff;
    P1=0xff;
    ledc=1;
    spk=0;
    dela();
   spk=1;
  }
  if(s1==0)
  {
   spk=0;
   num[3]++;
   if(num[3]==10)  {num[3]=0;num[2]++;}
   if(num[2]==10)  {num[2]=0;num[1]++;}
   if(num[1]==10)  {num[1]=0;num[0]++;}
   if(num[0]==10)  num[2]=0;
   delay();
   spk=1;
  }
  if((s2==0)&&((num[0]+num[1]+num[2]+num[3])!=0))
   {
   spk=0;
   num[3]--;
   if(num[3]==10)  {num[3]=9;num[2]--;}
   if(num[2]==10)  {num[2]=9;num[1]--;}
   if(num[1]==10)  {num[1]=9;num[0]--;}
   if(num[0]==10)  num[2]=0;
   delay();
   spk=1;
  }
  
  for(j=0;i<30;j++)
  {
   v4=0;
   v1=1;
   P2=seg[num[0]];
   delay();
   v1=0;
   v2=1;
   P2=seg[num[1]];
   delay();
   v2=0;
   v3=1;
   P2=seg[num[2]];
   delay();
   v3=0;
   v4=1;
   P2=seg[num[3]];
   delay();
   
  }
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表