历史上的今天
今天是:2024年09月07日(星期六)
2020年09月07日 | 51单片机篮球计分器程序+电路图
2020-09-07 来源:51hei

以下是篮球计分器的c语言程序源代码:
#include #include #define uchar unsigned char #define uint unsigned int uchar secs = 0; uchar minutes = 1; uchar LED,num1,num2,num = 4; uchar flag1 = 1,flag2 = 0; uchar m_secs = 24; uchar key_value = 0; uchar table[13] = {1,2,3,4,5,6,7,8,9,0,1,2,3}; uchar code LedNum[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar scan_kay(void); void delay(uchar z); void INT0_Initial(void) { EX0 = 1; IT0 = 1; EA = 1; P1 = 0xF0; } void INT0_Interrupt(void) interrupt 0 { uchar temp; temp = scan_kay(); if(temp!=0x7f) { key_value = temp; } P1 = 0xF0; } void Time0_Initial(void) { TMOD = 0x01; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; ET0 = 1; TR0 = 1; EA = 1; PT0 = 1; PX0 = 0; } volatile uchar cnt = 0; void Time0_Interrupt(void) interrupt 1 { TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; cnt ++; minutes=11; if(cnt==15) { cnt = 0; secs --; m_secs --; if(flag2==1) { LED = !LED; } if(flag2==0) { LED = 0; } } if(secs>60) { secs = 59; minutes --; } if(m_secs>24) { m_secs = 23; if(flag1==1) { flag2 = 1; } if(flag1==0) { flag2 = 0; } } if(minutes>60) { minutes = 11; m_secs = 24; num ++; } if(num==4) { num = 1; } } void HEXTOBCD(void) { table[0] = LedNum[num]; table[1] = LedNum[m_secs/10]; table[2] = LedNum[m_secs%10]; table[3] = LedNum[minutes/10]; table[4] = LedNum[minutes%10]; table[5] = LedNum[secs/10]; table[6] = LedNum[secs%10]; table[7] = LedNum[num1/100]; table[8] = LedNum[num1%100/10]; table[9] = LedNum[num1%10]; table[10] = LedNum[num2/100]; table[11] = LedNum[num2%100/10]; table[12] = LedNum[num2%10]; } void Display(uchar *str) { uchar i,temp = 0; for(i=0;i<13;i++) { P0 = 0x00; _nop_(); P2 = temp+i; P0 = str[i]; delay(2); } } uchar i,j; void delay(uchar z) { for(i=1;i } void main() { INT0_Initial(); Time0_Initial(); delay(10); LED = 0; while(1) { switch(key_value) { case 12: { num1 ++;key_value = 0; flag1 = 0; if(num1>255) { num1 = 0; } break; } case 13: { num1 --;key_value = 0; flag1 = 0; if(num1>255) { num1 = 255; } break; } case 14: { num2 ++;key_value = 0; flag1 = 0; if(num2>255) { num2 = 0; } break; } case 15: { num2 --;key_value = 0; flag1 = 0; if(num2>255) { num2 = 255; } break; } case 1: { TR0 = 1; key_value = 0; break; } case 2: { num1 = 0;num2 = 0; num = 4; secs = 0;minutes = 12; m_secs = 24; key_value = 0; TR0 = 1; break; } case 3: { TR0 = 0; key_value = 0; break; } default: { break; } } HEXTOBCD(); delay(5); Display(table); delay(10); } } uchar scan_key(void) { uchar i,key_value; P1 = 0xFF; for(i=0;i<4;i++) { P1 = ~(1< key_value = P1&0xF0; if(key_value!=0xF0) { delay(20); key_value = P1&0xF0; if(key_value!=0xF0) { key_value &= 0xF0; switch(key_value) { case 0x70: key_value = 15-(3-i)*4;break; case 0xb0: key_value = 14-(3-i)*4;break; case 0xd0: key_value = 13-(3-i)*4;break; case 0xe0: key_value = 12-(3-i)*4;break; default: key_value = 0x7f; } return key_value; } } P1 = 0xFF; } return 0x7f; } uchar scan_kay(void) { uchar key_va1,key_va2; key_va1 = scan_key(); if(key_va1==0x7f) { return 0x7f; } do { key_va2 = scan_key(); }while(key_va1==key_va2); return key_va1; }
下一篇:基于51单片机函数信号发生器
史海拾趣
|
单片机控制实时时钟X1226的应用设计[ZT] 引 言 X1226具有时钟和日历的功能,时钟依赖时、分、秒寄存器来跟踪,日历依赖日期、星期、月和年寄存器来跟踪,日历可正确通过2099年,具有自动闰年修正。 拥有强大的双报警功能,能够被设置到 ...… 查看全部问答> |
|
请问哪位高手有 Ibuyspy delivery 2005 的Sample可以提供?谢谢! Ibuyspy Delivery 2005,VS2005和SQL2005用于WINCE应用的开发范例。 原来的GOTDOTNET已经找不到这个下载了,MSDN上也没有,请问哪位高手可以给一个这个Sample的安装包,谢谢 地址或者发邮件都可以。 junzhu@ymail.com… 查看全部问答> |
|
在做WinCE相关的工作,想在DShow的框架下面使用摄像头,但是似乎比较困难。 首先因为在WinCE5/6,微软好像把Camera这一个模块单独提取出来,写了一个完整的MDD和一个空壳的PDD 现在要开发自己的饿摄像头驱动,其实个人感觉就是实现PDD中的功能就O ...… 查看全部问答> |
|
请教,帮我看看这个串口问题,好吗? void ComInStr() interrupt 4 //串行口中断 { if(RI) { if (j>4) { &n ...… 查看全部问答> |
|
1. 本科以上学历,计算机、电子相关专业 2. 善于沟通,工作认真负责并具备较强的分析和解决问题的能力,有独立工作能力 3. 良好的高速数字电路设计以及数字模拟混合电路设计基础,良好的高速PCB设计基础 5. 熟悉视频相关电路,熟悉FPGA开发与 ...… 查看全部问答> |
|
1、 负责注射泵、输液泵研发等相关工作;2、 负责制定注射泵、输液泵年度研发费用预算并实施费用控制;3. 组织制定和实施泵系列产品技术方案;4. 跟踪本行业及与公司业务相关的国内外技术发展趋势,积累研发素材,收集和分析产品市场信息,结合公司 ...… 查看全部问答> |




