完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
以前做过一个单片机篮球计分器,功能都可以实现。现在我想在这个基础上加一个蓝牙模块,百度了很多但还是很糊涂,什么波特率。。。
现在程序如下,希望大婶能给指导下这程序用不用修改?该怎么修改?晶振用的是12MHZ #include #define LEDData P0 unsigned char code LEDCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char minit,second,count,count1; //分,秒,计数器 ***it add1=P1^0; //甲对加分,每按一次加1分 /在未开始比赛时为加时间分 ***it dec1=P1^1; //甲对减分,每按一次减1分 /在未开始比赛时为减时间分 ***it exchange=P1^2; //交换场地 ***it add2=P1^3; //乙对加分,每按一次加1分 /在未开始比赛时为加时间秒 ***it dec2=P1^4; //乙对减分,每按一次减1分 /在未开始比赛时为减时间秒 ***it secondpoint=P0^7; //秒闪动点 //----依次点亮数码管的位------ ***it led1=P2^7; ***it led2=P2^6; ***it led3=P2^5; ***it led4=P2^4; ***it led5=P2^3; ***it led6=P2^2; ***it led7=P2^1; ***it led8=P2^0; ***it led9=P3^7; ***it led10=P3^6; ***it led11=P3^5; ***it alam=P1^7; //报警 bit playon=0; //比赛进行标志位,为1时表示比赛开始,计时开启 bit timeover=0; //比赛结束标志位,为1时表示时间已经完 bit AorB=0; //甲乙对交换位置标志位 bit halfsecond=0; //半秒标志位 unsigned int scoreA; //甲队得分 unsigned int scoreB; //乙队得分 void Delay5ms(void) { unsigned int i; for(i=100;i>0;i--); } void display(void) { //-----------显示时间分-------------- LEDData=LEDCode[minit/10]; led1=0; Delay5ms(); led1=1; LEDData=LEDCode[minit%10]; led2=0; Delay5ms(); led2=1; //-------------秒点闪动------------ if(halfsecond==1) LEDData=0x80; else LEDData=0x00; led2=0; Delay5ms(); led2=1; secondpoint=0; //-----------显示时间秒------------ LEDData=LEDCode[second/10]; led3=0; Delay5ms(); led3=1; LEDData=LEDCode[second%10]; led4=0; Delay5ms(); led4=1; //-----------显示1组的分数百位------- if(AorB==0) LEDData=LEDCode[scoreA/100]; else LEDData=LEDCode[scoreB/100]; led5=0; Delay5ms(); led5=1; //---------------显示1组分数的十位----------- if(AorB==0) LEDData=LEDCode[(scoreA%100)/10]; else LEDData=LEDCode[(scoreB%100)/10]; led6=0; Delay5ms(); led6=1; //---------------显示1组分数的个位----------- if(AorB==0) LEDData=LEDCode[scoreA%10]; else LEDData=LEDCode[scoreB%10]; led7=0; Delay5ms(); led7=1; //-----------显示2组分数的百位------- if(AorB==1) LEDData=LEDCode[scoreA/100]; else LEDData=LEDCode[scoreB/100]; led8=0; Delay5ms(); led8=1; //-----------显示2组分数的十位----------- if(AorB==1) LEDData=LEDCode[(scoreA%100)/10]; else LEDData=LEDCode[(scoreB%100)/10]; led9=0; Delay5ms(); led9=1; //-----------显示2组分数的个位----------- if(AorB==1) LEDData=LEDCode[scoreA%10]; else LEDData=LEDCode[scoreB%10]; led10=0; Delay5ms(); led10=1; } //=========================按键检测程序================================================ void keyscan(void) { if(playon==0) { if(add1==0) { display(); if(add1==0); { if(minit<99) minit++; else minit=99; } do display(); while(add1==0); } if(dec1==0) { display(); if(dec1==0); { if(minit>0) minit--; else minit=0; } do display(); while(dec1==0); } if(add2==0) { display(); if(add2==0); { if(second<59) second++; else second=59; } do display(); while(add2==0); } if(dec2==0) { display(); if(dec2==0); { if(second>0) second--; else second=0; } do display(); while(dec2==0); } if(exchange==0) { display(); if(exchange==0); { TR1=0; //关闭T1计数器 alam=1; //关报警 AorB=~AorB; //开启交换 minit=15; //并将时间预设为15:00 second=0; } do display(); while(exchange==0); } } else { if(add1==0) { display(); if(add1==0); { if(AorB==0) { if(scoreA<999) scoreA++; else scoreA=999; } else { if(scoreB<999) scoreB++; else scoreB=999; } } do display(); while(add1==0); } if(dec1==0) { display(); if(dec1==0); { if(AorB==0) { if(scoreA>0) scoreA--; else scoreA=0; } else { if(scoreB>0) scoreB--; else scoreB=0; } } do display(); while(dec1==0); } if(add2==0) { display(); if(add2==0); { if(AorB==1) { if(scoreA<999) scoreA++; else scoreA=999; } else { if(scoreB<999) scoreB++; else scoreB=999; } } do display(); while(add2==0); } if(dec2==0) { display(); if(dec2==0); { if(AorB==1) { if(scoreA>0) scoreA--; else scoreA=0; } else { if(scoreB>0) scoreB--; else scoreB=0; } } do display(); while(dec2==0); } } } //******************************主函数************************************************* void main(void) { TMOD=0x11; TL0=0xb0; TH0=0x3c; TL1=0xb0; TH1=0x3c; minit=15; //初始值为15:00 second=0; EA=1; ET0=1; ET1=1; TR0=0; TR1=0; EX0=1; IT0=1; IT1=1; // EX1=1; PX0=1; // PX1=1; PT0=0; P1=0xFF; P3=0xFF; while(1) { keyscan(); display(); } } void PxInt0(void) interrupt 0 { Delay5ms(); EX0=0; alam=1; TR1=0; if(timeover==1) { timeover=0; } if(playon==0) { playon=1; //开始标志位 TR0=1; //开启计时 } else { playon=0; //开始标志位清零,表示暂停 TR0=0; //暂时计时 } EX0=1; //开中断 } /* void PxInt1(void) interrupt 2 { Delay5ms(); EX1=0; //关中断 if(timeover==1) //比赛结束标志,必须一节结束后才可以交换,中途不能交换场地 { TR1=0; //关闭T1计数器 alam=1; //关报警 AorB=~AorB; //开启交换 minit=15; //并将时间预设为15:00 second=0; } EX1=1; //开中断 } */ //*********************************中断服务函数************************************** void time0_int(void) interrupt 1 { TL0=0xb0; TH0=0x3c; TR0=1; count++; if(count==10) { halfsecond=0; } if(count==20) { count=0; halfsecond=1; if(second==0) { if(minit>0) { second=59; minit--; } else { timeover=1; playon=0; TR0=0; TR1=1; } } else second--; } } //*********************************中断服务函数************************************** void time1_int(void) interrupt 3 { TL1=0xb0; TH1=0x3c; TR1=1; count1++; if(count1==10) { alam=0; } if(count1==20) { count1=0; alam=1; } } |
|
相关推荐
2个回答
|
|
|
一般用串口蓝牙,所以添加串口通讯进去
|
|
|
|
|
|
买个蓝牙模块,接到单片机串口上,配置串口程序就可以了
|
|
|
|
|
只有小组成员才能发言,加入小组>>
652 浏览 0 评论
670浏览 1评论
821浏览 1评论
915浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
860浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
807浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-15 17:39 , Processed in 0.666121 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4105