以下是篮球计分器的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单片机+74hc595芯片实现跑马灯
下一篇:基于51单片机函数信号发生器
推荐阅读最新更新时间:2024-11-11 14:14
设计资源 培训 开发板 精华推荐
- LTC4365 的典型应用 - 过压、欠压和反向电源保护控制器
- 具有 400kHz 电荷泵开关的 LT8494IFE 宽输入和输出范围 SEPIC 转换器的典型应用电路
- FRDM-KE02Z40M: 面向Kinetis KE02 MCU的Freedom开发平台
- RDR-321 - 17W 双输出反激式转换器
- 用于 DDR 电源的 LTC3634MPFE 双路 3A 单片式降压稳压器的典型应用电路
- 四路抢答器(已经测试)
- 使用 ROHM Semiconductor 的 BD25IA5WEFJ 的参考设计
- LTC1746、14 位、25Msps 低功耗模数转换器的典型应用
- LTC2376-16、16 位、250ksps、低功率 SAR ADC 的典型应用电路
- 【训练营】wifi插座+996490A
- 福禄克首款热成像万用表Fluke-279FC 即将上市!填写问卷赢好礼喽!
- 直播已结束【最新 TI C2000实时控制芯片 — F28003X】
- 有奖直播:TI MSP430TM集成可配置信号链模块在传感测量领域的应用
- 闯关赢优惠券,蝴蝶粉最低可29元体验NUCLEO-L452RE
- 阅读是德科技 Power Supply、汽车电子精彩专题,让您的设计更精准!参与答题赢好礼!
- 有奖直播:艾迈斯欧司朗智慧农业与植物照明
- 赛灵思工业与医疗专题有奖问答
- Littelfuse 碳化硅(SiC) MOSFET和肖特基二极管产品介绍及相关应用
- TI有奖创意征集,CC3200开发套件等100份礼品等你来
- 快来应援吧!投票选出你最爱的TI培训课程
- 【Altera soc 体验之旅】+基于自组网的无线路由设计在FPGA-SOC上的实现
- nrf51822的dual_bank和single_bank升级的故事——论攻城狮之间是多么的缺乏默契......
- 《走过路过,千万不要错过》 定时器中断 动态扫描 。单步可以。一执行 就有问题。。
- 求购:ADI的ADALM1000开发板,有坛友转让吗?
- 单片机学习该怎么入手?
- z-stack的STACK_PROFILE_ID(网络拓扑与网络运行模式)
- 请问使用hilo的烧录机如何对NXP 89V51RD2FN单片机进行烧录
- 请教:WINCE开机为什么会黑屏一下?
- nRF52系列来袭,Nordic的低功耗蓝牙方案52832
- 一个基于MSP430的MP3完整实例