⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 99koujue.c

📁 基于51开发
💻 C
字号:
/********************************************************************************
* 描述:  乘法口诀演示                                                         *
*    K1--- 模拟出题控制开关, 接p1.4口,数码管数据 p0口,数码管控制p2口         *
*      第6位数码管显示被乘数,第4位数码管显示乘数。                            *
*      第1、2位数码管显示乘积。                                                *
********************************************************************************
*  日期:  2007-3-25                                                            *
*  版本:  3.0                                                                  *
*  作者:  深圳学林电子有限公司     专业8051单片机教学站                        *
*  邮箱: sxj1974@163.com                                                       *
********************************************************************************
*  硬件:此程序在本公司xlisp系列单片机实验仪运行通过                           *
********************************************************************************
* 【版权】 Copyright(C)深圳学林电子有限公司 www.51c51.com  All Rights Reserved *
* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
********************************************************************************/
#include < reg51.h >
#include < intrins.h >
#define uchar unsigned char
#define uint  unsigned int
sbit  K1 = P1^4;
uchar code display[]  = { 0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff};//0,1,2,3,4,5,6,7,8,9,关显示,数码管码表
uchar data testdata[] = {0x00,0x00,0x0a,0x00,0x0a,0x00};
uchar shift ;
/**********************************************************
 延时子程序
**********************************************************/
void delayms(uint ms) 
{
   uchar t;
   while(ms--)
   { 
     for(t = 0; t < 120; t++);
   }
}
/**********************************************************
  显示函数
**********************************************************/
void  play(void)
{
   uchar k; 
   P0=0xff;
   P2=0xff;
   shift=0x7f;   
   for(k=0; k<6; k++)
   {  
     P0=display[testdata[k]];
     P2=shift;
     shift=_cror_(shift,1);
     delayms(1);
   }
   P2=0xff ;                   //关闭显示
}
/**********************************************************
  随机出题函数
**********************************************************/
void  RUBRIC()
{
   uchar  num1,num2,temp;
   TR1=0;
   temp=TL1;                 //取T1当前的计数值
   temp=~temp;               //取反得到对应的题号
   num2=temp/9;              //就题目分成9组
   num2++;                   //将组号0~8转换为被乘数1~9
   testdata[5]=num2;         //保存被乘数
   num1=temp%9;              
   num1++;                   //将组号0~8转换为乘数1~9。
   testdata[3]=num1;         //保存乘数
   temp=num2*num1;           //计算乘积
   testdata[1]=temp/10;
   testdata[0]=temp%10;
   TR1=1;   
} 
/**********************************************************
  主函数
**********************************************************/
main()
{
   uchar  i;
   P0=0xff;
   P2=0xff;
   TMOD=0x21;	             //将T1设置为8位自动重装工作方式。
   TH1=175;	                 //对T1进行预置。
   TL1=175;
   TR1=1;                    //启动T1。
   while(1)                
   {
      if(K1==0)
      {
        for(i=0;i<10;i++)    //用显示程序作为键延时  
        play();
        while(K1==0);        //等待K1键释放
        RUBRIC();        
      }
      play();                //显示数据
   } 
}
/*********************************************************/





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -