找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3966|回复: 1
收起左侧

74HC595扩展IO端口的单片机程序和仿真原理图

[复制链接]
ID:243005 发表于 2017-10-30 08:16 | 显示全部楼层 |阅读模式
74HC595最早应用于点阵显示,后来STC推广在IO端口扩展上,并取得良好的效果。现在将IO扩展应用 于数码管扫描显示上,并循序渐进的学习,让学习者一步一步掌握IO端口扩展。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源程序如下:
  1.       #include"reg51.h"
  2.             #include"595IO.h"
  3.                         #define uchar unsigned char
  4.             #define uint unsigned int
  5.                         void delay(uchar i);
  6.                         void distime(uchar up,uchar time);
  7.                         uchar segcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  8.                         uchar digcode[]={0xef,0xdf,0xbf,0x7f};
  9.                         struct time
  10.                         {
  11.           uchar hour;
  12.                                   uchar min;
  13.                                   uchar sec;
  14.                                   uchar secc;
  15.       }time1={12,0,0,0};
  16.                         void main(void)
  17.                         {
  18.                                  IE=0x82;TMOD=1;
  19.                                  TH0=(65536-50000)/256;
  20.                                  TL0=(65536-50000)%256;
  21.                                  TR0=1;
  22.                                  while(1)
  23.          {
  24.             distime(0,time1.hour);
  25.                                           distime(2,time1.min);
  26.          }                                         
  27.       }
  28.                         void delay(uchar i)
  29.                         {
  30.           uchar j;
  31.                                   do
  32.                                         {
  33.              for(j=0;j<250;j++);
  34.           }while(i--);
  35.       }
  36.                         void distime(uchar up,uchar time)
  37.                         {
  38.           wr595(digcode[up],segcode[time/10]);
  39.                                   delay(4);
  40.                                   wr595(digcode[up],0);
  41.                                   if(up==0&&time1.sec%2==0)
  42.                                      wr595(digcode[up+1],segcode[time%10]|0x80);
  43.                                         else
  44.                                                  wr595(digcode[up+1],segcode[time%10]);
  45.                                   delay(4);
  46.                                   wr595(digcode[up+1],0);
  47.       }
  48.                         void tt0(void) interrupt 1 using 0
  49.       {
  50.           TH0=(65536-50000)/256;
  51.                                   TL0=(65536-50000)%256;
  52.                                   time1.secc++;
  53.                                   if(time1.secc==20)
  54.                                         {
  55.              time1.secc=0;
  56.                                                  time1.sec++;
  57.                                                  if(time1.sec==60)
  58.                                                  {
  59.                 time1.sec=0;
  60.                                                           time1.min++;
  61. ……………………

  62. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
595IO.RAR (70.12 KB, 下载次数: 43)


回复

使用道具 举报

ID:93809 发表于 2018-3-10 12:40 | 显示全部楼层
很给力!很给力!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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