模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示四个数值的项目工程
一、前言
1、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示四个数值的项目包括用Keil软件编写单片机C语言程序和用Proteus软件仿真单片机外围电路
2、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示四个数值的项目构思
(1)、声明程序变量思维导图
(2)、程序子函数思维导图
(3)、程序主函数思维导图
二、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示四个数值的项目的Keil软件编写的单片机C语言程序
#include<reg52.h>
#define uchar unsigned char
#define int int
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P3^4;
int KeyValue;
int ge ,shi,bai,qian;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;
void Delay(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void ShuMaGuanDisplayKeyValue(int KeyValue)
{
qian=KeyValue/1000;
bai=KeyValue%1000/100;
shi=KeyValue%100/10;
ge=KeyValue%10;
P2=0xfe;
P0=table[qian];
Delay(5);
P2=0xfd;
P0=table[bai];
Delay(5);
P2=0xfb;
P0=table[shi];
Delay(5);
P2=0xf7;
P0=table[ge];
Delay(5);
}
void KeyScan()
{
if(K1==0)
{
ShuMaGuanDisplayKeyValue(KeyValue);
if(K1==0)
{
while(!K1)
ShuMaGuanDisplayKeyValue(KeyValue);
if(K2==1)
{
KeyValue=KeyValue+5;
}
if(K2==0)
{
KeyValue=KeyValue-5;
}
}
}
}
void main()
{
while(1)
{
KeyScan();
ShuMaGuanDisplayKeyValue(KeyValue);
if(KeyValue<0)
{
KeyValue=0;
}
if(KeyValue>9999)
{
KeyValue=0;
}
}
}
三、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示四个数值的项目Proteus软件仿真单片机外围电路
