51单片机电子设计制作444彩色光立方(2)

2019-01-19 14:34

/*

*程序功能:cube4光立方彩色版本,实现各种动画效果,配套取模软件 *作者:牛盾 * */

#include #include

#define uint unsigned int #define uchar unsigned char #define MAX_Delay 8 #define MIN_Delay 1

sbit S_1 = P1 ^ 1; sbit S_2 = P1 ^ 2; unsigned int pwm;

unsigned char TimeDelay = 10; unsigned char Mode = 1;

unsigned char code tabP2[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; uchar s=0;

void DELAY_MS (uchar i){ // unsigned int i; // while( --a != 0){ // for(i = 0; i < 600; i++); // } uchar x,j; for(j=0;j

void Adc_Delay (uint a){ uint i; while( --a != 0){ for(i = 0; i < 600; i++); } }

void Delay(uint z) {

uint x,y;

for(x=80;x>0;x--) for(y=z;y>0;y--);

//扫描 6

}

void timer1_init() { TMOD |= 0x10; TH1 = 0; TL1 = 0; ET1 = 1; TR1 = 1; EA = 1; }

/*******************************************************************************

********************** AD转换函数 **************/

/******************************************************************************/

unsigned char Read (unsigned char CHA) { unsigned char AD_FIN=0; //存储A/D转换标志

CHA &= 0x07; //选择ADC的8个接口中的一个(0000 0111 清0高5位) ADC_CONTR = 0x00; //ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置) _nop_();

ADC_CONTR |= CHA; //选择A/D当前通道 _nop_();

ADC_CONTR |= 0x80; //启动A/D电源

Adc_Delay(1); //使输入电压达到稳定(1ms即可)

ADC_CONTR |= 0x08; //启动A/D转换(0000 1000 令ADCS = 1) _nop_(); _nop_(); _nop_(); _nop_();

while (AD_FIN ==0) { //等待A/D转换结束

AD_FIN = (ADC_CONTR & 0x10); //0001 0000测试A/D转换结束否 }

ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 关闭A/D转换, return (ADC_RES); //返回A/D转换结果(8位) }

/*******************************************************************************

************* AD电容式触摸按键检测程序 ******************/

7

/*********************************************************************************************/

//bit 1表示有感应物,0表示没有感应物 S1

/**********************************************************************************************/ bit S1(void) { unsigned char R,mm=0,i,j,k; bit aa; j=0;k=0; for(i=0;i<10;i++) { //一次采集数据的数量 Adc_Delay(3); R=Read(1); //读对应的口,触发对应的触摸按键

if(R<0x2f)

{ //此参数可调整感应灵敏度值在0x01到0x2F k++; } if(R == 0xFF) { j++; } } if(k>1 && j>1) { mm++; } else { mm=0; } if(mm>0) { aa =1; } else { aa=0; }

return(aa); }

8

/*********************************************************************************************/ // S2

/**********************************************************************************************/ bit S2(void) { unsigned char R,mm=0,i,j,k; bit aa; j=0;k=0; for(i=0;i<10;i++) { //一次采集数据的数量 Adc_Delay(3); R=Read(2);

if(R<0x2F)

{ //此参数可调整感应灵敏度值在0x01到0x2F

k++; } if(R == 0xFF) { j++; } } if(k>1 && j>1) { mm++; } else { mm=0; } if(mm>0) { aa =1; } else { aa=0; }

return(aa);

9

}

//结束呼吸灯专用 uchar code table[]={ 0,0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18, 19,20,21,22,23,24,25,26,27, 28,29,30,31,32,33,34,35,36, 37,38,39,40,41,42,43,44,45, 46,47,48,49,50,51,52,53,54, 55,56,57,58,59,60,61,62,63, 64,65,66,67,68,69,70,71,72, 73,74,75,76,77,78,79,80,81,82, 83,84,85,86,87,88,89,90,91,

92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,

110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150, };

void PwmUp(uint a, uchar c) { uchar i; if(c == 1) P3 = 0X00; else P0 = 0X00; P2 = 0X00; i = table[a]; Delay(i); if(c == 1) P3 = 0XFF; else P0 = 0XFF; P2 = 0X00; Delay(150-i); }

void PwmDown(uint a,uchar c) { uchar i; if(c == 1) P3 = 0XFF; else P0 = 0XFF;

10


51单片机电子设计制作444彩色光立方(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人大金融专硕考研难易度详情

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: