proteus原理图及程序(74HC595级联点亮LED)

更新时间:2024-03-18 05:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

#include //51头文件 #include // #define uchar unsigned char #define uint unsigned int

//--定义使用的IO口--//

sbit DS=P2^1; //串行数据输入

sbit SHCP=P2^0; //移位寄存器时钟输入,为低电平时将595数据清零

sbit STCP=P2^2; //片选,存储寄存器时钟输入,STCP时钟上升沿时,将595数据送入存储寄存器

uchar data adata; void delayms(uint t); void Input(uchar ch); void Output(adata);

/******************************************************** * *

* 延时子程序 * * *

*********************************************************/ void delayms(uint t) {

uchar i;

while(t-->0){

for(i=0;i<125;i++){;}

} }

/******************************************************** * *

* 输入数据子程序 * * *

*********************************************************/ void Input(uchar ch) //将显示数据送入74HC595内部移位寄存 {

uchar BitCounter=8; //位数控制 uchar tmp; do

{ tmp=ch; SHCP=0;

if((tmp&0x80)==0x80) //如果最高位是1 DS=1; else DS=0; SHCP=1;

tmp=ch<<1; //左移 ch=tmp;

BitCounter--; _nop_(); STCP=0; }

while(BitCounter); }

/******************************************************** * *

* 输出数据子程序 * * *

*********************************************************/

void Output(adata) //将移位寄存器内的数据锁存到输出寄存器并显示,adata为输出的数据 {

STCP=0; _nop_(); _nop_(); _nop_();

STCP=1; //上升沿将数据送到输出锁存器 _nop_(); _nop_(); _nop_();

STCP=0; //一个锁存脉冲输出 }

/******************************************************** * *

* 主程序 * * *

*********************************************************/ void main(void) //主程序 {

STCP=0; SHCP=1;

adata=0x01; //adata中放待输出的数据 Input(adata);

Output(adata); //输出数据 delayms(1000);

adata=adata<<1; //将adata左移1位后再赋给adata }

本文来源:https://www.bwwdw.com/article/y5f8.html

Top