找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1146|回复: 1
打印 上一主题 下一主题
收起左侧

拼数游戏 (lcd)课题要求:进入游戏之后,产生一个两位的随机数,在lcd上显示,通...

[复制链接]
跳转到指定楼层
楼主
ID:412944 发表于 2019-1-5 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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);
  
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-1-6 04:16 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表