当前位置:首页 > 单片机课程设计篮球比赛计分牌的设计
6.4篮球记分牌源程序 #include
#define uchar unsigned char #define uint unsigned int
sbit LED_GREEN=P3^2; //绿色指示灯 sbit LED_YELLOW=P3^3; //黄色指示灯 sbit LED_RAD=P3^4; //红色指示灯 sbit BELL=P3^7; //扬声器控制脚 unsigned char Sum1=0,Sum2=0;
unsigned char FlagStart=0;//开始标志 =1开始 =2暂停 =3停止 unsigned char CountSeg=8;
//数码管位扫描寄存器
unsigned char Miao=0; //秒显示计数器 unsigned char Fen=0; //分显示计数器 unsigned int CountT1=0;
unsigned char SegDat[8]={10,10,10,10,0,0,0,0}; //数码管显示缓存,
//计时数码管(SEGDAT[0],[1]) 计分
1
数码管
(SEGDAT[2],[3],[4],[5],计分2数码管(SEGDAT[6],[7],[8],[9] unsigned
code
Table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xFF};//字模0~9 - unsigned
页 第8
code
Table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void ArmBell(void); void EndBell(void); void key_scan(void);
/****************T1 1MS定时中断***************/ void InitTimer1(void) {
TMOD = 0x10; TH1 = 0x0F8; TL1 = 0x30; EA = 1; ET1 = 1; TR1 = 1; }
/******************ms延时子程序*******************/ void delayms(unsigned int ms) {
unsigned char k; while (ms--) {
for (k = 0; k < 114; k++) ;
页 第9
} }
/****************主程序****************/ void main(void) {
uchar KeyValue;
P1=0xff;
LED_GREEN=1; LED_YELLOW=1; LED_RAD=1;
InitTimer1(); while(1) {
KeyValue=P1; if(KeyValue!=0xff) {
delayms(10);
KeyValue=P1; if(KeyValue!=0xff) {
if(KeyValue==0xf7)//开始 {
页 第10
}
FlagStart=1; LED_GREEN=0; LED_YELLOW=1; LED_RAD=1; Fen=10; Miao=0; CountT1=500; SegDat[0]=Fen/10; SegDat[1]=Fen; SegDat[2]=Miao/10; SegDat[3]=Miao;
else if(KeyValue==0xef)//暂停 {
if(FlagStart==1) {
FlagStart=2; LED_GREEN=1; LED_YELLOW=0; LED_RAD=1; }
else if(FlagStart==2)
页 第11
共分享92篇相关文档