模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目工程

一、前言

1、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目包括用Keil软件编写单片机C语言程序和用Proteus软件仿真单片机外围电路

2、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目构思

(1)、声明程序变量思维导图

(2)、程序子函数思维导图

(3)、程序主函数思维导图

二、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目的Keil软件编写的单片机C语言程序

#include<reg51.h>//单片机头文件
#define SMG P0//自定义单片机P0组端口为变量SMG
#define uchar unsigned char//自定义变量uchar为unsigned char 
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码显示0~9数字的数组,低电平点亮数码管段码数字0~9。
//uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; //共阴数码管段码数字0~9字码表,高电平点亮数码管段码数字0~9。
int num;//共阳数码管段码数组下标数字变量
sbit AA = P1^0;//接编码器A端
sbit BB = P1^1;//接编码器B端
  void delay(uchar z)//延时函数
{
   uchar i,j;
   for(i = 0; i < z; i++)
    for(j = 0; j < 120; j++);
}
  void main()//主函数
{
   while(1)//死循环
  {  
    if(num<0)//判断共阳数码管段码数组下标数字变量是否小于0
   {
	 num=9;//共阳数码管段码数组下标数字变量变为9
	}
    if(num>9)//判断共阳数码管段码数组下标数字变量是否大于9
   {
     num=0;//共阳数码管段码数组下标数字变量变为0
	}
   SMG=table[num];//共阳数码管段码显示0~9数字的数组赋值给变量SMG,相当于赋值给单片机P0组端口,从而让数码管显示出0~ 9数字。            
   if(AA == 0)//开始检测是否旋转了开关
  {
    delay(10);//消除抖动
    if(AA == 0) //确实是旋转了,进行正反转判断。
   {
     delay(10);//消除抖动
	 while(!AA);//等待开关A端复位(断开),防止出现乱加减的现象。
	 if(BB == 1)//正转,进行正转处理。
    {
      num++;//数码管数值增加
     }
     if(BB == 0)//反转,进行反转处理。
    {
      num--;//数码管数值减少
     }
    }
   }
  }
 }

三、模拟EC11系列数字旋转编码器旋转方向改变数值让数码管显示一个数值的项目Proteus软件仿真单片机外围电路

在这里插入图片描述在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值