最近小孩练习10以内加法运算,正好手上有块51开发板,写个程序自动生成题目会不会好一些呢。 开发板就是下面图这个 ![在这里插入图片描述](https://img-blog.csdnimg.cn/979d9e117ab0456793db7f64c73832d6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6buE6LGG54i4,size_17,color_FFFFFF,t_70,g_se,x_16)
程序分成两部分 1、上电直接运行,是10以内加法,使用两个数码管分别显示两个数字 2、按住KEY1键上电,是两组加法判断,分别用第一个、第三个为第一组数据,第6个和第八个为第二组。
程序上用了一个比较懒的方法,第一个数跟10取余,第二个数为了防止加起来大于十,直接对11减去第一个数去余数。
按键及显示部分原理图
![在这里插入图片描述](https://img-blog.csdnimg.cn/72812ed73d2e4969bd0d37cd9e70eccc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6buE6LGG54i4,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c3683f327c6443429f80fc6cfc4484af.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6buE6LGG54i4,size_20,color_FFFFFF,t_70,g_se,x_16)
程序
#include "reg51.h"
#define SEG_POART P1
sbit SEG_LOCK=P2^6;
sbit BIT_LOCK=P2^7;
#define SEG_DATA P0
#define MAX 11
sbit KEY=P3^7;
sbit SELECT=P3^4;
unsigned char leddata[]= { 0xC0,0xF9,0xA4,0xB0,0x99,0x92, 0x82, 0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay(unsigned int t)
{
while(t--);
}
void seg_disp(char n,char seg)
{
SEG_DATA=0x00;
SEG_LOCK=1;
SEG_LOCK=0;
SEG_DATA=~(0x01<<n) ;
BIT_LOCK=1;
BIT_LOCK=0;
SEG_DATA=seg;
SEG_LOCK=1;
SEG_LOCK=0;
delay(200);
}
void main()
{ unsigned char a1,b1,a2,b2;
if(SELECT==0)
{
while(1)
{
if(KEY==0)
{
a1=rand()%MAX;
b1=rand()%(MAX-a1);
a2=rand()%MAX;
b2=rand()%(MAX-a2);
}
seg_disp(0,~leddata[a1]);
seg_disp(2,~leddata[b1]);
seg_disp(5,~leddata[a2]);
seg_disp(7,~leddata[b2]);
}
}
else
{
while(1)
{
if(KEY==0)
{
a1=rand()%MAX;
b1=rand()%(MAX-a1) ;
}
seg_disp(1,~leddata[a1]);
seg_disp(7,~leddata[b1]);
}
}
}
运行效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/ee67d5094e4b40c6b67d44a42e6d4525.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6buE6LGG54i4,size_15,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/6e8a7a33ac0c416b9d962ecf166c3ad6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6buE6LGG54i4,size_18,color_FFFFFF,t_70,g_se,x_16)
|