用串入并出芯片 74HC595 驱动数码管

由两片 74HC595 级连,分别输出段、位,驱动八位共阳数码管。


要求,最左边的数码管显示1,第二个显示2...,同时显示。


题目链接:http://zhidao.baidu.com/question/583398119.html


做而论道编写的程序如下:


#include


typedef unsigned char uchar;

typedef unsigned int  uint;


sbit  sda = P3^5;

sbit  scl = P3^6;

sbit  rck = P3^7;

//--------------------------------------------------------

char code SEG[] = {

    0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//--------------------------------------------------------

void sendbyte(uchar dat)         //串行输出一字节

{    

    uchar i; 

    for(i = 0; i < 8; i++) {

      if (dat & 0x80)  sda = 1;  else  sda = 0;

      scl = 0;  dat <<= 1; scl = 1;

    }

}

//--------------------------------------------------------

void display(uchar x, uchar dat) //位置, 段码

{

    uchar i;

    rck = 0;  sendbyte(1 << x); sendbyte(dat);  rck = 1;

    for(i = 0; i < 100; i++);    //延时

    rck = 0;  sendbyte(0); sendbyte(255);  rck = 1;

}

//--------------------------------------------------------

void main()

{

    uchar i = 0;

    while (1)  {

      display(i, SEG[i + 1]);  //每次输出两个字节

      i++;

      i %= 8;

    }

}

//--------------------------------------------------------


仿真截图如下:


用串入并出芯片 74HC595 驱动数码管_第1张图片


插图链接:http://xiangce.baidu.com/picture/detail/5be315704e5b9dd36807b5570fcd6a23806c5c15



你可能感兴趣的:(串口通信)