登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 少量按键控制的应用

[复制链接]
发表于 2022-1-13 21:19:58 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 单片机
开始时间: 2022-01-13
结束时间: 2022-01-13

幕布链接
https://www.mubucm.com/doc/x2PqLc54Ha
参考《零基础学51单片机(C语言版)》

两个按键控制一位数字增、减并用8位数码管显示
#include<reg51.h>
sbit KeyAdd=P3^0;
sbit KeyDec=P3^1;
#define WDM P0
sbit DuanSuo=P2^2;
sbit WeiSuo =P2^3;
unsigned char code DMtable[]={0x3f,0x6f,0x5b,
                                    0x4f,0x66,0x6d,
                                    0x7d,0x07,0x7f,0x6f};
unsigned char code WMtable[]={0xfe,0xfd,0xfb,0xf7,
                                    0xef,0xdf,0xbf,0x7f};
unsigned char TData[8];
void DelayUs(unsigned char tu);
void DelayMs(unsigned char tm);                                                                                                                       
void Display(unsigned char ShiWei,unsigned char WeiSshu);
void main (void)
{
unsigned char num=0;
KeyAdd=1;
KeyDec=1;
while(1)
{
  if (!KeyAdd)
  {
   DelayMs(10);
   if(!KeyAdd)  
   {
    while(!KeyAdd);
    if(num<9>)
    {
     num++;
    }
         }
  }
        if(!KeyDec)
        {
   DelayMs(10);
   if(!KeyDec)
   {
    while(!KeyDec);
                if(num>0)
                {
                        num--;
                }
         }
  }
  TData[0]=DMtable[num%10];
  Display        (0,1);
}
}
void DelayUs(unsigned char tu)
{
        while(--tu);
}
void DelayMs(unsigned char tm)
{
while(tm--)
{
  DelayUs(248);
  DelayUs(248);
}
}
void Display(unsigned char ShiWei,unsigned char WeiSshu);
{
unsigned char i;
for(i=0;i<WeiShu;i++)
{
  WDM=0;
  DuanSuo=1;
  DuanSuo=0;
        WDM=WMtable[i+ShiWei];
  WeiSuo=1;         
        WeiSuo=0;
  WDM=TData;
  DuanSuo=1;
  DuanSuo=1;
  DelayMs(2);
}
}

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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