登录  | 立即注册

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

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 按键控制Ⅱ

[复制链接]
发表于 2022-1-14 21:53:32 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 单片机
开始时间: 2022-01-14
结束时间: 2022-01-14
幕布链接
https://www.mubucm.com/doc/M9OgAKgaRG
参考《零基础学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,0x06,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 WeiShu);
void main (void)
{
unsigned char num=0;
KeyAdd=1;
KeyDec=1;
while(1)
{
  if(!KeyAdd)
  {
   Display(0,8);
   if(!KeyAdd)
   {
    while(!KeyAdd)         
    {
                 Display(0,8);
    }
    if(num<99)
                 {
      num++;
                 }
         }                  
  }
        if(!KeyDec)
        {
   Display(0,8);
         if(!KeyDec)       
         {
                while(!KeyDec)
    {
     Display(0,8);
                }
    if(num>0)
                 {
      num--;
                 }
          }                 
  }
        TData[0]=DMtable[num/10];
  TData[1]=DMtable[num%10];
  Display(0,8);
}
}
void DelayUs (unsigned char tu)
{
while (--tu);
}
void DelayMs (unsigned char tm)
{
while (tm--);
}
void Display(unsigned char ShiWei,unsigned char WeiShu);
{
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=0;
        DelayMs(2);
}
}

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

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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