标题:
888光立方 带频谱上位机脱机动画源码
[打印本页]
作者:
13722567007
时间:
2018-5-4 23:23
标题:
888光立方 带频谱上位机脱机动画源码
888光立方 带频谱上位机脱机动画源码
电路原理图如下:
0.png
(82.65 KB, 下载次数: 14)
下载附件
2018-5-5 01:14 上传
单片机源程序如下:
#include <STC12C5A60S2.H>
#include <intrins.h>
#include"zimo.h"
#include"yinpin.h"
#include"flash.h"
#include"hanshu.h"
uchar data rxcnt=0;
/*************************************************************************/
void main()
{ initial595();
initial5952();
timer0init();
out=1;
menu=0;
amenu=1;
bb=1;
while(1)
{
huxi();
zhu2();
}
}
/******************************************************************************/
/**************************************************************************/
void print1() interrupt 3
{
if(out==1)
{
TR1=0; //关闭定时器1
TH1=(65536-2500)/256; //定时 time = F63C ;104.1us
TL1=(65536-2500)%256;
if(num>=(amenu-1))
num=0;
else
num++;
if(b[num]<c[num])
{b[num]++;}
if(b[num]>c[num])
{b[num]--;}
if(b[num]>8)
{b[num]=8;}
switch(yp)
{
case 1: send_data2(~tuku2[b[num]]);
if(amenu<=2){}
else delay(50);
break;
case 2: send_data2(~tuku1[b[num]]);
if(amenu<=2){}
else delay(50);
break;
case 3: send_data2(~tuku3[b[num]]);
if(amenu<=2){}
else delay(50);
default:break;
}
}
if(out==2||out==3)
{ uchar i;
static uchar layer=0;
for (i=0;i<8;i++)
{
buffer[i]=~display[layer][i];
}
xiansi1();
cheng=(0x01<<layer);
DS2 = ~cheng&0x01; //发送最低位
SH_CP2 = 1;
SH_CP2 = 0; //移位寄存器移位
ST_CP=1;
ST_CP=0;
ST_CP2=1;
ST_CP2=0;
if (layer<7)
layer++;
else
layer=0;
TH1=0xfe;
TL1=0xfe;
delay(2);
key_amenu_scan();
key_menu_scan();
key_out_scan();
if(out==4||out==1)
{IAP_CONTR=0x20;}
}
TR1=1;//启动定时器1
}
/***************************************************************************/
void UART1_Int(void) interrupt 4
{ uchar j,temp=0;
if (RI == 1)
{ sa=0;
RI = 0;
ES = 0; //串口1中断
rxcnt++; //前面有一个地址码0xf2,要去掉,>=2时才能接收数据
if(rxcnt>=2&&rxcnt<=9)
{
temp=SBUF;
for(j=0;j<8;j++)
{ if(temp&(0x01<<j))
display[j][rxcnt-2]|=0x80;
else
display[j][rxcnt-2]&=~0x80;
}
}
if(rxcnt>=10&&rxcnt<=17)
{ temp=SBUF;
for(j=0;j<8;j++)
{
if(temp&(0x01<<j))
display[j][rxcnt-10]|=0x40;
else
display[j][rxcnt-10]&=~0x40;
}
}
if(rxcnt>=18&&rxcnt<=25)
{
temp=SBUF;
for(j=0;j<8;j++)
{
if(temp&(0x01<<j))
display[j][rxcnt-18]|=0x20;
else
display[j][rxcnt-18]&=~0x20;
}
}
if(rxcnt>=26&&rxcnt<=33)
{
temp=SBUF;
for(j=0;j<8;j++)
{
if(temp&(0x01<<j))
display[j][rxcnt-26]|=0x10;
else
display[j][rxcnt-26]&=~0x10;
}
}
if(rxcnt>=34&&rxcnt<=41)
{
temp=SBUF;
for(j=0;j<8;j++)
{
if(temp&(0x01<<j))
display[j][rxcnt-34]|=0x08;
else
display[j][rxcnt-34]&=~0x08;
}
}
if(rxcnt>=42&&rxcnt<=49)
{
temp=SBUF;
for(j=0;j<8;j++)
{
if(temp&(0x01<<j))
display[j][rxcnt-42]|=0x04;
else
display[j][rxcnt-42]&=~0x04;
}
}
if(rxcnt>=50&&rxcnt<=57)
{
temp=SBUF;
for(j=0;j<8;j++)
{
if(temp&(0x01<<j))
display[j][rxcnt-50]|=0x02;
else
display[j][rxcnt-50]&=~0x02;
}
}
if(rxcnt>=58&&rxcnt<=65)
{
temp=SBUF;
for(j=0;j<8;j++)
{
if(temp&(0x01<<j))
display[j][rxcnt-58]|=0x01;
else
display[j][rxcnt-58]&=~0x01;
}
}
if(rxcnt>=65)
rxcnt=0;
}
ES = 1; //充许串口1中断
}
void ADC_Finish() interrupt 5
{
int yinpin;
yinpin++;
if(yinpin==20000)
{ yinpin=0;
yp++;
if(yp==4)
yp=1;
amenu++;
if(amenu==9)amenu=1;
}
if(ADC_CONTR&0x10) //判断ADC-FLGA位是否为1,为1表明A/D已转换完成。
delay(1);
}
复制代码
0.jpg
(26.42 KB, 下载次数: 17)
下载附件
2018-5-5 01:15 上传
所有资料51hei提供下载:
通用程序源码.zip
(3.67 MB, 下载次数: 37)
2018-5-4 23:23 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
devcang
时间:
2018-5-5 01:46
谢谢分享~~~~~~~~
作者:
adminzzz
时间:
2018-5-9 09:44
谢谢分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1