打印

89c52的单片机

[复制链接]
734|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ktchan|  楼主 | 2017-12-9 15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机初学者,请教论坛的大神指点,下面的diaplay()函数里
  P0=table[0];
  P2_0 = 0;
   delay(5);
   P2_0 = 1;怎么解释(7段数码管是共阳的),看不懂




#include <reg52.h>
#define uchar unsigned char
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
                        0xf8,0x80,0x90};//共阳数字编码  0.1.2.3.4....9

/********************************************************************
* 名称 : Delay()
* 功能 : 延时
* 输入 : i
* 输出 : 无
***********************************************************************/
void delay(uchar i)         //延时函数
{
  uchar j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}

/********************************************************************
* 名称 : display()
* 功能 : 数码管显示函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void display() //显示函数
{
  
   P0=table[0];
   P2_0 = 0;
   delay(5);
   P2_0 = 1;

   P0=table[1];
   P2_1 = 0;
   delay(5);
   P2_1 = 1;

   P0=table[2];
   P2_2 = 0;
   delay(5);
   P2_2 = 1;

    P0=table[3];
   P2_3 = 0;
   delay(5);
   P2_3 = 1;
   
}


void main(void)
{   
        while(1)
        {
                display();
        }
}

相关帖子

沙发
ningling_21| | 2017-12-9 19:51 | 只看该作者
动态扫描数码管的程序,百度一下“动态扫描数码管” 的原理就知道

使用特权

评论回复
板凳
caijie001| | 2017-12-10 12:03 | 只看该作者
P20---P23是数码管的位选,点亮哪一个数码管让他导通

使用特权

评论回复
地板
gx_huang| | 2017-12-10 12:20 | 只看该作者
这个和单片机原理关系不大,先学习一下基础的硬件知识。

使用特权

评论回复
5
ktchan|  楼主 | 2017-12-12 16:57 | 只看该作者
ningling_21 发表于 2017-12-9 19:51
动态扫描数码管的程序,百度一下“动态扫描数码管” 的原理就知道

谢谢,我明白了

使用特权

评论回复
6
ktchan|  楼主 | 2017-12-12 16:58 | 只看该作者
caijie001 发表于 2017-12-10 12:03
P20---P23是数码管的位选,点亮哪一个数码管让他导通

不太懂,但还是谢谢你

使用特权

评论回复
7
ktchan|  楼主 | 2017-12-12 16:58 | 只看该作者
gx_huang 发表于 2017-12-10 12:20
这个和单片机原理关系不大,先学习一下基础的硬件知识。

使用特权

评论回复
8
zqx1000| | 2018-4-10 23:35 | 只看该作者
kankan

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

0

粉丝