这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 蓝桥杯单片机竞赛训练项目--I/O口使用3

共4条 1/1 1 跳转至

蓝桥杯单片机竞赛训练项目--I/O口使用3

菜鸟
2019-01-23 20:31:53     打赏
/******按下按键S4-S7,数码管分别显示键值1-4******
#include <STC15F2K60S2.H>
#include "intrins.h"
unsigned char code smgduan[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XFF};//0,1,2,3,4,5,6,7,8,9
               
unsigned char yi,er,san,si,wu,liu,qi,ba,duan[8];
unsigned char Flag;
               
unsigned char P30_S7,P31_S6,P32_S5,P33_S4;
void Display1();
void Display2();
void Delay1ms(unsigned int ms);
void Key_Scan();
void main()
{
 P2=0XA0;P0=0X00;//关闭蜂鸣器,继电器
 P2=0X80;P0=0XFF;//关闭LED灯
 while(1)
 {
  Display1();
  Display2();
  Key_Scan();
  yi=10;er=10;san=10;si=10;
  wu=10;liu=10;qi=10;ba=Flag;
 }
}
void Display1()
{
 unsigned char a;
 for(a=0;a<8;a++)
 {
  P2=0XC0; P0=1<<a;
  P2=0XFF; P0=duan[a];
  Delay1ms(1);
 }
 P2=0XC0; P0=0XFF;//消隐,解决最后一个数码管高亮度
 P2=0XFF; P0=0XFF;
}
void Display2()
{
 duan[0] = smgduan[yi];
 duan[1] = smgduan[er];
 duan[2] = smgduan[san];
 duan[3] = smgduan[si];
 duan[4] = smgduan[wu];
 duan[5] = smgduan[liu];
 duan[6] = smgduan[qi];
 duan[7] = smgduan[ba];
}
void Delay1ms(unsigned int ms)  //@11.0592MHz
{
 unsigned char i, j;
 _nop_(); _nop_(); _nop_();
 i = 11*ms;
 j = 190;
 do
 { while (--j); } while (--i);
}
void Key_Scan()
{
 if(P30==0) { P30_S7=1; }
 if(P31==0) { P31_S6=1; }
 if(P32==0) { P32_S5=1; }
 if(P33==0) { P33_S4=1; }
 
 if((P30_S7==1)&&(P30==1))//S7
 { Delay1ms(5); if(P30==1) { Flag=1; P30_S7=0; } }
 
 if((P31_S6==1)&&(P31==1))//S6
 { Delay1ms(5); if(P31==1) { Flag=2; P31_S6=0; } }
 
 if((P32_S5==1)&&(P32==1))//S5
 { Delay1ms(5); if(P32==1) { Flag=3; P32_S5=0; } }
 
 if((P33_S4==1)&&(P33==1))//S4
 { Delay1ms(5); if(P33==1) { Flag=4; P33_S4=0; } }
}
***/

//******数码管初始显示0,单击S4,显示值加1,单击S5数值减1,长按S6数值连续加1,长按S7数值连续减1******
#include <STC15F2K60S2.H>
#include "intrins.h"
unsigned char code smgduan[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XFF};//0,1,2,3,4,5,6,7,8,9
               
unsigned char yi,er,san,si,wu,liu,qi,ba,duan[8];
unsigned char Flag,jia,jian;
               
unsigned char P30_S7,P31_S6,P32_S5,P33_S4;
void Display1();
void Display2();
void Delay1ms(unsigned int ms);
void Key_Scan();
void GongNeng();
void main()
{
 P2=0XA0;P0=0X00;//关闭蜂鸣器,继电器
 P2=0X80;P0=0XFF;//关闭LED灯
 while(1)
 {
  Display1();
  Display2();
  Key_Scan();
  GongNeng();
  yi=10;er=10;san=10;si=10;
  wu=10;liu=Flag/100;qi=Flag%100/10;ba=Flag%10;
 }
}
void Display1()
{
 unsigned char a;
 for(a=0;a<8;a++)
 {
  P2=0XC0; P0=1<<a;
  P2=0XFF; P0=duan[a];
  Delay1ms(1);
 }
 P2=0XC0; P0=0XFF;//消隐,解决最后一个数码管高亮度
 P2=0XFF; P0=0XFF;
}
void Display2()
{
 duan[0] = smgduan[yi];
 duan[1] = smgduan[er];
 duan[2] = smgduan[san];
 duan[3] = smgduan[si];
 duan[4] = smgduan[wu];
 duan[5] = smgduan[liu];
 duan[6] = smgduan[qi];
 duan[7] = smgduan[ba];
}
void Delay1ms(unsigned int ms)  //@11.0592MHz
{
 unsigned char i, j;
 _nop_(); _nop_(); _nop_();
 i = 11*ms;
 j = 190;
 do
 { while (--j); } while (--i);
}
void Key_Scan()
{
 if(P30==0) { P30_S7=1; }
 if(P31==0) { P31_S6=1; }
 if(P32==0) { P32_S5=1; }
 if(P33==0) { P33_S4=1; }
 
 if((P30_S7==1)&&(P30==1))//S7
 { Delay1ms(5); if(P30==1) { P30_S7=0; } }
 
 if((P31_S6==1)&&(P31==1))//S6
 { Delay1ms(5); if(P31==1) { P31_S6=0; } }
 
 if((P32_S5==1)&&(P32==1))//S5
 { Delay1ms(5); if(P32==1) { jian=1; P32_S5=0; } }
 
 if((P33_S4==1)&&(P33==1))//S4
 { Delay1ms(5); if(P33==1) { jia=1; P33_S4=0; } }
}
void GongNeng()
{
 if((jia==1)||(P31_S6==1) ) { jia=0; Flag++; }
 
 if((jian==1)||(P30_S7==1)) { jian=0; Flag--; }
 
 if(Flag==256) { Flag=0; }
}






关键词: 蓝桥     单片机     竞赛    

菜鸟
2019-01-23 20:35:14     打赏
2楼

自己占楼


高工
2019-01-24 00:17:49     打赏
3楼

不错,进度很快~!给你支持一下


管理员
2019-01-24 08:38:58     打赏
4楼

涨姿势


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]