收藏 分销(赏)

74HC595编程与PROTEUS仿真设计.doc

上传人:二*** 文档编号:4745660 上传时间:2024-10-11 格式:DOC 页数:10 大小:671KB 下载积分:5 金币
下载 相关 举报
74HC595编程与PROTEUS仿真设计.doc_第1页
第1页 / 共10页
本文档共10页,全文阅读请下载到手机保存,查看更方便
资源描述
. . . . 5.2 74HC595输出 简介: SHCP:移位寄存器 STCP:存储器 DS:串行数据输入 先将需要显示的代码的第8位(最高位)发送到DS,接着,shcp来一次上跳沿操作。从高到低发送完8次以后,有一次stcp上跳沿操作,即完成数据发送。 注意:LED数码管显示采用共阴极显示。 1.简单显示 图5.2:74HC595显示(1) (1)汇编: ORG 0000H MOV A,#6 //“1”LED模型共阴极显示 MOV R0,#8 //循环次数 MAIN: RLC A //带进位左环移 MOV P2.1,C //赋值 CLR P2.0 NOP NOP SETB P2.0 //方波,上升沿有效 DJNZ R0,MAIN //减一不为零跳转 CLR P2.2 NOP NOP SETB P2.2 //方波,上升沿有效 END (2)C语言: #include<reg51.h> //51头文件 #include<intrins.h>//“空指令”头文件 sbit shcp=P2^0; sbit ds=P2^1; sbit stcp=P2^2; //管脚定义 void led() { int i,a=0x06;//a位显示模型,共阴极显示 for(i=0;i<8;i++) { ds=(a<<i)&0x80;//位 shcp=0; _nop_(); _nop_(); shcp=1; //上升沿有效 } stcp=0; _nop_(); _nop_(); stcp=1; //上升沿有效 } void main() { led(); while(1); } 2.显示数字 图5.3:74HC595显示(2) (1)汇编 ORG 0000H //----主函数------- MAIN: CALL M1 CALL M2 CALL M3 CALL M4 SJMP MAIN //--------显示1------ M1: MOV A,#06H //赋值 CALL DISPLAY //调用显示子函数 CLR P3.4 //打开共阴极管脚 CALL DELAY //延时 SETB P3.4 //关闭该管脚 RET //返回 //-------显示2------- M2: MOV A,#5BH CALL DISPLAY CLR P3.5 CALL DELAY SETB P3.5 RET //---------显示3----- M3: MOV A,#4FH CALL DISPLAY CLR P3.6 CALL DELAY SETB P3.6 RET //------显示4-------- M4: MOV A,#66H CALL DISPLAY CLR P3.7 CALL DELAY SETB P3.7 RET //------显示子函数-------- DISPLAY: //(共阴极显示) MOV R1,#8 //循环次数 LOOP1: RLC A //带进位左环移 MOV P2.1,C //赋值 CLR P2.0 NOP NOP SETB P2.0 //方波,上升沿有效 DJNZ R1,LOOP1 //减一不为零跳转 CLR P2.2 NOP NOP SETB P2.2 //方波,上升沿有效 RET //-------延时子函数-------- DELAY: MOV R2,#2 //(大调)修改R2值,改变延时长短 D2: MOV R3,#10 //中等 D3: MOV R4,#0 //微调延时大小 D4: NOP DJNZ R4,D4 DJNZ R3,D3 DJNZ R2,D2 RET END (2)C语言 #include<reg51.h> //51头文件 #include<intrins.h>//“空指令”头文件 sbit shcp=P2^0; sbit ds=P2^1; sbit stcp=P2^2; //管脚定义 sbit a=P3^4; sbit b=P3^5; sbit c=P3^6; sbit d=P3^7; //-----延时子程序------ void delay(int i) //延时大小与i有关 { int j; while(i--) for(j=255;j>0;j--) ; } //-----LED显示子程序------ void led(int j) //共阴极显示 { int num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; int i; for(i=0;i<8;i++) { ds=(num[j]<<i)&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) { switch(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) 循环显示0~F。 (1)汇编: ORG 0000H //----主函数------- MAIN: MOV R0,#16 //循环次数(显示16次:0~F) MOV DPTR,#TAB LOOP: //循环显示0~F MOVC A,A+DPTR //查表 CALL DISPLAY CALL DELAY INC DPTR CLR A //清空A容 DJNZ R0,LOOP //减一不为零跳转 SJMP MAIN //------显示子函数-------- DISPLAY: //(共阴极显示) MOV R1,#8 //循环次数 LOOP1: RLC A //带进位左环移 MOV P2.1,C //赋值 CLR P2.0 NOP NOP SETB P2.0 //方波,上升沿有效 DJNZ R1,LOOP1 //减一不为零跳转 CLR P2.2 NOP NOP SETB P2.2 //方波,上升沿有效 RET //-------延时子函数-------- DELAY: MOV R2,#2 //(大调)修改R2值,改变延时长短 D2: MOV R3,#0 //中等 D3: MOV R4,#0 //微调延时大小 D4: NOP DJNZ R4,D4 DJNZ R3,D3 DJNZ R2,D2 RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H END (2)C语言 #include<reg51.h> //51头文件 #include<intrins.h>//“空指令”头文件 sbit shcp=P2^0; sbit ds=P2^1; sbit stcp=P2^2; //管脚定义 //-----延时子程序------ void delay(int i) //延时大小与i有关 { int j; while(i--) for(j=255;j>0;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;i<8;i++) { ds=(num[j]<<i)&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); } } 10 / 10
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服