利用595芯片所写的光立方程序

来源:本站
导读:目前正在解读《利用595芯片所写的光立方程序》的相关信息,《利用595芯片所写的光立方程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《利用595芯片所写的光立方程序》的详细说明。
简介:本文给大家介绍了一个利用595芯片所写的光立方程序。

#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芯片所写的光立方程序》最后刷新时间 2024-03-14 01:02:40,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《利用595芯片所写的光立方程序》该内容的真实性请自行鉴别。