单片机如何设计加法计算器 51单片机加法器原理?
51单片机加法器原理?
加法器是基于二进制逻辑关系设计的。假设计算a1 a2,和为C [1: 0],有以下两种关系:1.当A1和a2都为1时,进位c[1]=1,即逻辑与;
2.当A1和a2只有一个为1时,低阶c[0]=1,即逻辑异或;所以加法器的实现是c[1]=a1和a2,c[0]=a1异或a2。
单片机的简易计算器?
# inclultreg52.hgt//statement包含51个头文件。# inclultstdio.hgt//declares认为它包含输入和输出功能。
# inclusiventrins。HGT//声明包含位移函数。
#define uchar无符号char //宏定义
#define uint unsigned int //宏定义
#定义检查忙
Sbitrs = P3 5//LCD引脚定义
P3^6
P3^4
sbitwela = P2 7//数码管引脚定义
sbit dula=P2^6
Void DelayMs(int z)// 1ms延迟功能
{
int x,y
for (x=zxgt0x -)
for(y=110ygt0y -)
}
/* * * * * * * * * LED忙碌功能* * * * * * *
位LCD_Check_Busy()
{
#ifdef检查忙
P0= 0xFF
RS=0
RW=1
EN=0
_nop_()
EN=1
返回位(P0放大器0x80)
#否则
返回0
#endif
}
/* * * * * * * * * LED写命令功能* * * * * * * *
void write_com(uchar com)
{
While(LCD_Check_Busy()) //忙就等。
RS=0
RW=0
EN=1
P0= com
_nop_()
EN=0
}
/* * * * * * * * LED写数据功能* * * * * * * *
void write_dat(uchar dat)
{
While(LCD_Check_Busy()) //忙就等。
RS=1
RW=0
EN=1
P0= dat
_nop_()
EN=0
}
/* * * * * * * LED书写字符功能* * * * * * * *
void LCD_Write_Char(uchar x,uchar y,uchar dat)
{
如果(y == 0)
{
write_com(0x80 x)
}
其他
{
write_com(0xC0 x)
}
write_dat(日期)
}
/* * * * * *编写字符串函数* * * * * * * *
void Write_String(uchar x,uchar y,uchar *s)
{
while (*s)
{
LCD_Write_Char(x,y,*s)
s
x
}
}
/* * * * * * LED初始化功能* * * */
void LCD_Init()
{
RW=0
杜拉=0 //关闭数码管的显示。
Wela=0 //关闭数码管显示。
Write_com(0x38) /*显示模式设置*/
戴莱姆斯(5)
Write_com(0x06)/*显示光标移动设置*/
戴莱姆斯(5)
Write_com(0x0C) /*显示开启和光标设置*/
Write_com(0x01) /*显示清晰屏幕*/
}
/*键扫描函数,返回扫描键值*/
Uchar KeyScan() //键盘扫描函数,采用行列反转扫描。
{
无符号字符cord_h,cord_l//行列值中间变量
P3=0x0f //行线输出全为0。
Cord_h=P30x0f //读入列线值。
if(cord_h!=0x0f) //先检查按键是否按下。
{
DelayMs(10) //去反跳
if((P3amp0x0f)!=0x0f)
{
Cord_h=P30x0f //读入列线值。
P3=cord_h|0xf0 //输出前列线的值。
Cord_l=P30xf0 //读入行线值。
while((P3amp0xf0)!=0xf0)//等待释放并输出。
Return(cord_h cord_l)//键盘的最终组合码值。
}
}
Return(0xff) //返回值。
}
无符号char K:回归 1 break//0按相应的键显示相应的代码值。
案例0x ede CHO 3-@ . com r: r: r: r: r: r: r: r: r: r: r: return ;0 break//c
案例0x bb: r: r: r: return 0x ffbreak
}
}
主()
{
无符号字符数,I,符号
Unsigned char temp[16] //最大输入为16。
位优先标志
浮点a=0,b=0
无符号字符
LCD_Init() //初始化LCD屏幕。
DelayMs(10)// Delay用于稳定,可以删除。
Write_com(0x01) //清除屏幕
写入字符串(0,0,
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。