单片机设计—篮球计分器内容摘要:
f。 使 P1=0xbf, 即 P1=1011 1111B,下半场指示灯对应点亮 P2=0xfe。 数码管动态刷新显示程序 P2=1111 1110, i为分钟 P0=seg[i%100/10]。 P2=0xfe,所以刷新显示时间的分钟十位,调用延时程序, delay(1)。 延时数码管的点亮 P2=0xff。 P0=0。 P2=0xfd。 同理,动态刷新时分钟个位并延时点亮 P0=seg[i%10]。 delay(1)。 中州大学课程设计报告 14 P2=0xff。 P0=0。 P2=0xfb。 同理,动态刷新时秒钟十位并延时点亮 P0=seg[j%100/10]。 delay(1)。 P0=0。 P2=0xff。 P2=0xf7。 同理,动态刷新时秒钟个位并延时点亮 P0=seg[j%10]。 delay(1)。 P0=0。 P2=0xff。 P2=0xef。 同理,动态刷新 A 分数十位并延时点亮 P0=seg[x%100/10]。 delay(1)。 P2=0xff。 P0=0。 P2=0xdf。 同理,动态刷新 A 分数个位并延时点亮 P0=seg[x%10]。 delay(1)。 P2=0xff。 P0=0。 P2=0xbf。 同理,动态刷新 B 分数十位并延时点亮 P0=seg[y%100/10]。 delay(1)。 P0=0。 中州大学课程设计报告 15 P2=0xff。 P2=0x7f。 同理,动态刷新 B 分数十位并延时点亮 P0=seg[y%10]。 delay(1)。 P0=0。 P2=0xff。 } 本设计中各个数码管采用 动态驱动 , 使各位数码管 逐个轮流受控显示,由于扫描速度极快 (本实验中大约每 20 毫秒刷新一次),所以 显示效果与静态驱动相同。 T0 中断程序 void t0(void) interrupt 1 本设计调用定时器 T0,计时单位为一秒 { TH0=0xb1。 对定时器 T0 送入计数初值,由于 TH0=0xb。 TL0=0xe0。 TL0=0xe0 故定时器定时为 20 毫秒,即每 if(n==0) 20毫秒调用一次 void t0(void) interrupt 1 { n=60。 m。 } i++。 if(i==50) { 令 i值为 50 50*20 毫秒 =1 秒,来实现计时 n。 单位为一秒 i=0。 } display(m,n,x,y)。 调用动态刷新显示程序,即每 20毫秒刷新一 } 次数码管 中州大学课程设计报告 16 加分子程序 void keyjiafen1() { 当检测到 RXD 按键按下时,调用延时子程序 if(RXD==0) 实现消除按键抖动功能,即,当 delay(1)。 , { 检测到按键按下时候,延时,按键仍按下,说明 if(RXD==0) 按键确实按下,非抖动, A对 应加分 { while(RXD==0)。 x++。 } } if(TXD==0) 检测 TXD 加分按键时候按下, B加分 { delay(1)。 if(TXD==0) { while(TXD==0)。 y++。 } } } 减分子程序 void keyjianfen1() 减分按键检测子程序,其基本算法及功能与加分 { 相同 if(WR==0) { delay(1)。 if(WR==0) 中州大学课程设计报告 17 { while(WR==0)。 x。 } } if(RD==0) { delay(1)。 if(RD==0) { while(RD==0)。 y。 } } } 调整时间子程序 调整时间子程序 ,使时间快速倒退或快进,实现回表功能,同时回 表之后能自动暂停 void key2() { if(INT0==0) { delay(10)。 if(INT0==0) 回表子程序,检测到 INT0 按下时,使时间回倒 { zanting=1。 为附加变量,当回表按键 zanting=1。 松开时 ,表暂停,这两个变量用来调用暂停 n++。 if(n==60) 中州大学课程设计报告 18 { m++。 n=1。 } } } if(INT1==0) 快表子程序,检测到 INT1 按下时,使倒计加快, { 通常情况下与回表子程序配合使用,即当回表 回过的时候,按此键调整时间 delay(10)。 zanting=1。 作用同上 if(INT1==0) { zanting=1。 n。 } } } void shijian() 该程序使回表和快表按键松开时候能自动暂停 { if(zanting==1amp。 amp。 INT0==1amp。 amp。 INT1==1 ) { EA=0。 zanting==1amp。 amp。 INT0==1amp。 amp。 INT1==1 作用为 zanting=0。 当按键松开的时候,调用暂停程序条件 初始化,以便下次回表和快表 while(1) 按键松开时候仍能调用暂停程序 { display(m,n,x,y)。 if(P1_0==0) 当检测暂停键按下,开中断,跳出暂停 { delay(1)。 中州大学课程设计报告 19 if(P1_0==0) { while(P1_0==0)。 EA=1。 break。 } } } } } 半场交换比分子程序 void key3() { int temp。 定义中间变量 temp,检测到有按键按下时候 if(zidong==1amp。 amp。 jie==2) 通过 temp 交换甲队,乙队两队比赛分数 { temp=x。 zidong==1amp。 amp。 jie==2 是判断半场的条件 y=temp。 display(m,n,x,y)。 刷新数码管 zidong=0。 } } 比赛暂停子程序 void key4() { if(P1_0==0) 检测到暂停按键按下时候,令 EA=0 关闭中断 中州大学课程设计报告 20 { delay(1)。 同通过死循环程序 while(1),不断刷新数码管 if(P1_0==0) 当暂停键再次按下时候,开中断,以使比赛时间 { 继续倒计时,由于在暂停的时候,程序处于死循 while(P1_0==0)。 EA=0。 无法回到主程序,暂停时,除了暂停键 while(1) 其他按键按下均无效 { display(m,n,x,y)。 if(P1_0==0) { 当暂停键再次按下时候, EA=1 开中断,计时数码管 delay(1)。 继续倒计时,同时通过 break 语句,跳出死循环 if(P1_0==0) { while(P1_0==0)。单片机设计—篮球计分器
相关推荐
器。 5 ( 3)检测 P3口或 P2 口的空闲电压是否有 5V 电压,如果没有,说明单片机系统没有工作。 ( 4)用万用表检测复位电路,通过复位按键,检测第 9 脚 的电压是否为变化,如果按键没有按下,电压为 0V,按键按下后,电压立刻变为 5V,之后很快的降为 0V,则表示复位电路正常。 ( 5)用示波器检测振荡电路,主要是检测第 1 19 脚,检测是否有震荡波产生,如果有,表示震荡电路正常
善的角度来考虑,选择此方案更有优势。 调速方式的选择 方案一:采用数模转化芯片 DAC0832 来控制,有单片机根据当前环境温度输出数值到 DAC0832 中,再由 DAC0832 产生相应的模拟信号控制晶闸管的导通角 ,从而采用无级调速电路实现电扇电机转速的调节。 方案二:采用单片机软件模拟 PWM 调速的方法。 PWM 是一种按照一定的规律改变脉冲序列的脉冲宽度,以调节输出量和波
空气过滤片 : 1 个 4) 呼吸管路过滤片 : 1 个 5) 加温湿化器 : 1 台 6) 成人用加热舱 : 1 台 7) 湿化器托架 : 1 个 8) 湿化器安装架 : 1 个 9) 温度传感器 : 1 个 10) 成人管路 : 1 个 11) 机械臂 : 1 个 12) 成人模拟肺 (蓝色外壳 ): 1 个 13) 流量传感器 : 5 个 14) 中心供氧管道 : 3 米 15)
启动 T0 工作 停止 T0 工作 开始 T0 初始化并开中断允放 T0 中断 单片机设电子琴设计报告 第 8 页 共 19 页 8 MOV 30H,00。 定时器初值清零 MOV 31H,00 MOV P1,0FFH。 设置 P1 口为输入模式 MOV TOMD, 01H。 设置定时器 0 为工作模式 1 SETB ET0。 开定时器 0 中断 SETB EA。 开总中断 CLR TR0。
行。 操作协议 为:初使化 DS18B20(发复位脉冲)→发 ROM功能命令→发存储器操作命令→处理 [5] DS18B20 的性能特点 DS18B20 的性能特点如下: 1) 独特的单线接口仅需要一个端口引脚进行通信; 2) 多个 DS18B20 可以并联在惟一的三线上,实现多点组网功能; 3) 无须外部器件; 4) 可通过数据线供电,电压范围为 ~ ; 5) 零待机功耗; 6) 温度以
种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在 LED 显示技术中被广泛使用。 以 8 8 点阵模块为例,说明一下其使用方法及控制过程。 图 中,红色水平线Y0、 Y1„„ Y7 叫做行线,接内 部发光二极管的阳极,每一行 8个 LED的阳极都接在本行的行线上。 相邻两行线间绝缘。 同样,蓝色竖直线 X0、 X1„„ X7 叫做列线,接内部每列 8个 LED的阴极,相邻两列线间绝缘。