找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1980|回复: 2
收起左侧

51单片机用74H595扩展IO方法动态显示

[复制链接]
ID:370644 发表于 2019-11-3 13:51 | 显示全部楼层 |阅读模式
      非常感恩有此论坛,经常在开发遇到问题,在百度搜索每次都是51hei,帮我解决了问题,其它论坛好像都是非常含糊,而51hei里面的内容都是真实,而实用的,在此非常感谢,也非常感恩,我也要经常分享给大家,希望对于刚需的朋友得到帮助!   
/*一款测试架程序,MCU采用宏晶STC12C5204AD,
电压表与电流表驱动采用两片74HC595,其次蜂鸣器与两个
LED分别占用3个IO口,电压表AD输入口为P1.6,电流表为P1.7,
其次分别用八个IO口来控制电压表电流表的位,主要通过AD转
换后结果来检测电流与电压,然后判断被测产品电压,当它于
小一定电压值或超出一定电压值时,它都会报警,并且红LED
闪烁亮起,当它在一定电压范围内时,绿LED闪烁亮起!*/
#include <reg52.h>//头文件
#include <intrins.h>
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
sbit sdata=P1^1;//74HC595数据输出端
sbit sclk=P1^6;//74HC595移位脉冲
sbit clk=P1^0;//74HC595移位锁存端
uchar code table[]={
0x03,0x9f,0x25,0x0d,0x99,
0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71};//数码管显示代码
uchar num,dii;//定义数码显示结果变量
uchar shu;
void delay(uint z)//延时
{
uint x,y;
for(x=230;x>0;x--)
for(y=z;y>0;y--);
}
void song()
{
uchar shu2;
for(shu2=0;shu2<8;shu2++)
{
if(num&0x01==1)
sdata=1;
else
sdata=0;
sclk=1;
sclk=1;
sclk=0;
sclk=0;
sclk=1;//移位脉冲
  sclk=1;//移位脉冲
num>>=1;
}
clk=1;
clk=0;
clk=1;
}
void xian()
{


num=table[shu];//同理
song();
delay(6500);
shu++;
if(shu>=16)
shu=0;


}
void main()
{

while(1)
{
xian();
}

}


下面是固定显示
/*一款测试架程序,MCU采用宏晶STC12C5204AD,
电压表与电流表驱动采用两片74HC595,其次蜂鸣器与两个
LED分别占用3个IO口,电压表AD输入口为P1.6,电流表为P1.7,
其次分别用八个IO口来控制电压表电流表的位,主要通过AD转
换后结果来检测电流与电压,然后判断被测产品电压,当它于
小一定电压值或超出一定电压值时,它都会报警,并且红LED
闪烁亮起,当它在一定电压范围内时,绿LED闪烁亮起!*/
#include <reg52.h>//头文件
#include <intrins.h>
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
sbit sdata=P1^1;//74HC595数据输出端
sbit sclk=P1^6;//74HC595移位脉冲
sbit clk=P1^0;//74HC595移位锁存端
uchar code table[]={
0x03,0x9f,0x25,0x0d,0x99,
0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71};//数码管显示代码
uchar num,dii;//定义数码显示结果变量
uchar shu=4;
void delay(uint z)//延时
{
uint x,y;
for(x=230;x>0;x--)
for(y=z;y>0;y--);
}
void song()
{
uchar shu2;
num=table[shu];//同理
for(shu2=0;shu2<8;shu2++)
{
if(num&0x01==1)
sdata=1;
else
sdata=0;
sclk=1;
sclk=1;
sclk=0;
sclk=0;
sclk=1;//移位脉冲
  sclk=1;//移位脉冲
num>>=1;
}
clk=1;
clk=0;
clk=1;
}
void main()
{

while(1)
{
song();
}

}

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:64269 发表于 2019-11-14 00:10 | 显示全部楼层
可以可以,51黑确实不错.
回复

使用道具 举报

ID:140239 发表于 2019-11-14 12:40 | 显示全部楼层
有仿真图吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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