摇摇棒程序及PCB图
- 格式:doc
- 大小:333.00 KB
- 文档页数:8
毕业设计msp430摇摇棒毕业设计msp430摇摇棒摘要本设计以mSP430单片机为中央控制器,显示棒摇动时显示的字符或者图形由LEd灯显示。
LEd灯成线状排列,每个瞬间线阵只能显示数字编码后的文字或者图形的一列,利用人眼的视觉暂留原理,将需要显示的字符或者图形分成64列,因此,通过单片机控制LEd线阵以一较低频率扫描显示字符或者图形的每一刻,摆动显示棒时即可因视觉暂留看出显示的字符或者图形;左右摆动一次通过端口电平变化,调用相应的显示子程序,字符切换通过外部中断实现,该系统设计对程序设计的要求硬件电路要高。
整套系统由中央控制模块,LEd 显示模块,供电模块等部分构成。
关键词:mSP430单片机;LEd灯;摇摇棒abstractThe design for the central controller with msp430 csm and display great when shaken by the character or graphics appearred that LEd lights, LEd lights into linear array,cach miment only display dightal coding text or graphics after a column,using the principle of human vision,will need to display characters or graphics into 64,LEd by mcU control array in a low frequency scan character or graphic each column,swinging rod can show that for all the haracter or graphic display,swinging through port level changes,once the call display subroutines,characters,by external interruption swithing system design for program design of hardware circuit to high requirment,The system by the contral control module,the LEd display module,power supply module.Keywords: LEd;mSP430;Vision;yaoyaobang第一章绪论.................................................................................................................. .. 5第二章方案论证 (6)2.1 设计背景 (6)2.2系统设计要求 (6)2.3 整体方案比较与论证 (7)第三章系统硬件设3.1 硬件基本结构 (8)3.2 LEd显示部分 (8)3.3单片机最小系统部分 (9)3.4 电源部分 (9)3.5 mSP430单片机 (9)3.6 关于创新部分的讨论 (13)3.7按键模块 (13)3.8 LEd显示模块 (13)3.9惯性开关模块 (14)3.10总体设计 (15)第四章系统软件设4.1软件设计思路 (17)4.2软件系统流程图 (18)4.3动态图片的实现 (18)4.4软件实现功能的完善 (19)第五章系统调试第六章总结...................................................................................................................20致谢.................................................................................................................. . (21)参考文献.................................................................................................................. (22)附录.................................................................................................................. . (23)附录.................................................................................................................. (42)第一章绪论摇摇棒是当今比较流行的一种时尚娱乐电子产品,通过在手中左右摇晃棒体,就可在其摇摆出的扇形轨迹面上显示出文字或图像,摇摇棒具有质量轻,无污染,高强抗冲击等优点。
郑州科技学院单片机课程设计题目基于单片机的摇摇棒设计学生姓名张焦焦专业班级电气工程及其自动化3班学号201147078院(系)电气工程学院指导教师程晓琦完成时间2014年12月12日目录1 前言 (1)2 设计方案与论证 (2)2.1 方案设计 (2)2.2 主要部件原理 (3)3 系统硬件设计 (4)3.1 基本原理设计 (4)3.2 系统硬件设计 (6)4 系统软件设计 (9)4.1 软件设计思路 (9)4.2 主程序流程图 (9)5 系统调试与分析 (11)5.1 常见故障与调试方法 (11)5.2 调试过程 (13)6 总结 (16)参考文献 (17)附录1:总体电路原理图 (18)附录2:实物图 (19)附录3:元器件清单 (20)1 前言摇摇棒是一种利用视觉暂留效应制作的“高科技”玩具。
可以用“静如处子,动如脱兔”来形容它,即当静止时,它只是几个LED发光二极管(后简称LED),而一旦按照一定的频率去摇晃它,它就会随着位置的变化而变化(亮或灭),最终显示一幅图片或字符串。
它是由单片机控制一排LED灯有规律地亮暗,再通过摇动使之在空中呈现一幅段时间的画面。
它的设计需要解决几个问题。
因为通过摇动产生的图像是有方向的,所以,要使图像正确不重叠,就要将摇摇棒设计成单方向才显示图像。
如果摇动一下的速度比显示一幅图像的速度慢,可能会出现:第二幅图的前面部分在第一下摇动的末尾,后面部分在第二下摇动的开始。
这就要使摇摇棒在一次摇动中只显示一次图像。
如果要设计一个16X20分辨率的摇摇棒,LED数为16只,LED每5ms—10ms变换一次,共变换20次组成一幅图像。
测试间隔8ms效果较好。
其中亮灯3ms,暗灯5ms。
这样能使亮点不呈一条横线,黑暗宽度与LED间隔相近。
单片机系统可采用AT89S52单片机。
选择P0和P2口输出,连接16只LED灯。
P3.2为外部中断INT0,低电平触发方式,接一个轻触开关,功能为切换图像。
#include<STC11F60XE.h>/*********外猘部?接ï口ò定¨义?**********/#define uchar unsigned char#define uint unsigned int//宏ê定¨义?#define out P1 //数簓据Y输?出?端?口òsbit led1=P3^0; //第台?EDsbit led2=P3^1; //第台?EDsbit led3=P3^3; //第台?EDsbit led4=P3^4; //第台?EDsbit key1=P3^5; //按恪键ó输?入?sbit p3_2=P3^2;uchar KY,num; //KY作痢用?在ò后ï面?说μ明ðuchar BUFF; //缓o存?/*********全?局?变?量?定¨义?**********/unsigned long int TimeCount=0;unsigned int DelayN=80, //延ï时骸临ⅷ时骸计?数簓DelayTime=80; //每?次?延ï时骸的?周ó期ò个?数簓unsigned char key,keyy;/**********************************************/void delay(unsigned char n);void DelayMs(void);/*******************************************/unsigned char code text0[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"",0*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0xB7,0xBB,0xB7,0xBB,0xB3,0xBB,0xB4,0xBB,0xB5,0x BB,0xB7,0xBB,0xB7,0xBB,0xB7,0xBB,0x07,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"自?",1*/0xBF,0xBF,0xBE,0xDF,0x39,0xE0,0xFF,0xDF,0xEF,0xBF,0xEF,0xBF,0x6D,0xB0,0x6D,0xB7,0x6D,0x B7,0x01,0xB7,0x6E,0xB7,0x6E,0xB7,0x6E,0xB0,0xEF,0xBF,0xEF,0xBF,0xFF,0xFF,/*"适酣?,2*/0xFF,0xBF,0xFF,0xC7,0x03,0xF8,0xBB,0xDF,0x7B,0xDF,0xFB,0xD0,0xEB,0xDB,0xDA,0xDF,0x39,0x DC,0x7B,0xCF,0xFB,0xD3,0xFB,0xDC,0x1B,0xDF,0xBB,0xDF,0xFF,0xDF,0xFF,0xFF,/*"应畖",3*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",4*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",5*/0xEF,0xFB,0xEF,0xBB,0xEF,0x7D,0x00,0x80,0x6F,0xFF,0xAF,0xFD,0x75,0x05,0x8D,0xBD,0xB9,0x BD,0xA5,0xBD,0x3D,0x80,0x9E,0xBD,0xAE,0xBD,0xB6,0xBD,0xFF,0x05,0xFF,0xFF,/*"摇?",6*/0xEF,0xFB,0xEF,0xBB,0xEF,0x7D,0x00,0x80,0x6F,0xFF,0xAF,0xFD,0x75,0x05,0x8D,0xBD,0xB9,0x BD,0xA5,0xBD,0x3D,0x80,0x9E,0xBD,0xAE,0xBD,0xB6,0xBD,0xFF,0x05,0xFF,0xFF,/*"摇?",7*/0xEF,0xFC,0x2F,0xFF,0x00,0x00,0xAF,0xFF,0x6F,0xFD,0xBB,0xF5,0xAB,0xF6,0x2B,0xF5,0x8B,0x F5,0xA0,0x00,0x2B,0xF5,0xAB,0xF4,0xAB,0xF6,0xBB,0xF5,0xBF,0xFD,0xFF,0xFF,/*"棒?",8*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",9*/};unsigned char code text1[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/0xF7,0xFD,0xF7,0xFE,0x76,0xFF,0x31,0x00,0x57,0xFF,0xE7,0x7C,0xFF,0xBF,0x01,0xCF,0x7D,0x F0,0x7D,0xFF,0x7D,0xFF,0x7D,0x80,0x01,0x7F,0xFF,0x7F,0xFF,0x0F,0xFF,0xFF,/*"祝痢?,2*/0x7F,0xFF,0xBF,0xFF,0x0F,0x80,0xD3,0xFF,0xBC,0xEF,0xDF,0xF3,0x67,0xFC,0xF0,0xDE,0xF5,0x BF,0x17,0xC0,0xF7,0xFF,0x77,0xFF,0xD7,0xFC,0xE3,0xE3,0xF7,0xF7,0xFF,0xFF,/*"你?",3*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",4*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",5*/0xFF,0xFF,0xBF,0x7F,0xBD,0xBF,0xBD,0xDF,0xBD,0xEF,0xBD,0xF7,0xBD,0xF9,0x01,0xFE,0xBD,0x FD,0xBD,0xFB,0xBD,0xF7,0xBD,0xEF,0xBD,0xCF,0xBD,0x9F,0xBF,0xDF,0xFF,0xFF,/*"?,6*/0xFF,0xFF,0xBF,0x7F,0xBD,0xBF,0xBD,0xDF,0xBD,0xEF,0xBD,0xF7,0xBD,0xF9,0x01,0xFE,0xBD,0x FD,0xBD,0xFB,0xBD,0xF7,0xBD,0xEF,0xBD,0xCF,0xBD,0x9F,0xBF,0xDF,0xFF,0xFF,/*"?,7*/0xBF,0xFF,0xBD,0xBF,0xBD,0xDF,0xBD,0xEF,0xBD,0xF3,0x01,0xFC,0xBD,0xFF,0xBD,0xFF,0xBD,0x FF,0xBD,0xFF,0x01,0x80,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0xFF,0xFF,/*"开a",8*/0xFF,0xFB,0x7F,0xFC,0xFF,0xFF,0xFF,0xFF,0x0F,0xC0,0xFF,0xBF,0xFE,0xBF,0xFD,0xBF,0xE3,0x BF,0xF7,0xBF,0xFF,0xBF,0xBF,0x87,0x7F,0xFF,0xFF,0xF8,0xFF,0xFD,0xFF,0xFF,/*"心?",9*/};unsigned char code text2[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xFF,0xFF,0x9F,0xF9,0xFF,0xFF,0x9F,0xF9,0x FF,0xFF,0x9F,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x80,0xF9,0xFF,0xFF,0x9F,0xF9,0xFF,0xFF,0x9F,0xF9,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x FF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0x01,0xFE,0xFF,0x7F,0x00,0xF8,0xFF,0x3F,0x00,0xF0,0xFF,0x1F,0x00,0xE0,0xFF,0x0F,0x00,0xC0,0xFF,0x07,0x 00,0x80,0xFF,0x03,0x00,0x00,0xFF,0x03,0x00,0x00,0xFF,0x03,0x00,0x00,0xFE,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x07,0x00,0x00,0xF0,0x0F,0x00,0x00,0xE0,0x1F,0x 00,0x00,0xE0,0x3F,0x00,0x00,0xC0,0x3F,0x00,0x00,0x80,0x1F,0x00,0x00,0xC0,0x0F,0x00,0x00,0xE0,0x07,0x00,0x00,0xF0,0x03,0x00,0x00,0xF8,0x03,0x00,0x00,0xFC,0x03,0x 00,0x00,0xFE,0x03,0x00,0x00,0xFF,0x07,0x00,0x80,0xFF,0x0F,0x00,0xC0,0xFF,0x1F,0x00,0xE0,0xFF,0x3F,0x00,0xE0,0xFF,0xFF,0x00,0xF8,0xFF,0xFF,0x01,0xFC,0xFF,0xFF,0x 07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xC7,0xFF,0x FF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xC7,0x07,0x 00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,/*"未′命ó名?文?件t",0*/};/***********n s)?延ï时骸子哩程ì序î***************/void DelayUs(uint N){uint x;for(x=0; x<=N;x++);}/******************************************/void main(){AUXR=0x80;CLK_DIV=1;EX0=1; //开a放?外猘部?中D断?0IT0=1; //中D断?0为a边?沿?触洌发ぁ方?式?IP=0x02; //设Θ置?中D断?优?先è级?TMOD=0x02; //定¨时骸器ð0方?式?2,?8位?重?装痢载?TH0=0x80; //设Θ定¨定¨时骸器ð初?值μTL0=0x80;KY=0;EA=1; //开a放?中D断?ET0=1; //开a放?定¨时骸器ð0中D断?TR0=1; //启?动ˉ定¨时骸器ð0,?开a始?计?时骸?/key=0; //初?始?化ˉ显?示?第台一?组哩文?字?keyy=0;P1M0=0x55; //0101 0101 /P1.0 P1 .2 P1.4 P1.6推?输?出?P1M1=0xAA;while(1){//等台待鋣中D断?if(key1==0){ //有瓺键ó按恪下?DelayUs(50);if(key1==0){key++; //更ó换?下?一?幅え图?片?if(key>2) key=0; //图?片?循-环·显?示? 根ñ据Y显?示?的?组哩数簓来ぁ定¨义? 这a里?有瓺9组哩?所ñ以?就í要癮keyy>9while(key1==0); //等台待鋣按恪键ó释酣放?}}if(num>10) //每?中D断?10次?切D换?{keyy++;num=0;}if(keyy>2)keyy=0; //图?片?循-环·显?示? 根ñ据Y显?示?的?组哩数簓来ぁ定¨义? 这a里?有瓺9组哩?所ñ以?就í要癮keyy>9}}/*********文?字?显?示?子哩程ì序î**********/void display_word(unsigned char code *text){unsigned char i,j=2; //j为a图?片?起e始?位?置? 3 为a第台?个?开a始?是?图?片? 如?果?要癮显?示?高?时骸?2的?大洙字? 也?属?图?片?格?式?DelayUs(6400);for(i=0;i<64;i++){P3M0=0x00; //0000 0000 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1B;if((key>=j)||(keyy>=j))BUFF=(*(text+i*4+3));elseBUFF=(*(text+128+i*2+1));led4=0;P1=~BUFF>>1;P3M0=0x10; //0001 0000 //P3.4推?输?出? P3 .0 P3.3 P3.1输?入?高?阻哩P3M1=0x0B; //0000 1011delay(1);P3M0=0x00; //0000 0000 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1B; //0001 1011led4=1;P1=BUFF; //01010101 1357P3M0=0x10; //0001 0000 //P3.4推?输?出? P3 .0 P3.3 P3.1输?入?高?阻哩P3M1=0x0B; //0000 1011delay(1);P3M0=0x00; //0000 0000 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1B; //0001 1011if((key>=j)||(keyy>=j))BUFF=(*(text+i*4+2));elseBUFF=(*(text+128+i*2));led3=0;P1=~BUFF>>1;P3M0=0x08; //0000 1000 //P3.3推?输?出? P3 .0 P3.1 P3.4输?入?高?阻哩delay(1);P3M0=0x00; //0000 0000 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1B; //0001 1011led3=1;P1=BUFF; //01010101 1357P3M0=0x08; //0000 1000 //P3.3推?输?出? P3 .0 P3.1 P3.4输?入?高?阻哩P3M1=0x13; //0001 0011delay(1);P3M0=0x00; //0000 0000 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1B;if((key>=j)||(keyy>=j))BUFF=(*(text+i*4+1));elseBUFF=(*(text+i*2+1));led2=0;P1=~BUFF>>1;P3M0=0x02; //0000 0010 //P3.1推?输?出? P3 .0 P3.3 P3.4输?入?高?阻哩P3M1=0x19; //0001 1001delay(1);P3M0=0x00; //0000 0000 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1B; //0001 1011led2=1;P1=BUFF; //01010101 1357P3M0=0x02; //0000 0010 //P3.1推?输?出? P3 .0 P3.3 P3.4输?入?高?阻哩P3M1=0x19; //0001 1001delay(1);P3M0=0x00; //0000 0000 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1B; //0001if((key>=j)||(keyy>=j))BUFF=(*(text+i*4));elseBUFF=(*(text+i*2));led1=0;P1=~BUFF>>1;P3M0=0x01; //0000 0001 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩delay(1);P3M0=0x00; //0000 0000 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1B; //0001 1011led1=1;P1=BUFF; //01010101 1357P3M0=0x01; //0000 0001 //P3.0推?输?出? P3 .1 P3.3 P3.4输?入?高?阻哩P3M1=0x1A; //0001 1010delay(1);} }/*********显?示?内ò容╕选?择?子哩程ì序î**********/void display(unsigned char t){ keyy=0;switch (t){ //过y按恪键ó选?择?显?示?内ò容╕case 0: {display_word(text0);}break;case 1: {display_word(text1);}break;case 2: {display_word(text2);}break;// case 3: {display_word(text3);}break;// case 4: {display_word(text4);}break;// case 5: {display_word(text5);}break;// case 6: {display_word(text6);}break;// case 7: {display_word(text7);}break;// case 8: {display_word(text8);}break;// case 9: {display_word(text9);}break;// case 10:{display_word(text10);}break;//default:{display_word(text1);}}}/*****************************************/void display1(unsigned char y){switch (y){ //过y按恪键ó选?择?显?示?内ò容╕case 0: {display_word(text0);}break;case 1: {display_word(text1);}break;case 2: {display_word(text2);}break;// case 3: {display_word(text3);}break;// case 4: {display_word(text4);}break;// case 5: {display_word(text5);}break;// case 6: {display_word(text6);}break;// case 7: {display_word(text7);}break;// case 8: {display_word(text8);}break;// case 9: {display_word(text9);}break;// case 10:{display_word(text10);}break;}}/***************************************//*********延ï时骸子哩程ì序î**********/void delay(unsigned char n){for(;n>0;n--){DelayN=DelayTime;while (DelayN);}}/*********中D断?子哩程ì序î**********/void int0() interrupt 0 //使?用?外猘部?中D断?0{KY=~KY;if(KY==0){DelayTime=TimeCount/1580;TimeCount=0; //延ï时骸周ó期ò计?数簓清?零?if(key==0){num++;display1(keyy); //根ñ据Y按恪键ó选?择?循-环·显?示?文?字?}else{display(key); //根ñ据Y按恪键ó选?择?循-环·显?示?文?字?}}}void timer0() interrupt 1 //定¨时骸器ð0中D断?子哩程ì序î{TimeCount++;if (DelayN!=0)DelayN--;}//--------------------------------------------------------------------------------//新一代1T 8051系列单片机内核特殊功能寄存器C51 Core SFRs// 7 6 5 4 3 2 1 0 Reset Valuesfr ACC = 0xE0; //Accumulator 0000,0000sfr B = 0xF0; //B Register 0000,0000sfr PSW = 0xD0; //Program Status Word CY AC F0 RS1 RS0 OV F1 P 0000,0000//-----------------------------------sbit CY = PSW^7;sbit AC = PSW^6;sbit F0 = PSW^5;sbit RS1 = PSW^4;sbit RS0 = PSW^3;sbit OV = PSW^2;sbit P = PSW^0;//-----------------------------------sfr SP = 0x81; //Stack Pointer 0000,0111sfr DPL = 0x82; //Data Pointer Low Byte 0000,0000sfr DPH = 0x83; //Data Pointer High Byte 0000,0000//--------------------------------------------------------------------------------//新一代1T 8051系列单片机系统管理特殊功能寄存器// 7 6 5 4 3 2 1 0 Reset Valuesfr PCON = 0x87; //Power Control SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0001,0000// 7 6 5 4 3 2 1 0 Reset Valuesfr AUXR = 0x8E; //Auxiliary Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000//-----------------------------------sfr AUXR1 = 0xA2; //Auxiliary Register 1 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS 0000,0000/*PCA_P4:0, 缺省PCA 在P1 口1,PCA/PWM 从P1 口切换到P4 口: ECI 从P1.2 切换到P4.1 口,PCA0/PWM0 从P1.3 切换到P4.2 口PCA1/PWM1 从P1.4 切换到P4.3 口SPI_P4:0, 缺省SPI 在P1 口1,SPI 从P1 口切换到P4 口: SPICLK 从P1.7 切换到P4.3 口MISO 从P1.6 切换到P4.2 口MOSI 从P1.5 切换到P4.1 口SS 从P1.4 切换到P4.0 口S2_P4:0, 缺省UART2 在P1 口1,UART2 从P1 口切换到P4 口: TxD2 从P1.3 切换到P4.3 口RxD2 从P1.2 切换到P4.2 口GF2: 通用标志位ADRJ:0, 10 位A/D 转换结果的高8 位放在ADC_RES 寄存器, 低2 位放在ADC_RESL 寄存器1,10 位A/D 转换结果的最高2 位放在ADC_RES 寄存器的低2 位, 低8 位放在ADC_RESL 寄存器DPS: 0, 使用缺省数据指针DPTR01,使用另一个数据指针DPTR1*///-----------------------------------sfr WAKE_CLKO = 0x8F; //附加的SFR WAK1_CLKO/*7 6 5 4 3 2 1 0 Reset ValuePCAWAKEUP RXD_PIN_IE T1_PIN_IE T0_PIN_IE LVD_W AKE _ T1CLKO T0CLKO 0000,0000Bb7 - PCAW AKEUP : PCA 中断可唤醒powerdown。
摇摇棒制作教程
本摇摇棒设计所用的软件是proteus8.3 很多原件都没有都是自己画出来的所以做出来的板子不是太理想主要就是焊盘量身定做没有画的稍大点导致焊接很不爽别的貌似没啥了如果你们感觉我哪里做的不好欢迎批评(o゚v゚)ノ
这些都是电脑上设计的图。
无奈proteus 只能输出cam文件去给人家打板。
哎
反正最后是吧板子做出来了一共十一张板子每张板子2套体积大约是2*10*1cm
很小吧~( ̄▽ ̄~)(~ ̄▽ ̄)~
下面就是制作过程咯~~ 一张大板子。
还得自己切开
一个摇摇棒分为两个板子一个是摇摇棒本身的主要电路另一个是电池以及充电电路开关神马的。
LED摇摇棒实际制作图文教程【含汇编程序】LED摇摇棒实际制作图文教程【含汇编程序】总体介绍:大家知道,人的眼睛存在视觉暂留现象,正因为眼睛的反应迟钝,才丰富了人的视觉感受。
意思是时间小于1/24秒人就分辨不出了,LED摇摇棒很好地利用了人眼的视觉暂留特性。
配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片等。
讲白了就和点阵的显示没什么去别,只是你的手摇晃的过程代替了点阵的片选。
下面是总体的设计电路图:D1是电源指示灯,习惯性做法,是为了更好的了解你电路的物理现象。
下面是摇摇棒的效果图:硬件模块:总体电路图有了我就说一下,焊接步骤及需要注意的细节,第一步:焊好16个LED灯,当然个数随喜好而定,LED颜色也随喜好,但最好不要用白光。
(正面) (背面)第二步:焊单片机最小系统元件放在里面一是为了保护元器件;二是为了美观、好看。
这里注意一下:我们可以在单片机的TXD和RXD及地那里接出来三根排针,接到单片机开发板上的TXD、RXD和地。
是为了烧程序方便,不用每烧一次程序就把它取出来,这样既减少了操作也减少了对单片机的损坏。
第三步:接线(正面)反面第四步:完成,还有按键和水银开关没接,等会会介绍。
总体以焊好下面介绍切换按键和水银开关的接发和作用。
1、水银开关在这里起的是防止镜像文字,深沉点给单片机一个下降沿的触发。
镜像文字通俗点讲是希望当文字向左晃动显示,向右晃动时不让其显示。
但如果没有水银开关给个中断的话,文字会一直显示,造成两排文字重叠在一起。
使人看不清。
当然我们要避免这种情况就接了个水银开关。
水银开关的安放最好是与LED成45度角,既容易触发、减少抖动也是为了安全,当装好后,可以用胶把它封起来,这样就避免了水银开关的破碎。
2、按键开关主要是为了切换模式,这个比较简单,端口随便接哪都可以,我接的是P0.2,软件模块:;===================================================== ;=====程序名称:摇摇棒================================ ;=====硬件说明:16个LED分别接P1、P2口,水银开关接P3.2,;===============按键开关接P0.2======================== ;=====软件说明:采用查表方式,外部中断0===============;=====程序编辑时间:2010-11-14-11-15================== ;=====程序编辑人:李阳辉============================== ;=====所用芯片:STC89C52============================== ;=====所用晶振:12MHz================================= ;=====版本:V1.0====================================== ;=====当前进度:完成================================== ;=====程序完成时间:2010-11-16-10-20================== ;================================================== === ;=====分配单元地址==================================== OUTPUT1 EQU 31H ;P2口查表的暂存器OUTPUT2 EQU 30H ;P1口查表的暂存器COUNT1 EQU 32HC1 EQU 33HC2 EQU 34HC3 EQU 35H C4 EQU 36H C5 EQU 37H C6 EQU 38H C7 EQU 39H C8 EQU 3AH C9 EQU 3BH C10 EQU 3CH KEY BIT P0.2ORG 0000H ;起始地址JMP RESETORG 0003H ;外部中断入口地址JMP INTORG 0030H/*===========================================复位程序===========================================*/RESET:MOV C1,#00H ;偏移量MOV C2,#00HMOV C3,#00HMOV C4,#00H/*MOV C5,#00HMOV C6,#00HMOV C7,#00HMOV C8,#00HMOV C9,#00HMOV C10,#00H */MOV OUTPUT1,#00HMOV OUTPUT2,#00HSETB KEY ;把P0.2置高,作为输入口MOV COUNT1,#00HSETB EX0 ;分中断SETB EA ;总中断SETB IT0 ;启动/*========================================== 主程序==========================================*/ MAIN:CALL KEY_SCANCALL NOADLJMP MAIN/*========================================= 按键处理程序只做了两种模式,大家可以再加=========================================*/ KEY_SCAN:JB KEY,KEY_RETLCALL DELAYJB KEY,KEY_RETINC COUNT1INC COUNT1MOV A,COUNT1CJNE A,#4,KEY_DMOV COUNT1,#00HKEY_D:JNB KEY,$KEY_RET:RET/*========================================== 散转程序==========================================*/ NOAD:MOV DPTR,#TAB_B ;设置散转表地址MOV A,COUNT1JMP @A+DPTRTAB_B: ;散转表AJMP OPR_0AJMP OPR_2OPR_0:MOV DPTR,#TAB1MOV A,C1MOVC A,@A+DPTRMOV OUTPUT1,AMOV DPTR,#TAB2MOV A,C2MOVC A,@A+DPTRMOV OUTPUT2,AMOV P2,OUTPUT1 MOV P1,OUTPUT2 CALL DELAYINC C1INC C2MOV A,C2CJNE A,#64,OPR_0 MOV C1,#00H MOV C2,#00H LJMP OPR_RET OPR_2:MOV DPTR,#TAB3 MOV A,C3MOVC A,@A+DPTR MOV OUTPUT1,A MOV DPTR,#TAB4 MOV A,C4MOVC A,@A+DPTR MOV OUTPUT2,A MOV P2,OUTPUT1 MOV P1,OUTPUT2 CALL DELAYINC C3INC C4MOV A,C4CJNE A,#64,OPR_2MOV C3,#00HMOV C4,#00HLJMP OPR_RETOPR_RET:RET/*===========================================中断处理程序===========================================*/ INT:MOV P1,#0FFHMOV P2,#0FFHCALL DELAYRETI/*===========================================延时程序===========================================*/ DELAY:MOV R7,#3D1: MOV R6,#0E0HDJNZ R6,$DJNZ R7,D1RET;===========================真心爱你========================== TAB1: DB0FFH,0F7H,0F3H,0F7H,0F7H,0F7H,0F0H,0F7H,0C7H,0E7H,0B7H,0CBH,0EFH,0 F0H,0FBH,0FDHDB0FFH,0F9H,0F8H,0ABH,0AH,0B2H,0BAH,0A2H,0DBH,0DAH,0C2H,0DAH,0DBH,0E8H ,0F9H,0FFHDB0FFH,0E1H,0DEH,0BFH,0BFH,0BFH,0DFH,0EFH,0EFH,0DFH,0BFH,0BFH,0BFH,0DE H,0E1H,0FFHDB0FFH,0FFH,0DFH,0DFH,0DFH,0D0H,0D5H,0A5H,95H,0D5H,0A5H,0D0H,0DFH,0DFH ,0FFH,0FFHTAB2:DB0FFH,0FFH,0CFH,0BFH,7FH,0FFH,03H,0F7H,0EFH,7FH,0BFH,0DFH,0FFH,03H,0F FH,0FFHDB0FFH,0FFH,0FCH,0FCH,0CCH,0CBH,0C7H,0CBH,5CH,9FH,0EFH,0F7H,0FBH,0FDH, 0FFH,0FFHDB0FFH,0FFH,0FFH,7FH,0BFH,0DFH,0EFH,0F7H,0F7H,0E7H,0DFH,0BFH,7FH,0FFH, 0FFH,0FFHDB0FFH,0DFH,0DFH,0DDH,0DBH,17H,4FH,5FH,5FH,5FH,4FH,07H,0DBH,0DDH,0DFH, 0FFH;=========================新年快乐============================TAB3:DB0FFH,0FFH,0FEH,0FEH,0BEH,0BEH,0DEH,0DEH,0D8H,0DEH,0DEH,0EEH,0EEH,0E0 H,0FFH,0FFHDB0FFH,0FFH,0FFH,0F8H,0FBH,0FBH,0E0H,0FBH,0FBH,0FEH,0FDH,0FBH,80H,0 FFH,0F8H,0FFHDB0FFH,0FFH,0FFH,0F7H,0F7H,0F5H,0F5H,0F0H,0F5H,0F5H,0F5H,0D4H,0E7H,0F7 H,0F8H,0FFHDB0DEH,0DEH,0DEH,0DEH,0EEH,0EEH,0E0H,0FFH,0EEH,0E6H,0EAH,0ECH,0CCH,0AA H,0E6H,0EEHTAB4:DB0FFH,0FFH,0F7H,0EFH,0DFH,0BFH,0FFH,0FFH,01H,0FBH,0F7H,0BFH,0DFH,0EFH ,0F7H,0FFHDB0BFH,0BFH,0BBH,37H,0AFH,9FH,3FH,9FH,0AFH,0B7H,0BBH,0FFH,01H,0FFH,0FF H,0FFHDB0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,01H,0DFH,0DFH,0DFH,1FH,0DFH,0DFH, 0DFH,0FFHDB0FFH,0FFH,0FFH,01H,0FFH,0FFH,0FH,0F1H,0FFH,0EFH,8FH,0B0H,03H,0B7H,9F H,0EFH;=======================================================END ;结束。
《电子线路CAD》课程论文题目:摇摇棒电路的设计1 电路功能和性能指标该电路是摇摇棒,在晃动过程中会显示出芯片程序中编写的字。
2 原理图设计2.1原理图元器件制作如图一所示a.自制元器件名称:二极管图一b.器件制作方法和步骤:1.新建集成库工程;2.给工程添加新的原理图;3.在原理图里面放置多边形画出三角形;4.放置两个引脚,按TAB键修改引脚编号属性(如图二所示),然后保存。
图二2.2 原理图设计1.设计步骤:新建PCB工程--->给工程添加新的原理图--->保存工程为摇摇棒2.绘制完成后的原理图如图三所示图三3.生成PCB图过程中的message信息如图四所示步骤:工程--->compile--->system--->message--->没有错误即可图四4.生成元器件库如图六,七所示步骤:design compiler--->navigator(如图五所示)-->设计-->生成原理图库图五 图六 图七5.设计过程中需要注意的地方a.在画原理图的过程中,善于用网络标号,使图看起来更加简洁;b.在message 信息框中有错误时,点击该错误,会在原理图中详细的显示出来的哪个部位,然后进行修改。
2.3 原理图报表1.生成原理图的网络表如图八所示步骤:在原理图中:设计--->工程的网络表图八2.网络表的作用:网络表是电路自动布线的灵魂,也是原理图设计软件SCH与印刷电路设计软件PCB之间的接口。
概括的说:一是网络表文件可以支持印刷电路板的自动布线及电路模拟程序;二是可以与最后从印刷电路版图中获取的网络表文件比较,进行核对查错。
3.以下面元器件为例讲解其参数意义(如图九所示)图九该元器件的名称为:自制二极管,其引脚为1 的引脚后面写的VCC,表示该二极管的1号引脚接着VCC,另一个引脚连接着NET 24.以NetD2_2这个网络为例,找出其网络上的元器件如图十,十一所示图十图十一5.生成该原理图的简易元器件清单如图十二所示步骤:报告--->single boom图十二6.个人设计过程中说明的地方a.要善于利用网络报表,这是对原理图中各个元器件之间电气连接的定义;b.对于生成的各种报表要学会分析观察。
在此,摇摇棒的原理就不说了,下面是我做的摇摇棒,附原理图,和PCB图:上面是原理图。
S1为水银开关,上拉电阻10k。
上图为PCB图,从下到上为D1~D16,D1~D8由P1.7~P1.0控制,D9~D16由P0.7~ P0.7控制。
图像切换有P2.0控制。
注意水银开关与水平方向成45度角放置。
注意本图连接采用PCtoLCD2002取模,取模方式为:逐列,逆向,阴码。
如图设置:如有问题,请加QQ:457569074,一起讨论学习。
下面是程序:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit key= P2^0;//定义切换画面开关uchar Key_num;//定义按键次数uchar Int0_num=0;//定义中断次数uchar Direction;//定义摇动方向(从左到右)uchar code Embed[]={0x00,0x00,0x08,0x00,0x08,0x20,0xFE,0x1F,0x08,0x08,0x08,0x10,0x08,0x10,0xF8,0x0F,0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x00,0x00,/*"加",0*/0x00,0x00,0x80,0x20,0x10,0x11,0x20,0x0A,0x00,0x04,0x00,0x02,0xE0,0x1F,0x20,0x11,0x20,0x11,0x20,0x11,0xFE,0x1F,0x20,0x11,0x20,0x11,0x20,0x11,0xE0,0x1F,0x00,0x00,/*"油",0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x48,0x02,0x48,0x02,0x48,0x02,0xFE,0x1F,0x48,0x22,0x48,0x22,0x48,0x22,0xF8,0x23,0x00,0x18,0x00,0x00,0x00,0x00,/*"电",0*/0x00,0x00,0x00,0x00,0x80,0x00,0x88,0x00,0x88,0x40,0x88,0x80,0x88,0x80,0xC8,0xFF,0xA8,0x00,0x98,0x00,0x88,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"子",0*/0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x02,0x00,0x02,0x00,0x02,0x60,0xC2,0x6F,0x62,0x60,0x36,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"?",0*/};uchar code love[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00 ,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x04,0x10,0x02,0x20,0x 02,0x20,0x02,0x20,0x02,0x20,0x04,0x10,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x07 ,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x08,0xFE,0x07,0x00,0x00,0x00,0 x00,0x00,0x00,0xFE,0x3F,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x8 2,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*LOVE */};uchar code love_picture[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0xFC,0x00,0x FE,0x01,0xFE,0x03,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFC,0x3F,0xF8,0x7F,0xFC,0x3F,0xFE,0 x1F,0xFE,0x0F,0xFE,0x07,0xFE,0x03,0xFE,0x01,0xFC,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*心形图案*/};uchar code Hello[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"",0*/ 0x08,0x20,0xF8,0x3F,0x08,0x21,0x00,0x01,0x00,0x01,0x08,0x21,0xF8,0x3F,0x08,0x20,/*"H",1 */0x00,0x00,0x00,0x1F,0x80,0x22,0x80,0x22,0x80,0x22,0x80,0x22,0x00,0x13,0x00,0x00,/*"e",2*/ 0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"l",3*/ 0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"l",4*/ 0x00,0x00,0x00,0x1F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x00,0x1F,0x00,0x00,/*"o",5* /0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x33,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",6*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"",7*/ };uchar code Smile[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x1F,0x3C,0x3C,0x0E,0xF7,0x06,0xEF,0xF3,0xDC,0xF3,0xB0,0x63,0xB0,0x03,0xB0,0xF3,0xB0,0xF3,0xB8,0x03,0xDD,0x06,0xEF,0x0E,0x76,0x3C,0x3C,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; uchar code Hxembed_Make[]={0x00,0x00,0x60,0x00,0xF0,0x09,0x10,0x07,0xD0,0x07,0x70,0x0C,0x00,0x88,0x00,0x98,0x00,0xC0,0x20,0x70,0x38,0x1C,0x1E,0x07,0xFA,0x3E,0x08,0x60,0x68,0x80,0x18,0x00,/*"欢",0*/0x10,0x04,0x18,0x08,0xF0,0x0F,0x08,0x18,0xFC,0x10,0x02,0x11,0x00,0x11,0x00,0x11,0x80,0x10,0xFC,0x17,0x84,0x10,0x04,0x11,0x04,0x11,0xFC,0x10,0x00,0x08,0x00,0x00,/*"迎",0*/0x00,0x00,0x00,0x00,0xC0,0x00,0xB8,0x1E,0xA0,0x02,0xFE,0x3F,0xA4,0x02,0x60,0x02,0x50,0x1E,0x00,0x00,0xE0,0x03,0x00,0x00,0x14,0x60,0xEC,0x3F,0x00,0x00,0x00,0x00,/*"制",7*/0x00,0x00,0x00,0x01,0x80,0x00,0x40,0x00,0xF0,0x3F,0x0C,0x00,0x80,0x00,0x40,0x00,0x30,0x00,0xEE,0x7E,0x20,0x09,0x20,0x09,0x20,0x05,0x10,0x00,0x00,0x00,0x00,0x00/*"作",8*/};uchar code Thanks[]= {//-- 谢-- //0x40,0x00,0x42,0x00,0xCC,0x3F,0x00,0x52,0xFC,0x2B,0x56,0x12,0x55,0x4A,0x54,0x86,0xFE,0x7F,0x24,0x01,0x20,0x46,0x20,0x80,0xFF,0x7F,0x20,0x00,0x20,0x00,0x00,0x00,//--谢-- 0x40,0x00,0x42,0x00,0xCC,0x3F,0x00,0x52,0xFC,0x2B,0x56,0x12,0x55,0x4A,0x54,0x86,0xFE,0x7F,0x24,0x01,0x20,0x46,0x20,0x80,0xFF,0x7F,0x20,0x00,0x20,0x00,0x00,0x00,//--!0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0xFE,0x3B,0xFE,0 x3B,0x7C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};uchar code danpan_picture[]={0x7f,0xff,0x7f,0xbf,0x7f,0xcf,0x7f,0xf3,0x01,0xfc,0x7d,0xff,0x75,0xff,0x6d,0xff,0x0d,0xff,0x5d, 0xdf,0x7d,0xbf,0x01,0xc0,0x7f,0xff,0x7f,0xff,0x7f,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0xFC,0x00,0x FE,0x01,0xFE,0x03,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFC,0x3F,0xF8,0x7F,0xFC,0x3F,0xFE,0x1F,0xFE,0x0F,0xFE,0x07,0xFE,0x03,0xFE,0x01,0xFC,0x00,0x78, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*心形图案*/0x9f,0xfb,0xab,0xfb,0xb3,0xfd,0x80,0xdd,0xb3,0xd6,0x28,0xd5,0x92,0x55,0xad,0x01,0x92,0xd5,0xab,0xd5,0x33,0xd5,0x80,0xd6,0xb3,0xdd,0xab,0xf9,0xab,0xfd,0xff,0xff};void delay(uint X){for (i=0;i<=X;i++);}void delay1(uint n){ uint x,y;for(x=0;x<120;x++)for(y=0;y<n;y--);}/* '加油电子?'显示32*16像素*/void display1(){uchar i,disp;if(Int0_num>4 ){disp++;Int0_num=0;}if(disp>1)disp=0;delay(12000);for(i=0;i<48;i++){P0=~Embed[disp*64+i*2];P1=~Embed[disp*64+i*2+1];delay(120);//延时时间自己可以调,最好让画面显示在中间}}/*'LOVE'显示64*16像素*/void display2(){uchar i;delay(12000);for(i=0;i<64;i++){P0=~love[i*2];P1=~love[i*2+1];delay(150);}}/*心形图案显示64*16像素*/void display3(){uchar i;delay(12000);for(i=0;i<64;i++)P0=~love_picture[i*2];P1=~love_picture[i*2+1]; delay(200);}}/*‘Hello!示64*16像素*/void display4(){uchar i;delay(12000);for(i=0;i<64;i++){P0=~Hello[i*2];P1=~Hello[i*2+1];delay(120);}}/*笑脸图案显示64*16像素*/ void display5(){uchar i;delay(12000);for(i=0;i<64;i++){P0=~Smile[i*2];P1=~Smile[i*2+1];delay(150);}}/*‘欢迎制作显示64*16像素’*/ void display6(){uchar i;delay(12000);for(i=0;i<64;i++){P0=~Hxembed_Make[i*2];P1=~Hxembed_Make[i*2+1];delay(90);}/* '谢谢!'显示48*16像素*/void display7(){uchar i;delay(12000);for(i=0;i<48;i++){P0=~Thanks[i*2];P1=~Thanks[i*2+1];delay(80);}}/*外部中断0子函数*/void int0(void) interrupt 0{Direction=~Direction;if(Direction==0){Int0_num++;//中断次数加1switch(Key_num){case 0:display1();break;case 1:display2();break;case 2:display3();break;case 3:display4();break;case 4:display5();break;case 5:display6();break;case 6:display7();break;default :display1();}}}void main(void){EA=1;//开总中断IT0=1;//下降沿中断EX0=1;//启动外部中断0你——怒目Key_num=0;//初始化按键次数为零while(1) {if(!key) {delay1(5); // 去抖,可以跟自己的电路适当选择时间if(key==0){Key_num++;if(Key_num>6)//如果超过切换页面的次数就清零Key_num=0;}delay1(5);while(!key);}}}。
目录1 绪论 (1)1.1概述 (1)1.2摇摇棒的基本原理 (2)1.3研究现状 (2)1.4设计目的和意义 (3)1.5设计要求 (4)1.6设计思路 (4)2.神奇摇摇棒硬件设计 (5)2.1硬件电路设计基本结构 (5)2.2主控电路设计说明 (7)2.3 STC89C52单片机简介 (8)2.3.1 STC89C52芯片 (9)2.4 LED基本介绍 (12)2.4.1 LED硬件电路 (12)2.4.2 LED内部结构及原理 (13)2.4.3 时钟电路 (14)2.4.4 复位电路 (15)2.5开关电路 (17)3.神奇摇摇棒软件设计 (19)3.1开发环境 (19)3.2汉字图形取模软件 (20)3.3主程序流程图 (21)4.神奇摇摇棒系统的实现和结果 (24)4.1硬、软件分别调试及联合调试 (24)4.1.1 硬件调试 (24)4.1.2 软件程序调试 (26)4.1.3联合调试 (27)4.2 摇摇棒实物效果展示 (27)结论 (29)致谢 (32)参考文献 (33)附录 (34)基于单片机的神奇摇摇棒设计1 绪论1.1概述数码摇摇棒是由一组发光二极管排列而成,摇动时能显示各种图案的显示器件。
基于人眼视觉暂留原理、运用最新专利电子技术研制而成的线阵LED运动成像的高科技产品。
它可以通过在手中左右摇晃棒体,就可在其摇摆出的扇形轨迹面上显示非常稳定的文字或图像,并可以连接电脑编辑下载更新文字或图案。
相比于过去的闪光棒、荧光棒,它具有如下特点:1、显示方式新颖,吸引力强。
2、以LED电子灯显示,图案明显清晰、稳定,可显示多幅图案。
3、在LED摇摇棒的手握部分,设计成手柄,更人性化,而且使得摇晃过程中,显示内容的定位更准确。
4、可通过数据线与电脑连接,设计、更改显示内容。
5、可多次使用,降低浪费。
6、亮度高,视角更大,可视距离更远。
1.2摇摇棒的基本原理人的眼睛存在视觉暂留现象,正因为眼睛反应迟钝,才丰富了人的视觉感受,LED摇摇棒很好地利用了人眼的视觉暂留特性。
单片机课程设计题目基于单片机的摇摇棒设计目录1课程设计的目的 (1)2 课程设计的任务与要求 (2)2.1 设计目的 (2)2.2 设计要求 (2)3 设计思路与方案论证 (2)3.1 设计思路 (2)3.2 设计方案 (4)3.3 论证 (4)4 功能说明 (4)5 电路仿真及单元电路功能 (5)5.1 电路仿真 (5)5.2 单元电路功能 (5)6 焊接与调试 (6)6.1 焊接 (6)6.2 硬件调试方法 (7)7结论 (7)参考文献 (9)附录1:总体电路原理图 (10)附录2:源程序 (11)附录3:电路实物图 (12)1课程设计的目的单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机.它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果.单片机应用系统可以分为:最小应用系统是指能维持单片机运行的最简单配置的系统。
这种系统成本低廉,结构简单,常构成一些简单的控制系统,如开关状态的输入/输出控制等。
片内有ROM/EPROM的单片机,其最小应用系统即为配有晶振,复位电路,电源的单个单片机。
片内无ROM/EPROM的单片机,其最小应用系统除了外部配置晶振,复位电路,电源外,还应外接EPROM或EEPROM作为程序存储器用。
最小功耗应用系统是指为了保证正常运行,系统的功耗最小。
本文将使用单片机对摇动显示进行实例化,设计一个LED摇动显示器来显示文字、图像等信息。
掌握利用8051型单片机对发光二极管阵列进行摇动控制的方法。
输出信号频率的控制通过单片机来实现,用摇动传感器检测当前摇动状态,用16个发光二极管进行不同频率的亮灭刷新,通过手动摇动可显示输出文字及图案等信息。
/****************************************************************************** ****对于摇摇棒,关键就是控制时间与扫描,没有多大难度和技巧,为了广大同学对电子的热爱**我就以我的名字为例,写一段源程序来给大家讲解。
请仔细看好每一句,祝你们在学习电**子的世界里早日成功。
**** 鄂州职业大学电子协会王徐思远********************************************************************************** **/#include<reg52.h>#define uint unsigned int#define uchar unsigned char/* "王", 0x00,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x00,0x00,**************************************"徐", 0x08,0x40,0x08,0x40,0x10,0xA0,0x21,0x10, * 对于这些字库,大家大可不必烦恼,想*0x42,0x0E,0x0C,0x04,0x13,0xF8,0x30,0x40, *改成其他字是非常简单的,有能力的我建*0x50,0x48,0x97,0xFC,0x10,0x40,0x11,0x50, *议可以自己去画去算,不会写字库的在网*0x12,0x4C,0x14,0x44,0x11,0x40,0x10,0x80, *上有很多字库取模软件,自己下载一个学**着用吧,当你学会用时,就离成功不远了*"思", 0x00,0x08,0x3F,0xFC,0x21,0x08,0x21,0x08, *哦。
前言:大家知道,人的眼睛存在视觉暂留现象,正因为眼睛的反应迟钝,才丰富了人的视觉感受。
LED摇摇棒很好地利用了人眼的视觉暂留特性。
下图是基于51单片机控制、16只高亮度LED发光二极管构成的摇摇棒,配合手的左右摇晃就可呈现一幅完整的画面,可以显示字符、图片等。
制作名称:LED摇摇棒1、设计要求1)利用单片机AT89S51设计一个LED摇摇棒。
2)要求手握LED摇摇棒左右挥动时,显示一行文字(或图形)。
3)在挥动时,利用水银开关自动产生中断。
4)整个系统采用4.5V(三节干电池)供电。
4、装配图(中间部分)5、制作实物照片6、PCB图7、参考程序#include <AT89X51.h>#define uchar unsigned char#define uint unsigned int //宏定义#define KEY P3_0 //定义画面切换按键uchar KY; //KY作用在后面说明uchar disp; //显示汉字指针uchar pic=0,num=0; //pic为按键次数;num为中断次数uchar code love[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20,0x00,0 x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0 x0F,0x04,0x10,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x04,0x10,0xF8,0x0F,0x00,0 x00,0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0 x10,0x00,0x08,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x82,0x20,0x82, 0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,/*LOVE*/};uchar code loveyou[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x78,0x00,0xFC,0x00,0xFE,0x01,0xFE,0x03,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFC,0x3F,0xF8,0x7F,0xFC,0x3F,0xFE,0x1F,0xFE,0x0F,0xFE,0x07,0xFE,0x03,0xFE,0x01,0xF C,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,/*心形图案*/};uchar code hehe[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00,0 x00,0xF0,0x0F,0x08,0x10,0x04,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00,0x04,0 x00,0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0 x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00,0x04,0 x00,0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x04,0x20,0x08,0 x10,0xF0,0x0F,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,/*呵呵o(∩_∩)o图案*/};unsigned char code hanzi[] = {//-- 欢--0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,//-- 迎--0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F,0x00,0x20,0xFC,0x47,0x04,0x42,0x02,0x41,0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42,0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00,//-- 使--0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00,0x04,0x80,0xF4,0x43,0x14,0x45,0x14,0x29,0x14,0x19,0xFF,0x17,0x14,0x21,0x14,0x21,//-- 用--0x00,0x80,0x00,0x60,0xFE,0x1F,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0xFE,0x7F,0x22,0x02,0x22,0x02,0x22,0x42,0x22,0x82,0xFF,0x7F,0x02,0x00,0x00,0x00,0x00,0x00,//-- 神--0x08,0x01,0x88,0x00,0x49,0x00,0xEE,0xFF,0x58,0x00,0x88,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,0x88,0x08,0xFF,0xFF,0x88,0x08,0x88,0x08,0xFC,0x1F,0x08,0x00,0x00,0x00,//-- 奇--0x40,0x00,0x40,0x00,0x44,0x00,0x44,0x3E,0x64,0x12,0x54,0x12,0x4C,0x12,0x47,0x12,0x4C,0x3F,0x54,0x42,0x74,0x80,0xC6,0x7F,0x44,0x00,0x60,0x00,0x40,0x00,0x00,0x00,//-- 魔--0x00,0x40,0x00,0x30,0xFE,0x8F,0x4A,0x80,0xAA,0x5F,0x9A,0x4A,0xFE,0x2A,0xAA,0x1A, 0xCB,0x0F,0xAA,0x7A,0xFE,0x8A,0x9A,0xAA, 0xAA,0x8F,0x6B,0x80,0x22,0xE0,0x00,0x00,//-- 幻--0x80,0x20,0xC0,0x30,0xA0,0x28,0x98,0x24,0x87,0x22,0x80,0x21,0xC4,0x30,0x04,0x60,0x04,0x00,0x04,0x20,0x04,0x40,0x04,0x80,0x04,0x40,0xFE,0x3F,0x04,0x00,0x00,0x00,//-- 摇--0x10,0x02,0x10,0x42,0x10,0x81,0xFF,0x7F,0x90,0x04,0x54,0x05,0xCC,0xF4,0xB4,0x44,0x84,0x44,0xBC,0x7F,0x82,0x44,0xA2,0x44,0x9B,0xF4,0x82,0x06,0x00,0x04,0x00,0x00,//-- 摇--0x10,0x02,0x10,0x42,0x10,0x81,0xFF,0x7F,0x90,0x04,0x54,0x05,0xCC,0xF4,0xB4,0x44,0x84,0x44,0xBC,0x7F,0x82,0x44,0xA2,0x44,0x9B,0xF4,0x82,0x06,0x00,0x04,0x00,0x00,//-- 棒--0x10,0x04,0x10,0x03,0xD0,0x00,0xFF,0xFF,0x90,0x00,0x54,0x05,0x44,0x12,0xD4,0x15,0x74,0x14,0x5F,0xFF,0xD4,0x14,0x54,0x15,0x56,0x12,0x44,0x06,0x40,0x02,0x00,0x00,//-- !--0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0xFE,0x3B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*****函数声明*****/void display1(void);void display2(void);void display3(void);void display4(void);/*****n(us)延时子程序*****/void DelayUs(uint N){uint x;for(x=0; x<=N;x++);}/*****中断服务程序*****/void intersvr0(void) interrupt 0 using 1{KY=~KY; //每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示)if(KY==0){num++; //计算中断次数switch(pic) //选择画面{case 0:{display1();}break;case 1:{display2();}break;case 2:{display3();}break;case 3:{display4();}break;default:{display1();}}}}/*****显示子程序1(汉字)*****/void display1(void){uchar i;if(num>10){disp++;num=0;} //12个汉字分为3次显示完(每次显示4个),每中断10次切换if(disp>2)disp=0;DelayUs(5200); //此处延时时间依各硬件差别而各不相同,试着调整使得显示内容居中即可for(i=0;i<64;i++){P0=~hanzi[disp*128+i*2];P2=~hanzi[disp*128+i*2+1];DelayUs(100);}}/*****显示子程序2(LOVE)*****/void display2(void){uchar i;DelayUs(4000);for(i=0;i<64;i++){P0=~love[i*2];P2=~love[i*2+1];DelayUs(120);}}/*****显示子程序3(心形图案)*****/void display3(void){uchar i;DelayUs(4000);for(i=0;i<64;i++){P0=~loveyou[i*2];P2=~loveyou[i*2+1];DelayUs(120);}}/*****显示子程序4(呵呵o(∩_∩)o图案)*****/ void display4(void){uchar i;DelayUs(4000);for(i=0;i<64;i++){P0=~hehe[i*2];P2=~hehe[i*2+1];DelayUs(120);}}/*****主函数*****/void main(void){IT0=1;EX0=1;EA=1; //开中断,下降沿中断 KY=0;while(1) //主程序中只检测按键 {if(KEY==0) //画面切换键按下 {DelayUs(10000); //按键去抖 if(KEY==0);pic++;}if(pic>3)pic=0;}}/*****END*****/。