74HC595编程与PROTEUS仿真

上传人:博****1 文档编号:458665416 上传时间:2023-11-24 格式:DOCX 页数:8 大小:262.77KB
返回 下载 相关 举报
74HC595编程与PROTEUS仿真_第1页
第1页 / 共8页
74HC595编程与PROTEUS仿真_第2页
第2页 / 共8页
74HC595编程与PROTEUS仿真_第3页
第3页 / 共8页
74HC595编程与PROTEUS仿真_第4页
第4页 / 共8页
74HC595编程与PROTEUS仿真_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《74HC595编程与PROTEUS仿真》由会员分享,可在线阅读,更多相关《74HC595编程与PROTEUS仿真(8页珍藏版)》请在金锄头文库上搜索。

1、5.2 74HC595输出简介:SHCP:移位存放器STCP:存储器DS:串行数据输入先将需要显示的代码的第8位最高位发送到DS,接着,shcp来一次上跳沿操作。从高到低发送完8次以后,有一次stcp上跳沿操作,即完成数据发送。注意:LED数码管显示采用共阴极显示。1.简单显示图5.2:74HC595显示11汇编:ORG 0000HMOV A,#6 /“1LED模型共阴极显示MOV R0,#8 /循环次数MAIN:RLC A /带进位左环移MOV P2.1,C /赋值CLR P2.0NOPNOPSETB P2.0 /方波,上升沿有效DJNZ R0,MAIN /减一不为零跳转CLR P2.2NO

2、PNOPSETB P2.2 /方波,上升沿有效END2C语言:#include /51头文件#include/“空指令头文件sbit shcp=P20;sbit ds=P21;sbit stcp=P22;/管脚定义void led() int i,a=0x06;/a位显示模型,共阴极显示 for(i=0;i8;i+) ds=(ai)&0x80;/位 shcp=0; _nop_(); _nop_(); shcp=1; /上升沿有效 stcp=0; _nop_(); _nop_(); stcp=1; /上升沿有效void main() led(); while(1);2.显示数字图5.3:74HC

3、595显示21汇编ORG 0000H/-主函数-MAIN:CALL M1CALL M2CALL M3CALL M4SJMP MAIN/-显示1-M1:MOV A,#06H /赋值CALL DISPLAY /调用显示子函数CLR P3.4 /翻开共阴极管脚CALL DELAY /延时SETB P3.4 /关闭该管脚RET /返回/-显示2-M2:MOV A,#5BHCALL DISPLAYCLR P3.5CALL DELAYSETB P3.5RET/-显示3-M3:MOV A,#4FHCALL DISPLAYCLR P3.6CALL DELAYSETB P3.6RET/-显示4-M4:MOV A

4、,#66HCALL DISPLAYCLR P3.7CALL DELAYSETB P3.7RET/-显示子函数-DISPLAY: /共阴极显示MOV R1,#8 /循环次数LOOP1:RLC A /带进位左环移MOV P2.1,C /赋值CLR P2.0NOPNOPSETB P2.0 /方波,上升沿有效DJNZ R1,LOOP1 /减一不为零跳转CLR P2.2NOPNOPSETB P2.2 /方波,上升沿有效RET/-延时子函数-DELAY:MOV R2,#2 /大调修改R2值,改变延时长短D2:MOV R3,#10 /中等D3:MOV R4,#0 /微调延时大小D4:NOPDJNZ R4,D

5、4DJNZ R3,D3DJNZ R2,D2RETEND2C语言#include /51头文件#include/“空指令头文件sbit shcp=P20;sbit ds=P21;sbit stcp=P22;/管脚定义sbit a=P34;sbit b=P35;sbit c=P36;sbit d=P37;/-延时子程序-void delay(int i) /延时大小与i有关 int j; while(i-) for(j=255;j0;j-) ;/-LED显示子程序-void led(int j)/共阴极显示 int num=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x

6、07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; int i; for(i=0;i8;i+) ds=(numji)&0x80;/位 shcp=0; _nop_(); _nop_(); shcp=1; /上升沿有效 stcp=0; _nop_(); _nop_(); stcp=1; /上升沿有效/-主程序-void main() int n=1234;/选择需要显示的数值 int n1,n2,n3,n4,i=0; n1=n/1000;/千位 n2=n/100%10;/百位 n3=n/10%10; /十位 n4=n%10; /个位 while(1) switc

7、h(i+)/选择 case 0:led(n1);a=0;break;/显示千位,翻开控制 case 1:led(n2);b=0;break;/显示百位,翻开控制 case 2:led(n3);c=0;break;/显示十位,翻开控制 case 3:led(n4);d=0;break;/显示个位,翻开控制 if(i=4) i=0; /满四次后,从新扫描数码管 delay(1);/延时 a=b=c=d=1; /关闭全部管脚 3.循环显示图5.4:74HC595显示3图5.5:74HC595显示4图5.6:74HC595显示5循环显示0F。1汇编:ORG 0000H/-主函数-MAIN:MOV R0

8、,#16/循环次数显示16次:0FMOV DPTR,#TABLOOP: /循环显示0FMOVC A,A+DPTR /查表CALL DISPLAYCALL DELAYINC DPTRCLR A /清空A内容DJNZ R0,LOOP /减一不为零跳转SJMP MAIN/-显示子函数-DISPLAY: /共阴极显示MOV R1,#8 /循环次数LOOP1:RLC A /带进位左环移MOV P2.1,C /赋值CLR P2.0NOPNOPSETB P2.0 /方波,上升沿有效DJNZ R1,LOOP1 /减一不为零跳转CLR P2.2NOPNOPSETB P2.2 /方波,上升沿有效RET/-延时子函

9、数-DELAY:MOV R2,#2 /大调修改R2值,改变延时长短D2:MOV R3,#0 /中等D3:MOV R4,#0 /微调延时大小D4:NOPDJNZ R4,D4DJNZ R3,D3DJNZ R2,D2RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HEND2C语言#include /51头文件#include/“空指令头文件sbit shcp=P20;sbit ds=P21;sbit stcp=P22;/管脚定义/-延时子程序-void delay(int i) /延时大小与i有关 int

10、 j; while(i-) for(j=255;j0;j-) ;/-LED显示子程序-void led() int num=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; static int j=0; int i; for(i=0;i8;i+) ds=(numji)&0x80;/位 shcp=0; _nop_(); _nop_(); shcp=1; /上升沿有效 stcp=0; _nop_(); _nop_(); stcp=1; /上升沿有效 j+; if(j=16) j=0; /满16后,从新计次/-主程序-void main() while(1) /循环 led(); delay(100); /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号