怎样用51单片机做计算器啊?

头像
疯疯丫头315   2021-09-18   10221浏览
已有127条回答
头像
chocolate宸
2023-12-24

1、首先第一步就是要进行查找元器件并放入到原理图中,如下图所示。

2、接着就是要进行原理图连接根据网络标签的方式即可。

3、然后就是要进行编写程序,

程序源代

#include #include

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar operand1[9], operand2[9];

uchar operator;

void delay(uint);

uchar keyscan();

void disp(void);

void buf(uint value);

4、最后一步就是进行验证正确后编译程序在protues中加载HEX观察结果是否正确,如下图所示。



扩展


电脑:

单片机有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。

它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程//调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。

功能特性:

1、可以63K程序空间,接近64K 的16位地址空间;

2、可以Kxdata 空间,全部64K 的16位地址空间;

3、可以真实全部32 条IO脚;

4,完全兼容keilC51 UV2 调试环境,可以通过UV2 环境进行单步,断点, 全速等作;

5、可以使用C51语言或者ASM汇编语言进行调试 ;

6、可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某 变量上就会立即显示出它此的值;

7、可选 使用用户晶振,支持0-40MHZ晶振频率;

8、片上带有768字节的xdata,您可以在时选 使用他们,进行xdata 的;

9、可以双DPTR 指针;

10、可以去除ALE 信号输出. ;

11、自适应300-38400bps 的所有波特率通讯;

12、体积非常细小,非常方便插入到用户板中.插入时紧贴用户板,没有连接电缆,这样可以有效地减少运行中的干扰,避免时出现莫名其妙的故障;

13、插针采用优质镀金插针,可以有效地防止日久生锈,选择优质园脚IC插座,保护插针,同时不会损坏目标板上的插座. ;

14,时监控和用户代分离,不可能产生不能的软故障;

15、RS-232接口不计成本采用MAX202集成电路,串行通讯稳定可靠,绝非一般三极管的简易电路可比。

功能:

器占用单片机串口及器2,与Keil C(PC)通讯,故不支持串口及器2 的功能。全速运行时单片机串口及器2 可供用户使用。

使用方法:

1、将器插入需的用户板的CPU插座中,器由用户板供电;

2、将器的串行电缆和PC机接好,打开用户板电源;

3、通过Keil C 的IDE 开发环境UV2 用户程序进行、调试。

46

头像
MyronKiven
2023-09-24

1、首先第一步就是要进行查找元器件并放入到原理图中,如下图所示。



2、接着就是要进行原理图连接根据网络标签的方式即可。



3、然后就是要进行编写程序,

程序源代

#include #include

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar operand1[9], operand2[9];

uchar operator;

void delay(uint);

uchar keyscan();

void disp(void);

void buf(uint value);



4、最后一步就是进行验证正确后编译程序在protues中加载HEX观察结果是否正确,如下图所示。


49

头像
真南真北
2023-05-15

1、硬件图

硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。

2、主程序流程图


程序的主要思想是:将按键抽象为字符,然后就是对字符的处理。将作数分别转化为字符串存储,作符存储为字符形式。然后调用compute()函数进行计算并返回结果。具体程序及看注释还有流程图。

3、Altium Designer画的PCB图

4、程序源代

#include #include

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar operand1[9], operand2[9];

uchar operator;

void delay(uint);

uchar keyscan();

void disp(void);

void buf(uint value);

uint compute(uint va1,uint va2,uchar optor);

uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xff};

uchar dbuf[8] = {10,10,10,10,10,10,10,10};

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

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

}

uchar keyscan()

{

uchar skey;

P1 = 0xfe;

while((P1 & 0xf0) != 0xf0)

{

delay(3);

while((P1 & 0xf0) != 0xf0)

{

switch(P1)

{

case 0xee: skey = '7'; break;

case 0xde: skey = '8'; break;

case 0xbe: skey = '9'; break;

case 0x7e: skey = '/'; break;

default: skey = '#';

}

while((P1 & 0xf0) != 0xf0)

;

}

}

P1 = 0xfd;

while((P1 & 0xf0) != 0xf0)

{

delay(3);

while((P1 & 0xf0) != 0xf0)

{

switch(P1)

{

case 0xed: skey = '4'; break;

case 0xdd: skey = '5'; break;

case 0xbd: skey = '6'; break;

case 0x7d: skey = '*'; break;

default: skey = '#';

}

while((P1 & 0xf0) != 0xf0)

;

}

}

P1 = 0xfb;

while((P1 & 0xf0) != 0xf0)

{

delay(3);

while((P1 & 0xf0) != 0xf0)

{

switch(P1)

{

case 0xeb: skey = '1'; break;

case 0xdb: skey = '2'; break;

case 0xbb: skey = '3'; break;

case 0x7b: skey = '-'; break;

default: skey = '#';

}

while((P1 & 0xf0) != 0xf0)

;

}

}

P1 = 0xf7;

while((P1 & 0xf0) != 0xf0)

{

delay(3);

while((P1 & 0xf0) != 0xf0)

{

switch(P1)

{

case 0xe7: skey = '$'; break;

case 0xd7: skey = '0'; break;

case 0xb7: skey = '='; break;

case 0x77: skey = '+'; break;

default: skey = '#';

}

while((P1 & 0xf0) != 0xf0)

;

}

}

return skey;

}

void main()

{

uint value1, value2, value;

uchar ckey, cut1 = 0, cut2 = 0;

uchar operator;

uchar i, bool = 0;

init:

buf(0);

disp();

value = 0;

cut1 = cut2 = 0;

bool = 0;

for(i = 0;i < 9;i++)

{

operand1[i] = '';

operand2[i] = '';

}

while(1)

{

ckey = keyscan();

if(ckey != '#')

{

if(isdigit(ckey))

{

switch(bool)

{

case 0:

operand1[cut1] = ckey;

operand1[cut1+1] = '';

value1 = atoi(operand1);

cut1++;

buf(value1);

disp();

break;

case 1:

operand2[cut2] = ckey;

operand2[cut2+1] = '';

value2 = atoi(operand2);

cut2++;

buf(value2);

disp();

break;

default: break;

}

}

else if(ckey=='+'||ckey=='-'||ckey=='*'||ckey=='/')

{

bool = 1;

operator = ckey;

buf(0);

dbuf[7] = 10;

disp();

}

else if(ckey == '=')

{

value = compute(value1,value2,operator);

buf(value);

disp();

while(1)

{

ckey = keyscan();

if(ckey == '$')

goto init;

else

{

buf(value);

disp();

}

}

}

else if(ckey == '$')

{ goto init;}

}

disp();

}

}

uint compute(uint va1,uint va2,uchar optor)

{

uint value;

switch(optor)

{

case '+' : value = va1+va2; break;

case '-' : value = va1-va2; break;

case '*' : value = va1*va2; break;

case '/' : value = va1/va2; break;

default : break;

}

return value;

}

void buf(uint val)

{

uchar i;

if(val == 0)

{

dbuf[7] = 0;

i = 6;

}

else

for(i = 7; val > 0; i--)

{

dbuf[i] = val % 10;

val /= 10;

}

for( ; i > 0; i--)

dbuf[i] = 10;

}

void disp(void)

{

uchar bsel, n;

bsel=0x01;

for(n=0;n<8;n++)

{

P2=bsel;

P0=table[dbuf[n]];

bsel=_crol_(bsel,1);

delay(3);

P0=0xff;

}

}

扩展:

PROTEUS 是单片机课堂教学的先进助手

PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、设计是走向就业的重要实践环节。由于PROTEUS了实验室无法相比的大量的元器件库,了修改电路设计的灵活性、了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也了培养实践精神、创造精神的平台

随着科技的发展,“计算机技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程的风险。相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。

使用Proteus 软件进行单片机系统设计,是虚拟技术和计算机多媒体技术相结合的综合运用,有利于培养的电路设计能力及软件的作能力;

在单片机课程设计和全国大设计竞赛中,我们使用 Proteus 开发环境对进行培训,在不需要硬件投入的条件下,普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。

实践证明,在使用 Proteus 进行系统开发成功之后再进行实际,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。

参考来源:百度百科-protues

132

头像
CSYMiracle
2022-04-30

程序和电路图如下:

#include

#define DIN P1_0

#define CLK P1_2

#define LOAD P1_1

unsigned char key_h,key_l,key_code;

unsigned char ADS,i,j,m,n;

unsigned char n_bit=0;

unsigned char flag=0;

unsigned char key_num[16]={7,8,9,'/',4,5,6,'*',1,2,3,'-','c',0,'=','+'};

unsigned char data1[6]={0};

unsigned char data2[6]={0};

unsigned int result;

void delay(unsigned int n)

{

while(n--);

}

void send(unsigned char addr,unsigned char dat)

{

LOAD=0;

i=0;

while(i<16)

{

if(i<8) ADS=addr;

else

ADS=dat;

for(j=8;j>=1;j--)

{

DIN=ADS&0x80;

ADS<<=1;

CLK=1;

CLK=0;

}

i+=8;

}

LOAD=1;

}

void clear()

{

for(m=1;m<=5;m++)

send(m,0xff);

send(0x06,0);

n_bit=6;

}

void calc()

{

unsigned int temp1;

unsigned int tmep2;

unsigned char temp;

temp1=data1[5]+data1[4]*10+data1[3]*100+data1[2]*1000+data1[1]*10000;

tmep2=data2[5]+data2[4]*10+data2[3]*100+data2[2]*1000+data2[1]*10000;

switch(flag)

{

case 1: result=temp1+tmep2; break;

case 2: result=temp1-tmep2; break;

case 3: result=temp1*tmep2; break;

case 4: result=temp1/tmep2; break;

}

clear();

for(n=6;n>1;n--)

{

temp=(unsigned char)result%10;

if(temp) send(n,temp);

result/=10;

data2[n-1]=data1[n-1]=0;

}

flag=0;

while((P2&0xf0)!=0xf0);

}

void keyScan() //键盘扫描程序

{

if((P2&0xf0)!=0xf0)

delay(20);

if((P2&0xf0)!=0xf0)

{

key_h=P2&0xf0;

P2=0xf0|0x01;

if((P2&0xf0)==0xf0) key_l=0;

P2=0xf0|0x02;

if((P2&0xf0)==0xf0) key_l=1;

P2=0xf0|0x04;

if((P2&0xf0)==0xf0) key_l=2;

P2=0xf0|0x08;

if((P2&0xf0)==0xf0) key_l=3;

P2=0xf0;

switch((~P2)&0xf0)

{

case 0x10: key_h=0x0; break;

case 0x20: key_h=0x1; break;

case 0x40: key_h=0x2; break;

case 0x80: key_h=0x3; break;

}

key_code=key_l*4+key_h;

switch(key_code)

{

case 3: flag=4;n_bit=7;break; //+

case 7: flag=3;n_bit=7;break; //-

case 11: flag=2;n_bit=7;break; //*

case 15: flag=1;n_bit=7;break; ///

case 14: calc();n_bit=7;return; //=

case 12: clear();break; //C

default:

if(n_bit>1)

{

if(n_bit==7)

{

clear();

}

send(n_bit--,key_num[key_code]);

if(!flag)

data1[n_bit]=key_num[key_code];

else

data2[n_bit]=key_num[key_code];

}

}

while((P2&0xf0)!=0xf0);

}

}

void main(void)

{

P2=0xf0;

send(0x0c,0x01);

send(0x0b,0x05);

send(0x0a,0xf5);

send(0x09,0xff);

//

// send(0x01,0x8f);

// send(0x02,0x82);

// send(0x03,0x83);

// send(0x04,0x84);

// send(0x05,0x85);

// send(0x06,0x86);

// send(0x07,0x87);

// send(0x08,0x08);

clear();

n_bit=6;

while(1)

{

keyScan();

}

}

扩展:

Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程//调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。

使用方法如下——

1、将器插入需的用户板的CPU插座中,器由用户板供电。

2、将器的串行电缆和PC机接好,打开用户板电源。

3、通过Keil C 的IDE 开发环境UV2 用户程序进行、调试。



72

头像
小琳子雄霸天下
2021-09-23

刚做过,发给你参考下

这是原理图

51单片机简易计算器程序:

#include

#include

#define uchar unsigned char

#define uint unsigned int

//---------定义引脚--------------------

bit clr=0;

bit ok=0;

bit xiaoshu=0;

bit jiego=0;

bit first_1=1;

bit first_2=1;

sbit dout = P3^2;

sbit load = P2^0;

sbit din = P2^1;

sbit dclk = P2^2;

sbit beer=P0^1;

sbit LCD1602_RS=P2^3;

sbit LCD1602_RW=P2^4;

sbit LCD1602_E=P2^5;

//---------定义变量--------------------

uchar ch451_key=0xff;

uchar yun_sign;

uchar xiabiao=0;

uchar tab[32];

uchar tab1[]={"welcome to use!"};

uchar tab2[]={" make by JunRu!"};

uchar tab3[]={"ERR0R"};

float opr_1=0,opr_temp=0,end=0,a;

//---------声明函数--------------------

void ch451_init(void); //CH451初始化

void ch451_write(uint command);//写命令或到ch451

uchar ch451_read(void); //读按键值

uchar get_char(void);

void LCD_init(void);//初始化;

void delay(unsigned int k);//延时程序

void LCD_inter_command(unsigned char command);//写入控制字

void LCD_inter_dat(unsigned char dat);//写入要显示的

void set_xy(unsigned char x,unsigned char y);//找地址

void write(unsigned char date);//写入字符

void lcdbusy();//查忙时

void display(void);

void spec(void);

void get_end(void);

void hun_he(uchar n);

//-------- 主函数----------------------

void main()

{

uchar i;

LCD_init();//LCD初始化;

ch451_init();//CH451初始化

EA = 1;//打开中断

LCD_inter_command(0x01);//清屏

for(i=0;i<=14;i++)

{

LCD_inter_dat(tab1[i]);

beer=0;

delay(4000);//延时

beer=1;

}

LCD_inter_command(0xc0);//从第二行开始显示

for(i=0;i<=14;i++)

{

LCD_inter_dat(tab2[i]);

beer=0;

delay(4000);//延时

beer=1;

}

delay(0xffff);

delay(0xffff);

LCD_inter_command(0x01);

while(1)

{

if(ok)

{

display();

ok=0;clr=1;

}

}

}

//----------子函数--------------------

void hun_he(uchar n)

{int j;

switch(n)

{

case '+':opr_temp=opr_temp+opr_1;break;

case '-':opr_temp=opr_temp-opr_1;break;

case '*':opr_temp=opr_temp*opr_1;break;

case '/':

{

if(a==0)//减数为零显错

{ LCD_inter_command(0xc0);

for(j=0;j<=4;j++)

{

LCD_inter_dat(tab3[j]);

beer=0;

delay(4000);//延时

beer=1;

}

}

else

{opr_temp=opr_temp/opr_1;}

break;

}

default:break;}

}

void ch451_init(void)//CH451初始化

{

EX0 = 1;

din = 0;

din = 1;

ch451_write(0x403); //开显示

ch451_write(0x580); //BCD译方式

}

void ch451_write(uint command)//写命令或到ch451

{ uchar i;

EX0 = 0;

load = 0;

for(i=0;i<12;i++)

{

din = command&1;

dclk = 0;

command>>=1;

dclk = 1;

}

load = 1;

EX0 = 1;

}

uchar ch451_read(void)//读按键值

{ uchar key=0x07;

uchar i;

EX0=0;

load = 0;

for(i=0;i<4;i++) //将0111读入

{

din = key &1;

dclk = 0;

key>>=1;

dclk =1;

}

load = 1;

key = 0;

for(i=0;i<7;i++) //从CH451读出按键值

{

key<<=1;

key|= dout;

dclk =0;

dclk =1;

}

EX0 =1;

return key;

}

void EX0_ISR(void)interrupt 0 //中断程序

{

uchar temp;

ch451_key=ch451_read(); //将读出的按键值赋给变量

spec();

if(clr) {LCD_inter_command(0x01);clr=0;}

temp=get_char();

if(temp){tab[xiabiao++]=temp; LCD_inter_dat(temp);}

if(xiabiao>=16)LCD_inter_command(0xc0);//若大于16,则从第2行开始显示

if(ok) get_end();

beer=0;

delay(3000);

beer=1;

}

uchar get_char(void)

{

uchar dis=0;

uint temp=0,temp1=0;

switch(ch451_key)

{

case 0x40:dis='1';break;

case 0x41:dis='2';break;

case 0x42:dis='3';break;

case 0x48:dis='4';break;

case 0x49:dis='5';break;

case 0x4A:dis='6';break;

case 0x50:dis='7';break;

case 0x51:dis='8';break;

case 0x52:dis='9';break;

case 0x58:dis='0';break;

case 0x43:dis='+';break;

case 0x4B:dis='-';break;

case 0x53:dis='x';break;

case 0x5B:dis='/';break;

case 0x44:dis='!';break;

case 0x5A:dis='=';

ok=1; //遇到“=”,开始运算

break;

case 0x59:dis='.';break; //小数点

case 0x5C: //删除键

LCD_inter_command(0x01);

xiabiao=0;

break;

default: break;

}

return dis;

}

void spec(void) //特殊功能键

{

switch(ch451_key)

{

case 0x4C:LCD_inter_command(0x10);{if(xiabiao>0)xiabiao-=1;}break; //左移

case 0x54:LCD_inter_command(0x14);{xiabiao+=1;}break; //右移

default:break;

}

}

void delay(unsigned int k)//延时程序

{

while (k--);

}

void LCD_inter_command(unsigned char command)//写入控制字

{

delay(5000);

LCD1602_RS=0;

LCD1602_RW=0;

LCD1602_E=1;

P1=command;

LCD1602_E=0;

lcdbusy();

}

void LCD_init(void)//初始化;

{delay(5000);

LCD_inter_command(0x01);//清屏

delay(5000);

LCD_inter_command(0x38);//设置为8位的接口,两行显示,5、7点字符

delay(5000);

LCD_inter_command(0x0E);//显示打开,光标开并闪烁

delay(5000);

}

void LCD_inter_dat(unsigned char dat)//写入要显示的

{

delay(5000);

LCD1602_RS=1;

LCD1602_RW=0;

LCD1602_E=1;

P1=dat;

LCD1602_E=0;

lcdbusy();

}

void lcdbusy()//查忙

{

P1=0xFF;

LCD1602_RS=0;

LCD1602_RW=1;

LCD1602_E=1;

while((P1&0x80)==1);

}

void display(void) //转化在LCD上显示计算结果

{

int temp=end; //浮点数

int i;

uint xiao_temp;

uint xx; //浮点数的整数部分

if (end>-32769&&end<32768)

{

xx=fabs(end);

xiao_temp=(fabs(end)-xx)*1000;//取出浮点数的小数部分

LCD_inter_command(0xc0);

if(end<0) LCD_inter_dat('-');beer=0;delay(4000); beer=1;//判断是否为负数,若是则显示负号

if(xx>9999) LCD_inter_dat((xx/10000)%10+'0'); beer=0;delay(4000);beer=1;

if(xx>999) LCD_inter_dat((xx/1000)%10+'0');beer=0;delay(4000);beer=1; //在LCD上显示千位的数

if(xx>99)LCD_inter_dat((xx/100)%10+'0'); beer=0;delay(4000);beer=1;//百位

if(xx>9)LCD_inter_dat((xx/10)%10+'0');beer=0;delay(4000); beer=1;//十位

LCD_inter_dat(xx%10+'0');beer=0;delay(4000); beer=1;//个位

if(xiao_temp!=0) //显示小数部分

{

LCD_inter_dat('.');beer=0;delay(4000);beer=1;

LCD_inter_dat((xiao_temp/100)%10+'0');beer=0;delay(4000);beer=1;

LCD_inter_dat((xiao_temp/10)%10+'0');beer=0;delay(4000);beer=1;

LCD_inter_dat(xiao_temp%10+'0');beer=0;delay(4000);beer=1;

}

}

else {LCD_inter_command(0xc0);//从第二行开始显示

for(i=0;i<=4;i++)

{ LCD_inter_dat(tab3[i]);

beer=0;

delay(4000);//延时

beer=1;

}

}

}

void get_end(void)//计算子程序

{ float xiaoshu=1;

uchar fu_flag=0;

uchar xiao_flag=0;

uchar lianji_sign;

uchar i=0;

uchar j;

uchar n;//正负标记符

while(i<=xiabiao)

{

while(tab[i]<=0x39&&tab[i]>=0x30)

{

n=0;

opr_1*=10;

opr_1+=tab[i++]-0x30;

n='+';

}

switch(tab[i])

{

case '.': xiao_flag=1;break;//遇到小数点跳到“if(xiao_flag)”里

case '!': fu_flag=1;break;

case '+': xiaoshu=1;yun_sign='+';if(opr_temp==0){end=opr_temp=opr_1;}else hun_he(lianji_sign);opr_1=0;lianji_sign='+'; break;

case '-': xiaoshu=1;yun_sign='-';if(opr_temp==0){end=opr_temp=opr_1;}else hun_he(lianji_sign);opr_1=0;lianji_sign='-'; break;

case 'x': xiaoshu=1;yun_sign='x';if(opr_temp==0){end=opr_temp=opr_1;}else hun_he(lianji_sign);opr_1=0;lianji_sign='*';break;

case '/': xiaoshu=1;yun_sign='/';if(opr_temp==0){end=opr_temp=opr_1;}else hun_he(lianji_sign);a=opr_1;opr_1=0;lianji_sign='/';break;

case '=':

switch(yun_sign)//进行运算

{

case '+':end=opr_temp+opr_1;break;

case '-':end=opr_temp-opr_1;break;

case 'x':end=opr_temp*opr_1;break;

case '/':{

if(a==0)//减数为零显错

{ LCD_inter_command(0xc0);

for(j=0;j<=4;j++)

{

LCD_inter_dat(tab3[j]);

beer=0;

delay(4000);//延时

beer=1;

}

}

else

{end=opr_temp/opr_1;}

break;

}

default:break;

}

ok=1;//开始进行显示,标志位置1

xiabiao=0;//小数的标志位清零

break;

default:break;

}

i++;

if(xiao_flag)//表示小数

{

while(tab[i]<=0x39&&tab[i]>=0x30)

{

xiaoshu*=0.1;

switch(n)

{

case '+': opr_1=opr_1+(tab[i++]-0x30)*xiaoshu;break;

case '-': opr_1=opr_1-(tab[i++]-0x30)*xiaoshu; break ;

default:break; }

xiao_flag=0;

}

}

if(fu_flag)

{

while(tab[i]<=0x39&&tab[i]>=0x30)

{

n=0;

opr_1=-opr_1*10;

opr_1=-(opr_1+(tab[i++]-0x30));

n='-';

fu_flag=0;

}

}

}

opr_1=0;

opr_temp=0;

xiabiao=0;

xiaoshu=1;

}

195

相关问题

怎样用51单片机做计算器啊?
天使之懿727 1970-01-01

现在打算用89C51单片机做一个简易的计算器,谁能提供给我资料啊?譬如电路图,元器件,工作原理什么的、、、感谢感谢!!!

基于51单片机的简易计算器设计,急
起舞徘徊风露下 1970-01-01

自己花的电路图,需要代码,要C语言,今晚就要,会多加分的如果可以的话我会给报酬的,真的很急

51单片机中的简易计算器程序问题
非非1227 1970-01-01

谁会的m我,我给他看我的程序

用51单片机编程:电子时钟(设计电子时钟,用51单片机编程)
chocolate宸 1970-01-01

单片机高手进来帮帮忙,谢谢谢谢谢谢谢谢!!!要的不是电子钟(我要的是用单片机编的程序)

用51单片机做一个霓虹灯控制的设计。
MyronKiven 1970-01-01

用51单片机做一个霓虹灯控制的设计,麻烦发份protues的图,以及C语言程序,一定要是C语言写的,汇编看不懂

求基于51单片机的简易计算器的仿真图,谢谢!!!
CSYMiracle 1970-01-01

功能实现四则运算而已,有小数符号,是LCD1602显示,4*4矩阵键盘。谢谢,求帐仿真图

51单片机 秒表设计
小琳子雄霸天下 1970-01-01

基于51单片机的LED彩灯控制器设计
天道酬勤1212 1970-01-01

设计一个LED三色彩灯控制器,以51单片机为核心,能够实现:红、黄、蓝三个数码管闪烁5S后,红、黄、蓝数码管依次点亮,之后全部熄灭。设计成果应该包括硬件电路图及程序清单以及论文。 想求一份完整的设计报告~~~~~ 能有3种编程程序(控制方式)...闪烁是循环工作的意思~

最新问答

排水论文在哪发?
伊兰0518 2021-09-19

小区市外排水论文发哪个杂志可以呢?我需要发表一篇这方面的论文。

word转pdf,为什么不显示图片图片?
花花的老妈 2021-09-19

我想把论文从word格式转换成PDF格式,用的金山WPS,可转换完成之后,里面的流程图就不见了,空白~~这是为什么呢?谁能帮我解决一下!谢谢!

公众号与小程序有什么区别
汤糖躺烫湯 2021-09-19

公众号与小程序有什么区别

如何制作电子小报
dream959595 2021-09-19

镀铬什么意思
autumngold 2021-09-19

镀铬什么意思

中国电影艺术的思想
幸福顺延 2021-09-19

中国针灸大纲作者是谁?
王子麻麻 2021-09-19

热门问答

排水论文在哪发?
伊兰0518 2021-09-19

小区市外排水论文发哪个杂志可以呢?我需要发表一篇这方面的论文。

word转pdf,为什么不显示图片图片?
花花的老妈 2021-09-19

我想把论文从word格式转换成PDF格式,用的金山WPS,可转换完成之后,里面的流程图就不见了,空白~~这是为什么呢?谁能帮我解决一下!谢谢!

公众号与小程序有什么区别
汤糖躺烫湯 2021-09-19

公众号与小程序有什么区别

如何制作电子小报
dream959595 2021-09-19

镀铬什么意思
autumngold 2021-09-19

镀铬什么意思

中国电影艺术的思想
幸福顺延 2021-09-19

中国针灸大纲作者是谁?
王子麻麻 2021-09-19

Coptyright © www.lw85.com电脑版