#include<reg52.h> #include <intrins.h> //空语句调用头文件 #include"zimo.h" #define uchar unsigned char #define uint unsigned int /**********************************************************************/ sbit DS=P1^0; /**********************************************************************/ /**********************************************************************/ sbit CLK=P1^1; //74HC595的SH-CP(11脚) sbit STB=P1^2; //74HC595的时钟和输出锁存(12脚) /**********************************************************************/ /*坐标数组*/ /**********************************************************************/ uchar code shu[8]={0,1,2,3,4,5,6,7}; //十进制数选 uchar code x1[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//595数据 uchar code y1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//595使能 uchar code z1[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//层扫描 /************************************************************************/ /*亮度调节延时*/ /************************************************************************/ void delay(unsigned int i) { unsigned int j; for(;i>0;i--) { for(j=5;j>0;j--); } } /**********************************************************************/ /*ms延时*/ /**********************************************************************/ void delayms(uchar xms) { uchar i,j; for(i=0;i<xms;i++) { for(j=0;j<110;j++); }} /************************************************************************/ /*亮度调整*/ /************************************************************************/ /*void PWM_LIGHT(unsigned char p) { OE=0; delay(p); OE=1; delay(10-p); } */ /***********************************************************************/ /*595发送一字节*/ /***********************************************************************/ void Set595(unsigned char xie) { unsigned char i; unsigned int temp; temp=xie; for(i=0;i<8;i++) { if(temp&0x01) { DS=1; } else DS=0; temp=temp>>1; CLK=0; _nop_(); _nop_(); CLK=1; //移位上升沿有效? } } /**********************************************************************/ /**********************************************************************/ void dis595(void) { STB=0; _nop_(); _nop_(); STB=1; //串行输出上升沿有效 } /**********************************************************************/ /**********************************************************************/ void Set595_1(unsigned char xie,unsigned char xie1) { unsigned char i; for(i=0;i<8;i++) { DS=xie&0x01; DS=xie1&0x01; DS=0; DS=1; xie>>=1; xie1>>=1; //移位上升沿有效? } } /**********************************************************************/ /*倒计时*/ /**********************************************************************/ void daojishi(void) { uchar i,j,k; for(j=0;j<8;j++) { for(k=0;k<60;k++) for(i=0;i<8;i++) { Set595(shuzi[7][i]); Set595(shuzi[6][i]); Set595(shuzi[5][i]); Set595(shuzi[4][i]); Set595(shuzi[3][i]); Set595(shuzi[2][i]); Set595(shuzi[1][i]); Set595(shuzi[0][i]); P1=y1[j]; P2=z1[7-i]; dis595(); } } } /**********************************************************************/ /*方框缩放*/ /**********************************************************************/ void suofang() { uchar x,y,z,w,e,r,a,s; for(y=0;y<8;y++) { for(x=0;x<8;x++) { if((z==0)&&(y==0)||(z==0)&&(y==7)) { P1=y1[y]; P2=z1[0]; Set595(x1[x]); dis595(); } } } for(e=0;e<8;e++) { for(r=0;r<8;r++) { if((w==0)&&(e==0)||(w==0)&&(e==7)) { P1=y1[e]; P2=z1[r]; Set595(x1[0]); dis595(); } } } for(e=0;e<8;e++) { for(r=0;r<8;r++) { if((w==0)&&(e==0)||(w==0)&&(e==7)) { P1=y1[e]; P2=z1[r]; Set595(x1[7]); dis595(); } } } for(a=0;a<8;a++) { P1=y1[a]; P2=z1[7]; Set595(x1[0]); dis595(); P1=y1[a]; P2=z1[7]; Set595(x1[7]); dis595(); } for(s=0;s<8;s++) { P1=y1[s]; P2=z1[0]; Set595(x1[0]); dis595(); P1=y1[s]; P2=z1[0]; Set595(x1[7]); dis595(); } for(y=0;y<8;y++) { for(x=0;x<8;x++) { if((z==0)&&(y==0)||(z==0)&&(y==7)) { P1=y1[y]; P2=z1[7]; Set595(x1[x]); dis595(); } } } } /**********************************************************************/ void xingdian() { uchar x,y,z; for(z=0;z<8;z++) for(y=0;y<8;y++) { for(x=0;x<8;x++) { if((y==0)||(y==2)||(y==4)||(y==6)||(y==1)||(y==3)||(y==5)||(y==7)) { P1=y1[y]; P2=z1[z]; Set595(x1[x]); dis595(); } } delayms(20000); } } /*主函数*/ /**********************************************************************/ void main() { uchar j; while(1) { daojishi(); //倒计时7—0 for(j=0;j<50;j++) { suofang(); //方框缩放 } // xingdian(); //星点 } } 这是595的程序,实现0—9倒数。 #include<reg52.h> #define uint unsigned int #define uchar unsigned char void delay(uint z); void main() { while(1) { P3=0x00; delay(10); P2=0x00; delay(5); P1=0x00; } } void delay(uint z) { uchar x,y; for(x=0;x<z;x++) for(y=0;y<121;y++); }
导读:目前正在解读《利用595芯片所写的光立方程序》的相关信息,《利用595芯片所写的光立方程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《利用595芯片所写的光立方程序》的详细说明。
简介:本文给大家介绍了一个利用595芯片所写的光立方程序。
提醒:《利用595芯片所写的光立方程序》最后刷新时间 2024-03-14 01:02:40,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《利用595芯片所写的光立方程序》该内容的真实性请自行鉴别。