標題: 拼數(shù)游戲 (lcd)課題要求:進入游戲之后,產(chǎn)生一個兩位的隨機數(shù),在lcd上顯示,通... [打印本頁]

作者: zeq    時間: 2019-1-5 21:50
標題: 拼數(shù)游戲 (lcd)課題要求:進入游戲之后,產(chǎn)生一個兩位的隨機數(shù),在lcd上顯示,通...
#include<reg51.h>
#include <stdlib.h>
#include "lcd.h"
#define uint unsigned int
#define uchar unsigned char
sbit Key_1 = P3^3;
sbit Key_2 = P3^4;
sbit Key_3 = P3^6;
sbit Key_4 = P3^7;
uchar Num_Temp,Num_Ture,Num_False;//temp???????
uchar Total;//????
uchar Num_Dat=0;
uint Time_Coont;//???????????
bit Change_Flag=0;
void Delay10ms(uchar delaytime);  //@11.0592MHz
void Key_Scan();
void Timer0Init(void);
void main()
{
Timer0Init();//??????????
    LcdInit(); //LCD??????????
LcdWriteCom(0x0f);   //?????? LcdWriteCom ??lcdд????????????? ????com ?????
    LcdWriteStr(1,1,"N:00    T:0");//д??λ??//
LcdWriteStr(2,1,"T:0  F:0  C:0");
LcdWriteCom(0x80+3);//?????λ??N??00????0λ??
    while(1)
{
        Key_Scan();
}
}
void Key_Scan()
{
    if(Key_1 == 0)
    {
        Delay10ms(1);
        if(Key_1 == 0)
        {
            while(Key_1 == 0);
   if(Change_Flag == 1)
   {
    if(Num_Dat /10 < 9)
     Num_Dat = Num_Dat+10;
    LcdWriteNum(1,3,Num_Dat/10);   
    LcdWriteCom(0x80+2);
   }
   else
   {
    if(Num_Dat %10 < 9)
     Num_Dat++;;
    LcdWriteNum(1,4,Num_Dat%10);   
    LcdWriteCom(0x80+3);
   }
        }
    }
    if(Key_2 == 0)
    {
        Delay10ms(1);
        if(Key_2 == 0)
        {
            while(Key_2 == 0);
   if(Change_Flag == 1)
   {
    if(Num_Dat /10 > 1)
     Num_Dat = Num_Dat-10;
    LcdWriteNum(1,3,Num_Dat/10);   
    LcdWriteCom(0x80+2);
   }
   else
   {
    if(Num_Dat %10 > 0)
     Num_Dat--;
    LcdWriteNum(1,4,Num_Dat%10);   
    LcdWriteCom(0x80+3);
   }
        }
    }
    if(Key_3 == 0)  //?л?????????
    {
        Delay10ms(10);
  if(Key_3 == 0)
        {
            while(Key_3 == 0);
   Change_Flag = ~Change_Flag;
   if( Change_Flag == 1)
    LcdWriteCom(0x80+2);
   else
    LcdWriteCom(0x80+3);
        }
    }
if(Key_4 == 0)
    {
        Delay10ms(10);
  if(Key_4 == 0)
        {
            while(Key_4 == 0);
   LcdWriteCom(0x0c);  //?????????????
   TR0 = 1;   //???????
        }
    }
}
void Timer0Init(void)  
{
TMOD &= 0xF0;  
TMOD |= 0x01;
TL0 = 0x00;  
TH0 = 0xDC;
TF0 = 0;  

TMOD &= 0x0f;  
TMOD |= 0x20;  

TR1 = 1;
ET0 = 1;   
EA = 1;      
}
void Delay10ms(uchar delaytime)  //@11.0592MHz
{
    unsigned char i, j,k;
    for(k=0; k<delaytime; k++)
    {
        i = 18;
        j = 235;
        do
        {
            while (--j);
        } while (--i);
    }
}
void Timer_0()    interrupt 1
{
TL0 = 0x00;  
TH0 = 0xDC;  

Time_Coont++;
if(Time_Coont > 100)
{
  Time_Coont = 0;
  Total++;
  if(Total > 59)
   TR0 = 0;  
  srand(TL1);  
  Num_Temp = rand()%(91)+10;  
  if(Num_Temp == Num_Dat)
   Num_Ture++;
  else
   Num_False++;
  LcdWriteNum(2,13,Num_Temp);
  LcdWriteNum(2,3,Num_Ture);  
  LcdWriteNum(2,8,Num_False);
  LcdWriteNum(1,11,Total);
  
}
}



作者: admin    時間: 2019-1-6 04:16
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1