您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > 幸运转盘完整制作过程
第一步第一步第一步第一步、、、、根据原理原根据原理原根据原理原根据原理原、、、、实物图实物图实物图实物图和元件清单购和元件清单购和元件清单购和元件清单购买元器件买元器件买元器件买元器件。(。(。(。(万能板万能板万能板万能板35个洞个洞个洞个洞*35个洞个洞个洞个洞))))幸运转盘元器件清单幸运转盘元器件清单幸运转盘元器件清单幸运转盘元器件清单流水号名称封装数量HA1有源蜂鸣器Buzzer1-3001J1USB接口USB11K1轻触按键SW2-200-3001LED1~LED8LED发光二极管LED9-5.8MM-W8R110K电阻RES2-4001SW1SW-520D震动开关SW-520D1U1STC12C2052DIP20-3001洞洞板35个洞X35个洞根据图纸格子数用斜口钳剪1第第第第二二二二步步步步、、、、根据正面装配图安装元器件根据正面装配图安装元器件根据正面装配图安装元器件根据正面装配图安装元器件第第第第三三三三步步步步、、、、根据反面焊接图进行走线根据反面焊接图进行走线根据反面焊接图进行走线根据反面焊接图进行走线反面焊接图反面焊接图无封装第第第第四四四四步步步步、、、、将程序编译并下载到单片机中将程序编译并下载到单片机中将程序编译并下载到单片机中将程序编译并下载到单片机中,,,,下载时要选择使用内部下载时要选择使用内部下载时要选择使用内部下载时要选择使用内部IRC时钟时钟时钟时钟/*==============================================项目名称:幸运转盘功能说明:通过振动开关的信号随机产生一个奖品。作者:陈俊部门:江西省电子信息技师学院电子工程系时间:2014年9月27日===============================================*/#includereg52.h#defineuintunsignedint#defineucharunsignedcharsfrP1M0=0x91;sfrP1M1=0x92;sfrP3M0=0xb1;sfrP3M1=0xb2;/**************I/O定义**************/#defineLEDP1//P1为开奖指针sbitSW1=P3^3;//振动开关sbitfmq=P3^2;//蜂鸣器sbitkey=P3^7;/**************全局变量**************/bitfmq_bz=0;bitdd_bz=0;//掉电标志ucharls_i=0;//历史计数值ucharmax=0;//每隔500毫秒振动的最大值ucharzd_js=0;//振动计数ucharzd_sd=0;//振动速度uchardian_su=1;//点数值ucharOS=0;//系统变量ucharos_js=0;//系统计数ucharos_js1=0;//系统计数1uchargao_PWM=5,di_PWM=195;//这两个变量都必须大于0,而且两个变量之和必须始终为200,gao_PWM越大LED灯越亮//////////开奖指针由下面3个值决定/////////////ucharchushi_zhi=0;//初始值ucharlidu_zhi=0;//力度值ucharzizhuang_zhi=0;//自转值/**************函数声明**************/voidinit_t0();//定时器0定时中断初始化子函数@内部晶振为6MHzvoiddianshu();//100Hz扫描显示点数ucharsuijishu();//产生随机点数voidinit_ON();//外部中断0打开voidMode0();//模式0\初始模式voidMode1();//模式1\摇晃模式voidMode2();//模式2\阻力出点数模式voidMode3();//模式3\呼吸灯模式voidMode4();//模式4\关显示等待触发模式(掉电模式)voiddelay(uintx);voidmain()//主函数{P1M0=0;//设置I/O口P1M1=255;//设置I/O口P3M0=0;P3M1=0x04;fmq=0;init_t0();init_ON();//外部中断1打开while(1){switch(OS){case0:Mode0();break;//初始模式case1:Mode1();break;//摇晃模式case2:Mode2();break;//阻力出点数模式case3:Mode3();break;//呼吸灯模式case4:Mode4();break;//关显示等待触发模式(掉电模式)}}}voidzd0()interrupt1//定时器0中断服务函数,每隔50微秒中断一次{dianshu();//100Hz扫描显示点数}voidzd1()interrupt3//定时器1中断服务函数,每隔100毫秒中断一次{TL1=0xB0;//设置定时初值TH1=0x3C;//设置定时初值os_js++;os_js1++;chushi_zhi++;if(chushi_zhi80)chushi_zhi=0;if(fmq_bz==1){fmq=1;fmq_bz=0;}else{fmq=0;}}voidexint()interrupt2//外部中断1服务函数{PCON=0X00;//退出掉电模式SW1=1;zd_js++;zd_sd++;if(dd_bz==1){dd_bz=0;zd_js=zd_sd=max=0;OS=1;}}voidMode0()//模式0\初始模式{if(os_js1){os_js=0;dian_su++;if(dian_su8){dian_su=1;OS=1;zd_js=zd_sd=max=0;os_js=0;}}}voidMode1()//模式1\摇晃模式{staticbitbz=0;staticuchari=0;if(os_js3)//每隔300毫秒检测一次是否还在振动{os_js=0;if(i++50)//10秒内无振动则进入掉电模式{i=0;bz=0;OS=4;return;}if(zd_sd5&&zd_sdmax)//记录最大振动速度{max=zd_sd;if(max80)max=0;zd_sd=0;}else{zd_sd=0;}if(zd_jsls_i+10)//判断是否还在振动{ls_i=zd_js;if(ls_i80){ls_i=5;zd_js=5;}fmq_bz=1;bz=1;i=0;}else{bz=0;if(zd_js2)OS=2;os_js1=0;}}if(bz==1&&os_js11){os_js1=0;dian_su++;if(dian_su8)dian_su=1;}}voidMode2()//模式2\阻力摇奖模式{staticucharj=0,k=0;if(zd_jsls_i+10)//判断是否还在振动{OS=1;}else{if(k==0){k=suijishu();}if(os_js1&&j20){os_js=0;j++;dian_su++;if(dian_su8)dian_su=1;}else{if(os_js(j-19)&&dian_su!=k){os_js=0;j++;dian_su++;if(dian_su8)dian_su=1;}else{if(dian_su==k){delay(20000);dian_su=0;fmq=1;delay(3000);dian_su=k;fmq=0;delay(3000);dian_su=0;fmq=1;delay(3000);dian_su=k;fmq=0;delay(3000);dian_su=0;fmq=1;delay(3000);dian_su=k;fmq=0;delay(60000);j=k=0;os_js=0;ls_i=5;OS=1;}}}}}voidMode4()//模式4\关显示等待触发模式(掉电模式){dian_su=0;P1=0;dd_bz=1;zd_js=zd_sd=max=0;SW1=1;if(SW1==1)PCON=0X02;//进入掉电模式delay(100);}ucharsuijishu()//产生随机点数{uchari;zizhuang_zhi=zd_js;max=zd_js=0;i=(chushi_zhi+lidu_zhi+zizhuang_zhi)%8;if(i==0)i=8;lidu_zhi=max=zd_sd=0;returni;}voiddianshu()//100Hz扫描显示点数{staticbitbz=0;staticuchargao_js=30,di_js=70;if(bz==0){if(gao_js!=0){switch(dian_su){case0:LED=0;break;//不显示case1:LED=1;break;//显示1case2:LED=2;break;//显示2case3:LED=4;break;//显示3case4:LED=8;break;//显示4case5:LED=16;break;//显示5case6:LED=32;break;//显示6case7:LED=64;break;//显示6case8:LED=128;break;//显示6}gao_js--;}else{bz=1;di_js=di_PWM;}}else{if(di_js!=0){LED=0;//关闭显示di_js--;}else{bz=0;gao_js=gao_PWM;}}}voidinit_t0()//定时器0定时中断初始化子函数@内部晶振为6MHz{TMOD=0x12;//设置工作方式TL0=0xE7;//设置定时初值TH0=0xE7;//设置定时重载值TF0=0;//清除TF0标志TR0=1;//定时器0开始计时ET0=1;//开定时器0中断TL1=0xB0;//设置定时初值TH1=0x3C;//设置定时初值TF1=0;//清除TF1标志ET1=1;//开定时器1中断TR1=1;//定时器1开始计时EA=1;//开总中断}voidinit_ON()//外部中断1打开{IT1=1;EX1=1;}voiddelay(uintx){while(x--);}
本文标题:幸运转盘完整制作过程
链接地址:https://www.777doc.com/doc-5691903 .html