基于单片机的光立方电路设计
// anum = 0x80>>layer; if(layer<7) layer++; else layer=0;
delay(5); TH0=0xf5;
TL0=0xe0; }
//控制采样速率 else {
ADC_CONTR = ADC_POWER | ADC_SPEEDHH| ADC_START | channel; //开始AD采集 } }
573锁存相关程序
21
基于单片机的光立方电路设计
unsigned char buffer[8]=\赋初值 //端口定义
sbit cs1 = P2^7; //低电平时,数据锁存 sbit cs2 = P2^6; sbit cs3 = P2^5; sbit cs4 = P2^4; sbit cs5 = P2^3; sbit cs6 = P2^2; sbit cs7 = P2^1; sbit cs8 = P2^0;
#define DATA_573 P0 //573的数据端口
/*显示缓存,上层需要使用*/
/*--------------- 初始化 --------------*/ void initial573() {
//SH_CP = 0; //ST_CP = 0; //DS = 0; //关闭所有灯
cs1 = cs2 = cs3 = cs4 = cs5 = cs6 = cs7 = cs8 = 1; //输出锁存 DATA_573 = 0x00;
cs1 = cs2 = cs3 = cs4 = cs5 = cs6 = cs7 = cs8 = 0; //输出锁存}
/*--------------- 发送数据 ---------------*/ /*void send_data(unsigned char d) {
unsigned char i; for(i=0;i<8;i++) {
DS = d&0x80; //发送最低位 SH_CP = 1; SH_CP = 0; //移位寄存器移位 d = d<<1; //数据移位 } } */
/*--------------- 扫描数码管,供上层调用 ---------------*/
void xiansi() {
/*send_data(buffer[0]); //发送段选数据
22
基于单片机的光立方电路设计
send_data(buffer[1]); //发送位选数据 send_data(buffer[2]); send_data(buffer[3]);
send_data(buffer[4]); //发送段选数据 send_data(buffer[5]); //发送位选数据 send_data(buffer[6]); send_data(buffer[7]); ST_CP=1;
ST_CP=0; //更新锁存数据 */ cs1 = 1; DATA_573 = buffer[7]; cs1 = 0; // cs2 = 1; DATA_573 = buffer[6]; cs2 = 0; // cs3 = 1; DATA_573 = buffer[5]; cs3 = 0; // cs4 = 1; DATA_573 = buffer[4]; cs4 = 0; // cs5 = 1; DATA_573 = buffer[3]; cs5 = 0; // cs6 = 1; DATA_573 = buffer[2]; cs6 = 0; // cs7 = 1; DATA_573 = buffer[1]; cs7 = 0; // cs8 = 1; DATA_573 = buffer[0]; cs8 = 0; // }
void xiansi1() {
/* send_data(0x00); //发送段选数据 send_data(0x00); //发送位选数据 send_data(0x00); send_data(0x00);
send_data(0x00); //发送段选数据 send_data(0x00); //发送位选数据 send_data(0x00); send_data(0x00); send_data(0x00); ST_CP=1;
ST_CP=0; //更新锁存数据 */
cs1 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs1 = 0; // cs2 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs2 = 0; // cs3 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs3 = 0; // cs4 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs4 = 0; // cs5 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs5 = 0; // cs6 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs6 = 0; // cs7 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs7 = 0; // cs8 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs8 = 0; // }
void hang1() {
/* send_data(0xff); //发送段选数据 send_data(0x00); //发送位选数据
23
基于单片机的光立方电路设计
send_data(0x00); send_data(0x00);
send_data(0x00); //发送段选数据 send_data(0x00); //发送位选数据 send_data(0x00); send_data(0x00);
ST_CP=1; ST_CP=0;*/ //更新锁存数据
cs1 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs1 = 0; // cs2 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs2 = 0; // cs3 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs3 = 0; // cs4 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs4 = 0; // cs5 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs5 = 0; // cs6 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs6 = 0; // cs7 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs7 = 0; // cs8 = 1; _nop_(); DATA_573 = 0xff; _nop_(); cs8 = 0; // }
void hang2() {
/* send_data(0x00); //发送段选数据 send_data(0xff); //发送位选数据 send_data(0x00); send_data(0x00);
send_data(0x00); //发送段选数据 send_data(0x00); //发送位选数据 send_data(0x00); send_data(0x00);
ST_CP=1; ST_CP=0;*/ //更新锁存数据
cs1 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs1 = 0; // cs2 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs2 = 0; // cs3 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs3 = 0; // cs4 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs4 = 0; // cs5 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs5 = 0; // cs6 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs6 = 0; // cs7 = 1; _nop_(); DATA_573 = 0xff; _nop_(); cs7 = 0; // cs8 = 1; _nop_(); DATA_573 = 0x00; _nop_(); cs8 = 0; // }
void hang3() {
24
基于单片机的光立方电路设计
/* send_data(0x00); //发送段选数据 send_data(0x00); //发送位选数据 send_data(0xff); send_data(0x00);
send_data(0x00); //发送段选数据 send_data(0x00); //发送位选数据 send_data(0x00); send_data(0x00);
ST_CP=1; ST_CP=0;*/ //更新锁存数据
cs1 = 1; DATA_573 = 0x00; cs1 = 0; // cs2 = 1; DATA_573 = 0x00; cs2 = 0; // cs3 = 1; DATA_573 = 0x00; cs3 = 0; // cs4 = 1; DATA_573 = 0x00; cs4 = 0; // cs5 = 1; DATA_573 = 0x00; cs5 = 0; // cs6 = 1; DATA_573 = 0xff; cs6 = 0; // cs7 = 1; DATA_573 = 0x00; cs7 = 0; // cs8 = 1; DATA_573 = 0x00; cs8 = 0; // }
void hang4() {
/* send_data(0x00); //发送段选数据 send_data(0x00); //发送位选数据 send_data(0x00); send_data(0xff);
send_data(0x00); //发送段选数据 send_data(0x00); //发送位选数据 send_data(0x00); send_data(0x00);
ST_CP=1;
ST_CP=0; //更新锁存数据
cs1 = 1; DATA_573 = 0x00; cs1 = 0; // cs2 = 1; DATA_573 = 0x00; cs2 = 0; // cs3 = 1; DATA_573 = 0x00; cs3 = 0; // cs4 = 1; DATA_573 = 0x00; cs4 = 0; // cs5 = 1; DATA_573 = 0xff; cs5 = 0; // cs6 = 1; DATA_573 = 0x00; cs6 = 0; // cs7 = 1; DATA_573 = 0x00; cs7 = 0; // cs8 = 1; DATA_573 = 0x00; cs8 = 0; // }
25
*/