C51单片机数码管随机模拟显示乘法口诀
时间: 2023-12-26 14:06:41 浏览: 96
好的,这里是C51单片机的示例代码,可以使用KEIL C51编译器进行编译:
```
#include <reg52.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2; //数码管选择端口LSA
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5; //蜂鸣器端口
uchar code dofly_DuanMa[17]={ //共阳数码管0-F显示段码值
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xC6,0xA1,0x86,0x8E,0xFF,0x00
};
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Display(uint num) //数码管显示函数
{
uchar ge,shi,bai,qian; //定义千百十个变量
qian=num/1000; //提取千位
bai=num%1000/100; //提取百位
shi=num%100/10; //提取十位
ge=num%10; //提取个位
LSA=0; //以下4行代码,选中第0位数码管
P0=dofly_DuanMa[qian]; //发送千位数字段码值
delay(100); //延时
LSA=1; //关闭当前数码管
LSB=0; //以下4行代码,选中第1位数码管
P0=dofly_DuanMa[bai]; //发送百位数字段码值
delay(100); //延时
LSB=1; //关闭当前数码管
LSC=0; //以下4行代码,选中第2位数码管
P0=dofly_DuanMa[shi]; //发送十位数字段码值
delay(100); //延时
LSC=1; //关闭当前数码管
LSA=0; //以下4行代码,选中第3位数码管
P0=dofly_DuanMa[ge]; //发送个位数字段码值
delay(100); //延时
LSA=1; //关闭当前数码管
}
void main()
{
uint a, b, c;
srand(time(0)); //初始化随机种子
while(1)
{
a = rand() % 8 + 2; //生成2-9之间的随机数
b = rand() % 8 + 2;
c = a * b;
Display(c); //显示乘法结果
delay(2000); //延时2秒
}
}
```
这个代码会随机生成两个2-9之间的数字,然后计算它们的积,并在4位共阳数码管上显示乘法结果。每次循环会有2秒的延迟,然后循环进入下一次随机乘法口诀的生成和显示。
阅读全文