• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: 其他
  • 标签: 记分器  

资源简介

基于51单片机的记分器,外设利用资源为矩阵键盘,数码管,蜂鸣器,单片机课程设计经常的课题.

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint unsigned int
sbit led1=P2^4;
sbit led2=P2^5;
sbit led3=P2^6;
sbit led4=P2^7;
uint key;
int a_scores;
int b_scores;
uint a_shi;
uint a_ge;
uint b_shi;
uint b_ge;
uchar shu; //每次加减分数     
uchar flag=0; //判断胜负标志位                   

uchar code table[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x90x71 };
//{0xc00xf90xa40xb00x990x920x820xf80x800x900x880x830xc60xa10x860x8e };

void delayxms(uint xms)
{
uint ij;
for(i=0;i for(j=0;j<110;j++);
}

void key_scan()  //键盘扫描程序
{
uchar temp;

    P1=0xfe;//给P1口送状态1111 1110//扫描第1排
    temp=P1;
    temp=temp&0xf0;
if(temp!=0xf0)//延时10ms消抖确认有键按下
{
         delayxms(10);
   temp=P1; //再次读i/o状态 
 temp=temp&0xf0;
 if(temp!=0xf0)
  {
 temp=P1;//若有键按下高四位有一位拉低
 switch(temp)
  {
 case 0x7e:key=1;break; //0111 1110  A队加分  
 case 0xbe:key=2;break; //1011 1110  A队减分
 case 0xde:key=3;break; //1101 1110  B队加分
 case 0xee:key=4;break; //1110 1110  B队减分
}
   while(temp!=0xf0)//等待按键释放未释放则一直停留在这个语句
{
       temp=P1;
 temp=temp&0xf0;
}
             key=key;  
}
}
  
    P1=0xfd;//给P1口送状态1111 1101//扫描第2排
    temp=P1;
    temp=temp&0xf0;
if(temp!=0xf0)//延时10ms消抖
{
         delayxms(10);
   temp=P1; //再次读i/o状态确认有键按下 
 temp=temp&0xf0;
 if(temp!=0xf0)
  {
 temp=P1;//若有键按下高四位有一位拉低
 switch(temp)
  {
 case 0x7d:key=5;break; //0111 1101  切换加减分数    
 case 0xbd:key=6;break; //1011 1101   预置分数   
 case 0xdd:key=7;break; //1101 1101   清零 
 case 0xed:key=8;flag=1;break; //1110 1101 判断  
}
 while(temp!=0xf0)//等待按键释放未释放则一直停留在这个语句

评论

共有 条评论