导航:首页 > 编程语言 > c计算器源代码数码管

c计算器源代码数码管

发布时间:2025-08-01 00:36:01

㈠ 51单片机数码管动态显示从右往左

这是四位数码管从右从左流动显示,像滚动字幕一样的。用不着矩阵按键哪。

其实程序很简单,没那么复杂。程序如下

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共阴段码码,0x00为灭

void delay()//延时子程序

{

uint y;

for(y=400;y>0;y--);

}

void main()

{

uchar n,x;

while(1)

{

n++;

if(n>50)//n为显示一屏显示次数,n大小可调节流动速度

{

n=0;

x++;//从下一个位置开始显示

if(x>8)x=0;

}

}

}

仿真结果

㈡ 利用矩阵式键盘,设计一个10以内数的阶乘计算器,计算结果用六位数码管显示

首先,我们需要选择一种合适的单片机进行编程。在本例中,我们可以选择AT89S52单片机作为主控芯片。

接下来,我们需要设计电路图并进行硬件搭建。按照题目要求,我们需要使用矩阵式键盘和六位数码管。可通过链接进行查看:

https://www.easyeda.com/claraliu/matrix-keyboard-and-6-digit-display

接下来,我们需要编写程序实现阶乘计算功能并将结果显示在六位数码管上。以下是具体的程序实现方式:

  1. 首先定义一个用于保存输入数字的变量,并初始化为0;另外还需要定义一个用于保存阶乘结果的变量。

2.然后通过键盘读取用户输入的数字,并进行判断是否小于等于10。如果不是,提示用户重新输入。

3.接着,通过一个循环语句计算出所输入数字的阶乘,并将结果保存到之前定义的结果变量中。

4.最后,将计算出的阶乘结果转换为六位十进制数,并通过数码管进行显示。

以下是完整程序的示例:

#include <reg52.h> // 包含AT89S52头文件

#define uchar unsigned char // 定义uchar类型

#define uint unsigned int // 定义uint类型

sbit LSA = P2^2; // 设置LSA-P2.2引脚

sbit LSB = P2^3; // 设置LSB-P2.3引脚

sbit LSC = P2^4; // 设置LSC-P2.4引脚

uchar code table[]={ // 建立表格实现数码管显示

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0xbf,0xff,

0x88,0x83,0xc6,0xa1};

void delay(uint i) // 延时函数

{

while(i--);

}

void Display(uchar FirstBit,uchar Num) // 数码管显示函数

{

LSA=FirstBit; // 选择哪一位数码管

P0=table[Num]; // 显示数字

delay(100); // 延时一段时间

P0=0xff; // 关闭数码管

}

void main()

{

uchar input_num = 0; // 输入的数字

uint result = 1; // 阶乘结果

uchar i; // 循环计数器

while(1)

{

P1 = 0xf0;

if(P1 != 0xf0) // 如果有键按下

{

delay(1000); // 延时去抖

if(P1 != 0xf0) // 确认是否有键按下

{

switch(P1) // 判断按下的是哪个键

{

case 0x7f: input_num = 1;break;

case 0xbf: input_num = 2;break;

case 0xdf: input_num = 3;break;

case 0xef: input_num = 10;break;

}

break; // 跳出while循环

}

}

}

if(input_num != 0 && input_num <= 10) // 判断输入的数字是否符合要求

{

for(i = 1; i <= input_num; i++) // 计算阶乘

{

result *= i;

}

}

else

{

P1 = 0xfe;

Display(0,result/100000); // 显示结果

Display(1,(result%100000)/10000);

Display(2,(result%10000)/1000);

Display(3,(result%1000)/100);

Display(4,(result%100)/10);

Display(5,result%10);

}

}

最后,我们需要将程序下载到单片机中,并将硬件连接好。这样,当用户输入一个1-10之间的数字时,该计算器就会

阅读全文

与c计算器源代码数码管相关的资料

热点内容
游戏编程学什么课程 浏览:540
access中如何表示指定数据 浏览:315
net映射文件下载 浏览:59
商务办公教程 浏览:800
oracle导出dmp文件linux 浏览:582
盲目崇拜苹果手机 浏览:429
战地2音频文件路径 浏览:526
怎么用手机恢复网站 浏览:653
淘宝一样的app单商户 浏览:111
下载津心办app有什么用 浏览:268
陌陌升级方法 浏览:132
四轮定位哪个数据影响吃胎 浏览:1
怎么清楚cad中lsp文件 浏览:358
qq收藏文件找出来无法打开怎么办 浏览:913
为什么大厂没人开发鸿蒙app 浏览:108
编程猫怎么让人物说你好 浏览:795
edius怎么导出工程文件 浏览:625
word表格怎样大小一样大小不一样 浏览:260
删除承载网络 浏览:842
什么app买鞋速度快 浏览:519

友情链接