at89c51串并转换驱动数码管实验指导

at89c51串并转换驱动数码管实验指导

ID:33591051

大小:156.68 KB

页数:5页

时间:2019-02-27

at89c51串并转换驱动数码管实验指导_第1页
at89c51串并转换驱动数码管实验指导_第2页
at89c51串并转换驱动数码管实验指导_第3页
at89c51串并转换驱动数码管实验指导_第4页
at89c51串并转换驱动数码管实验指导_第5页
资源描述:

《at89c51串并转换驱动数码管实验指导》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、AT89C51串并转换驱动数码管实验指导(1)2011-05-1718:49:42来源:互联网关键字:AT89C51串并转换驱动数码管  器件:74hc595.  引脚说明:  SDA:数据输入口。  SH_CP:数据输入控制端,在每个  SH_CP的上升沿,SDA口上的数据移入寄存器,在SH_CP的第9个上升沿,数据开始从QS  移出。  ST_CP:数据置入锁存器控制端。Q0~Q7:数据并行输出端。   数据从SDA口送入74HC595,在每个SH_CP的上升沿,SDA口上的数据移入寄存器,在SH_CP的第  9个上升沿,数据开始从QS移出。如果把

2、第一个74HC595的QS和第二个74HC595的SDA相接,数据即移入第二个74HC595中,  照此一个一个接下去,可接任意多个。数据全部送完后,给ST_CP一个上升沿,寄存器中的数据即置入锁存器。此时如果EN为低电平,数据即从并口Q0~Q7  输出,把Q0~Q7与LED的8段相接,LED就可以实现显示了。要想软件改变LED的亮度,只需改变EN的占空比就行了。  实验原理及内部结构:  如图所示:  74HC595内含8位串入、串/并出移位寄存器和8位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入(SH_CP和ST_CP),都是上升沿有效。当S

3、H_CP从低到高电平跳变时,串行输入数据(SDA)移入寄存器;当ST_CP从低到高电平跳变时,寄存器的数据置入锁存器。清除端(CLR)的低电平只对寄存器复位(QS为低电平),而对锁存器无影响。当输出允许控制(EN)为高电平时,并行输出(Q0~Q7)为高阻态,而串行输出(QS)不受影响。74HC595最多需要5根控制线,即SDA、SH_CP、ST_CP、CLR和EN。其中CLR可以直接接到高电平,用软件来实现寄存器清零;如果不需要软件改变亮度,EN可以直接接到低电平,而用硬件来改变亮度。把其余三根线和单片机的I/O口相接,即可实现对LED的控制。数据从S

4、DA口送入74HC595,在每个SH_CP的上升沿,SDA口上的数据移入寄存器,在SH_CP的第9个上升沿,数据开始从QS移出。如果把第一个74HC595的QS和第二个74HC595的SDA相接,数据即移入第二个74HC595中,照此一个一个接下去,可接任意多个。数据全部送完后,给ST_CP一个上升沿,寄存器中的数据即置入锁存器。此时如果EN为低电平,数据即从并口Q0~Q7输出,把Q0~Q7与LED的8段相接,LED就可以实现显示了。要想软件改变LED的亮度,只需改变EN的占空比就行了。。LED的亮度用PR1~PR3的阻值来控制。P1口的P115、P1

5、16、P117用来控制LED的显示,分别接到ST_CP、SH_CP和SDA脚。实验内容:按下图连接器件:  程序如下所示:  C程序#include  #include  #define uchar unsigned char #define uint unsigned int sbit SDA =   P1^1; sbit SHIFT  =  P1^2; sbit ST  =  P1^0; #define NOP _nop_() uchar led[] = {0x5b,0x3f,0x3f,0x6f}; ucha

6、r select[] = {0x0fe,0xfd,0xfb,0xf7}; uchar i=0; void Init( ) {     SDA = 0;     SHIFT = 0;     ST = 0; } void delay() {    uchar jj;    for(jj=0;jj<200;jj++);    while(jj--); } void display(uchar dat) {     uchar ii;     uchar sdata=dat;       for(ii=0;ii<8;ii++)   {         if(

7、sdata&0x80)     SDA=1;       else     SDA = 0;         sdata<<=1;         SHIFT =0;         NOP;         NOP;         SHIFT = 1;        NOP;        NOP;     }     ST = 1;     NOP;     NOP;     ST = 0; } void main() {     Init();     while(1)   {       delay();     delay();      

8、 P2 = select[i];       display(led[i]);       i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。