基于51单片机的简易计算器,用LCD1602显示

基于51单片机的简易计算器

经历了一番学习,成功做出了一个简易的计算器,并且在程序开头加了一个小密码。我用的单片机是STC89C52,单片机类型不同,电路图也是不一样的。

一.设计思路

1.1LCD1602的电路图

基于51单片机的简易计算器,用LCD1602显示_第1张图片
该芯片引脚,

sbit RS = P3^5; //液晶引脚定义
sbit RW = P3^6;
sbit EN = P3^4;
#

1.2主函数思路

主函数的思路图:
基于51单片机的简易计算器,用LCD1602显示_第2张图片

1.3主函数程序

main()
{
   
 uchar i,num,sign,s;
 uchar temp[16];
 bit firstflag;
 float a=0,b=0;
 Lcd_Init();
 DelayMs(10);
 LcdWrite_cmd(0x01);
 LcdWrite_string(5,0,"WELCOM !");
 LcdWrite_string(3,1,"LI HUA HUI");
 for(s=0;s<25;s++)
 DelayMs(200);
 LcdWrite_cmd(0x01);
 mima();
 DelayMs(200);
 LcdWrite_string(0,1,"                ");//清除该行
  LcdWrite_string(0,1,"Right Open!>>>>");//密码正确显示的信息
 for(s=0;s<25;s++)
 DelayMs(200);
 LcdWrite_cmd(0x01);
 while(1)
 {
   
 num=KeyPro();
 if(num!=0xff)
 {
   
  if(i==0)
  LcdWrite_cmd(0x01);
   if(('+'==num) || ('-'==num) || ('*'==num) || ('/'==num) || ('='==num) || (i==16))
    {
   
    i=0; 
    LcdWrite_char(0,1, num);//应该输入字符,而不是字符串
    if(firstflag==0)
    {
   
     sscanf(temp,"%f",&a);
     firstflag = 1;
    }
    else
    {
   
     sscanf(temp,"%f",&b

你可能感兴趣的:(计算器,单片机)