设计一个LED数码管显示器的静态显示电路并设计程序实现以下功能:完成2位显示,要求两位分别正序和逆

设计一个LED数码管显示器的静态显示电路并设计程序实现以下功能:完成2位显示,要求两位分别正序和逆,第1张

可以用仿真图来实现,用两位共阳数码管,分别接在P0,P2口,组成两位静态显示电路。先做加法计数,计数到99,自动改为减法计数,计数到0,再变为加法计数。由此循环。

仿真图

程序如下

#include<reg51.h>

unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}

void delay()

{

unsigned int j

for(j=20000j>0j--)//修改j 的初值,可改变计数的速度

}

void main()

{

char n,x=1//先加法计数

while(1)

{

P0=tab[n/10]//显示十位

P2=tab[n%10]//显示个位

delay()

n+=x

if(n>=99)

x=-1//减法计数

if(n==0)

x=1//加法计数

}

}

#include

<iostream>

#include

<string>

using

namespace

std

int

main()

{

string

a,

b

int

*sum

int

i,

ja,

jb

cout

<<

"请输入两个数字,每个数字以空格结尾:"

<<

endl

cin

>>

a

>>

b

string

temp

if

(

a.size()

>

b.size()

)

//

如果a长度大于b,则交换两字符串

{

temp

=

a

a

=

b

b

=

temp

}

//

在这后,就肯定是a的长度比b小,所以和的位数最大就是b的位数+1。

sum

=

new

int[b.size()+1]

//

所以给和申请b的位数+1个位置。

sum[0]

=

0

char

achar[1]

char

bchar[1]

int

carry

=

0

//

记录进位

int

sizeDif

=

b.size()

-

a.size()

//

记录两个数字的位数差

int

count

//

记录和的位数

for

(

ja

=

a.size()-1,

jb

=

b.size()-1

ja

>=

0

ja--,

jb--

)

{

achar[0]

=

a[ja]

bchar[0]

=

b[jb]

sum[jb+1]

=

atoi(achar)

+

atoi(bchar)

+

carry

carry

=

0

//

清空进位标志位

if(

sum[jb+1]

>

9

)

{

carry

=

1

sum[jb+1]

-=

10

//

使之成为一位数,方便输出。

}

}

for

(

i

=

sizeDif-1

i

>=

0

i--

)

{

bchar[0]

=

b[i]

sum[i+1]

=

atoi(bchar)

//

转换为数字

carry

=

0

//

清空进位标志位

if(

sum[i+1]

>

9

)

{

carry

=

1

sum[i+1]

-=

10

//

使之成为一位数,方便输出。

}

}

cout

<<

endl

<<

"The

process

is:"

<<

endl

for

(

i

=

0

i

<=

sizeDif

i++

)

{

cout

<<

"

"

}

cout

<<

a

<<

endl

cout

<<

"+"

<<

b

<<

endl

for

(

i

=

0

i

<=

b.size()

i++

)

cout

<<

"-"

cout

<<

endl

if

(

carry

==

1

)

//

当和的位数为b的位数+1时

{

cout

<<

'1'

//

先输出最高位,否则就不输出。

}

else

{

cout

<<

"

"

}

for

(

i

=

1

i

<=

b.size()

i++

)

cout

<<

sum[i]

cout

<<

endl

cout

<<

endl

<<

"So

the

result

is:

"

int

remainder

if

(

carry

==

1

)

//

当和的位数为b的位数+1时

{

count

=

b.size()+1

sum[0]

=

1

remainder

=

count%4

for

(

i

=

0

i

<

remainder

i++

)

cout

<<

sum[i]

if

(

remainder

==

0

)

{

for

(

remainder

<

4

remainder++

)

cout

<<

sum[remainder]

}

for

(

i

=

remainder

i

<

count

i++

)

{

if

(

(i-remainder)

%

4

==

0)

cout

<<

','

cout

<<

sum[i]

}

}

else

{

count

=

b.size()

remainder

=

count%4

for

(

i

=

1

i

<

remainder+1

i++

)

cout

<<

sum[i]

if

(

remainder

==

0

)

{

for

(

remainder++

remainder

<

4

remainder++

)

cout

<<

sum[remainder]

}

for

(

i

=

remainder

i

<

count

i++

)

{

if

(

(i-remainder)

%

4

==

0)

cout

<<

','

cout

<<

sum[i]

}

}

cout

<<

endl

return

0

}

//

花了N个小时写出来的啊!!!

<?php // 判断post是否传过来sub参数,从而判断是提交计算,还是刷新页面 if (isset($_POST['sub'])){ echo "用户点击提交按钮,提交计算请求<br>" // 下面注释掉的代码并不是错误的,只是区别switch的另外一种方式// if ($_POST['ysf'] == "+"){// echo $_POST['num1'] + $_POST['num2'] . "<br>"// }elseif ($_POST['ysf'] == "-"){// echo $_POST['num1'] - $_POST['num2'] . "<br>"// }elseif ($_POST['ysf'] == "*"){// echo $_POST['num1'] * $_POST['num2'] . "<br>"// }elseif ($_POST['ysf'] == "/"){// echo $_POST['num1'] / $_POST['num2'] . "<br>"// }elseif ($_POST['ysf'] == "%"){// echo $_POST['num1'] % $_POST['num2'] . "<br>"// }// 判断两个运算元是否为数字 如果不是数字 则不进行运算 if (!is_numeric($_POST['num1']) || !is_numeric($_POST['num2'])){ $isDo = false echo "其中一个运算元不是数字,不进行运算<br>" }else{ $isDo = true }// 声明变量 计算结果 $sum = "" if ($isDo){ // 判断两个运算元是否为数字 如果不是数字 则不进行运算 switch ($_POST['ysf']){case '+': $sum = $_POST['num1'] + $_POST['num2']break case '-': $sum = $_POST['num1'] - $_POST['num2']break case '*': $sum = $_POST['num1'] * $_POST['num2']break case '/': $sum = $_POST['num1'] / $_POST['num2']break case '%': $sum = $_POST['num1'] % $_POST['num2']break } echo $sum."<br>" } }else{ echo "用户刷新页面<br>" //die("不做计算处理<br>")}?> <html lang="en"><head><meta charset="UTF-8"><title>简易计算器</title></head><body><!--table 表格--><!--border=1,表格周围的边框设置为1像素宽--><!--width=400,表格宽度为400像素宽--><!--align=center,表格水平对齐方式为居中对齐内容--><!--caption 定义表格标题--><!--<h1>定义最大的标题。<h6>定义最小的标题。--><!--<tr>标签定义 HTML 表格中的行。包含一个或多个th或td元素。--><!--ysf 运算符的首字母。--><!--colspan 规定单元格可横跨的列数。--><table border="1" width="400" align="center"><form action="jsq2.php" method="post"> <caption><h1>简易计算器</h1></caption> <caption><h4>iwanghang</h4></caption> <tr> <!--第一个运算元--><!-- <td><input type="text" size="5" name="num1" value=""></td>--> <td><input type="text" size="5" name="num1" value="<?phpif (isset($_POST['sub'])){echo $_POST['num1']} ?>"></td> <!--运算符--> <td> <select name="ysf"><!-- <option value="+">+ </option>--><!-- <option value="-">- </option>--><!-- <option value="*">* </option>--><!-- <option value="/">/ </option>--><!-- <option value="%">% </option>--><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="+") echo "selected"} ?>value="+">+ </option><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="-") echo "selected"} ?>value="-">- </option><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="*") echo "selected"} ?>value="*">* </option><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="/") echo "selected"} ?>value="/">/ </option><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="%") echo "selected"} ?>value="%">% </option> </select> </td> <!--第二个运算元--><!-- <td><input type="text" size="5" name="num2" value=""></td>--> <td><input type="text" size="5" name="num2" value="<?phpif (isset($_POST['sub'])){echo $_POST['num2']} ?>"></td> <!--提交--> <td><input type="submit" name="sub" value="等于"></td> </tr> <tr> <td colspan="4"> <?php if (isset($_POST['sub'])){ echo "计算结果:{$_POST['num1']}{$_POST['ysf']}{$_POST['num2']} = {$sum}"}?> </td> </tr></form></table></body></html>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12003431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存