标题:
74HC595扩展IO端口的单片机程序和仿真原理图
[打印本页]
作者:
chwldavid
时间:
2017-10-30 08:16
标题:
74HC595扩展IO端口的单片机程序和仿真原理图
74HC595最早应用于点阵显示,后来STC推广在IO端口扩展上,并取得良好的效果。现在将IO扩展应用 于数码管扫描显示上,并循序渐进的学习,让学习者一步一步掌握IO端口扩展。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(17.84 KB, 下载次数: 42)
下载附件
2017-10-30 16:11 上传
0.png
(41.88 KB, 下载次数: 64)
下载附件
2017-10-30 16:11 上传
单片机源程序如下:
#include"reg51.h"
#include"595IO.h"
#define uchar unsigned char
#define uint unsigned int
void delay(uchar i);
void distime(uchar up,uchar time);
uchar segcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar digcode[]={0xef,0xdf,0xbf,0x7f};
struct time
{
uchar hour;
uchar min;
uchar sec;
uchar secc;
}time1={12,0,0,0};
void main(void)
{
IE=0x82;TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
while(1)
{
distime(0,time1.hour);
distime(2,time1.min);
}
}
void delay(uchar i)
{
uchar j;
do
{
for(j=0;j<250;j++);
}while(i--);
}
void distime(uchar up,uchar time)
{
wr595(digcode[up],segcode[time/10]);
delay(4);
wr595(digcode[up],0);
if(up==0&&time1.sec%2==0)
wr595(digcode[up+1],segcode[time%10]|0x80);
else
wr595(digcode[up+1],segcode[time%10]);
delay(4);
wr595(digcode[up+1],0);
}
void tt0(void) interrupt 1 using 0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time1.secc++;
if(time1.secc==20)
{
time1.secc=0;
time1.sec++;
if(time1.sec==60)
{
time1.sec=0;
time1.min++;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
595IO.RAR
(70.12 KB, 下载次数: 43)
2017-10-30 08:16 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
我在在他乡
时间:
2018-3-10 12:40
很给力!很给力!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1