久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15929|回復: 50
打印 上一主題 下一主題
收起左側

牛人制作的單片機科學型計算器,功能太強大 大家一起欣賞

  [復制鏈接]
跳轉到指定樓層
樓主
以下是計算器功能演示視頻地址:
https://www.bilibili.com/video/B ... 3625234719827099345

制作出來的實物圖如下:


以下是部分單片機程序代碼:
完整代碼在附件中

#include "STC12C5A60S2.h"
#include "alg_caculate.h"
#include "UART.h"
#include "alg_linearlist.h"
#include "keyboard_input.h"
#include "lcd_12864.h"
#include "mode.h"
#include "solve_equation.h"
#include "function_pic.h"
#include "eeprom_rw.h"
#include "pwm.h"
#include "time.h"

#include <stdio.h>
#include <stdlib.h>

#define uchar unsigned char
#define uint unsigned int

uchar num0;                 //輸入的鍵值
int         count1;       //翻頁計數


void main()
{
        PWM_init();
        t0_init();
        t1_init();
        lcd_init();
        lcd_clear_pic();
        while(1)
        {
        
        
        mode_select();
        
        }


}

全部資料51hei下載地址:
計算器正式版Ver1.0.0.7z (545.05 KB, 下載次數: 345)

評分

參與人數 2黑幣 +80 收起 理由
大膽1 + 30 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏55 分享淘帖 頂7 踩
回復

使用道具 舉報

沙發
ID:163090 發表于 2020-4-3 17:48 | 只看該作者
計算器主控芯片為STC12C5A60S2,顯示器為12864液晶。額外的外設有EEPROM、DS1302、矩陣鍵盤,為科學計算器提供存儲、時鐘、輸入功能。 在等號被按下前,允許輸入完整的表達式。因此在軟件上需要做到語法識別、優先級順序、括號嵌套等功能。 計算器擁有普通計算(表達式與函數識別、計算)、計算結果存儲/回看、復數計算、矩陣運算、函數圖形、解方程、統計、最小二乘法求回歸直線、一階常微分方程、單位,進制轉換、定積分、求導等功能。 有節電模式,5分鐘不輸入自動關機,液晶屏亮度5級可調。
回復

使用道具 舉報

板凳
ID:163090 發表于 2020-4-3 17:48 | 只看該作者
計算器主控芯片為STC12C5A60S2,顯示器為12864液晶。額外的外設有EEPROM、DS1302、矩陣鍵盤,為科學計算器提供存儲、時鐘、輸入功能。
在等號被按下前,允許輸入完整的表達式。因此在軟件上需要做到語法識別、優先級順序、括號嵌套等功能。
計算器擁有普通計算(表達式與函數識別、計算)、計算結果存儲/回看、復數計算、矩陣運算、函數圖形、解方程、統計、最小二乘法求回歸直線、一階常微分方程、單位,進制轉換、定積分、求導等功能。
有節電模式,5分鐘不輸入自動關機,液晶屏亮度5級可調。
回復

使用道具 舉報

地板
ID:163090 發表于 2020-4-3 18:03 | 只看該作者
沒有電路圖,系統按鍵部分電路需要自己根據按鍵模塊程序來進行分析反推 硬件電路應該如何連接。矩陣按鍵有8行5列,一共是40個按鍵,按照程序的意思好像是電路圖如下圖所示:






以下是按鍵輸入部分電路程序:

#include "STC12C5A60S2.h"
#include <intrins.h>
#include "keyboard_device.h"
#include "lcd_12864.h"
#include "eeprom_rw.h"
#include "mode.h"
#include "pwm.h"
#define uchar unsigned char
#define uint unsigned int
       

uchar shift=0;//shift鍵
void keyboard_cursor_flash(void);

extern bit gb_flag;
extern uchar flash_count;
extern uchar count;
extern uchar hang;

extern uint time_out;

uchar code welcome_pic[]={
        /*--  調入了一幅圖像:boeing.bmp  --*/
        /*--  寬度x高度=128x64  --*/
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x07,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x7E,0x1F,0xC7,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0xFC,0x0F,0xE1,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x01,0xFC,0x07,0xE0,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x0F,0xE0,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF9,0x9F,0xE0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF9,0xFF,0xFF,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF9,0xFF,0xFF,0xBF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF9,0x1F,0xE0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x0F,0xF0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF8,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF8,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF8,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF8,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF8,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xF8,0x07,0xF0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xFC,0x07,0xE0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xFE,0x0F,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x03,0xFF,0xFF,0x80,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

/* ========= 延時20ms11.0592MHz ========= */
void delay_20m(void)                //消抖用延時
{
        unsigned char i, j, k;

        i = 1;
        j = 216;
        k = 35;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

/* ========= 延時2s11.0592MHz ========= */
void delay_2s(void)                        //退出刷屏用延時
{
        unsigned char i, j, k;

        i = 64;
        j = 9;
        k = 179;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

/* ========= 鍵盤掃描 ========= */
uchar keyboard(void)
{       
        uchar code keyboard_Scan[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};        //鍵盤掃描庫
                                                                                                //11111110,11111101,11111011,11110111,11101111,11011111,10111111,01111111
        uchar i, j, pc, flag = 0;
        uchar XScan=0;
        uchar in = 0;
        uchar test;
        while(in == 0)
        {
#ifdef KEY_X_IS_HIGH
                KEY_X &= 0x07;                        //清空高5位         0000 0111
                XScan = 0x80;                        //                         1000 0000
        //        XScan = 0x08;
#endif
//        #ifdef KEY_X_IS_LOW
//                        KEY_X &= 0xe0;                        //清空低5位         1110 0000
//                        XScan = 0x01;                        //                         0000 0001
//        #endif
                for(i=0;i<5;i++)
                {
                        KEY_X &=0x07;

                        test = XScan;
                        test = ~test;

                        KEY_X = test & 0xf8 ;
                        KEY_X = KEY_X | test;           //KEY_X接高八位

                        KEY_Y = 0xff;                                //置高
                        if(0xff != (pc = KEY_Y))        //假如說有按鍵按下
                        {
                                if(0xff != (pc = KEY_Y))        //假如說有按鍵按下
                                {
                                        delay_20m();
                                        for(j=0;j<8;j++)
                                        {                                                        //將掃描值與掃描按鍵值比較
                                                if( pc == keyboard_Scan[j] )
                                                {
                                                        in = j * 5 + i +1;
                                                        flag = 1;
                                                }
       
                                                if(flag == 1)
                                                {
                                                        while( KEY_Y == keyboard_Scan[j] );                //松手檢測
                                                        delay_20m();
                                                        break;
                                                }
                                               
                                        }
                                }
                                if(flag == 1)
                                        break;
                        }
                        XScan >>= 1;                                //左移一位
                }
               
                keyboard_cursor_flash();
               
        }
        time_out = 0;                                //清空計時
        return in;
}

uchar keyboard_wake(void)
{       
        uchar i, pc, flag = 0;
        uchar XScan=0;
        uchar in = 0;
        uchar test;
       
#ifdef KEY_X_IS_HIGH
                KEY_X &= 0x07;                        //清空高5位         0000 0111
                XScan = 0x80;                        //                         1000 0000
        //        XScan = 0x08;
#endif
//        #ifdef KEY_X_IS_LOW
//                        KEY_X &= 0xe0;                        //清空低5位         1110 0000
//                        XScan = 0x01;                        //                         0000 0001
//        #endif
                for(i=0;i<5;i++)
                {
                        KEY_X &=0x07;

                        test = XScan;
                        test = ~test;

                        KEY_X = test & 0xf8 ;
                        KEY_X = KEY_X | test;           //KEY_X接高八位

                        KEY_Y = 0xff;                                //置高
                        if(0xff != (pc = KEY_Y))        //假如說有按鍵按下
                        {
                                return 1;
                        }
                        XScan >>= 1;                                //左移一位
                }
                return 0;               
}

/* ========= 光標閃爍 ========= */
void keyboard_cursor_flash(void)
{

        if(flash_count>=10)
                {
                        if(gb_flag==0)
                        {
                                lcd_yline(8*(count-1),16*hang+0,16*hang+15,1);
                                gb_flag=1;
                                }
                        else
                        {       
                                lcd_yline(8*(count-1),16*hang+0,16*hang+15,0);
                                gb_flag=0;
                                }
                        flash_count=0;
                }
        //鍵盤空閑監控
        if(byte_read(ADD_TIMEOUT, 0)<time_out/5600)
        {
                time_out = 0;
                mode_sleep();
        }
}

uchar keyboard_output()
{
        uchar result = keyboard();
        uchar num0=0xff;               
        switch( result )
        {
                case 1:
                        shift=~shift;

                        num0 = 0 ;
                        break;
                case 4:
                        //上翻
                        num0 = 3 ;       
                        break;
                case 6:
                        num0 = '(';
                        break;
                case 7:
                        num0 = ')';
                        break;
                case 8:
                        //地址左移一位
                        num0 = 5 ;
                        break;
                case 9:
                        //下翻
                        num0 = 6 ;
                        break;
                case 10:
                        //地址右移一位
                        num0 = 7 ;
                        break;
                case 17:
                //hyp?
                        num0 = 14 ;
                        break;
                //數字鍵
                case 36:
                        num0='0';
                        break;

                case 31:
                        //lcd_write_str("1");
                        num0 = '1';
                        break;
                case 32:
                        //lcd_write_str("2");
                        num0 = '2';
                        break;
                case 33:
                        //lcd_write_str("3");
                        num0 = '3';
                        break;
                       
                case 26:
                        num0='4';
                        break;
                case 27:
                        num0='5';
                        break;
                case 28:
                        num0='6';
                        break;
                case 21:
                        num0='7';
                        break;
                case 22:
                        num0='8';
                        break;
                case 23:
                        num0='9';
                        break;
                case 37:
                        num0='.';
                        break;
                //+-x/=
                case 29:
                        num0='*';
                        break;
                case 30:
                        num0='/';
                        break;
                case 34:
                        num0='+';
                        break;
                case 35:
                        num0='-';
                        break;
                case 40:
                        num0='=';
                //等于?
                        break;
               
                case 24:
                //刪掉上一位,指針指向上一位?
                        num0 = 18 ;
                        break;
                case 25:
                //刪掉整個字符串,指針指向該行起點?
                        num0 = 19 ;
                        break;       
                case 38:
                //ans?
                        num0 = 20 ;       
                        break;
                case 39:
                //copy?
                        num0 = 21 ;
                        break;
        }

        if(shift==0)
        {               
                switch(result)
                {
                        case 2:
                                //返回菜單?
                                num0 = 1;
                                break;
                        case 3:
                                num0 = 2;
                                break;
                        case 5:
                                //清屏,打開背光
                                num0 = 4;
                                break;
                        case 11:
                                //lcd_write_str("abs(");
                                num0 = 8;  //絕對值
                                break;
                        case 12:
                                //lcd_write_str("^2");
                                num0 = 9;  //平方
                                break;
                        case 13:
                                //lcd_write_str("^(");
                                num0 = '^';  //方
                                break;       
                        case 14:
                                //lcd_write_str("^(-1)");
                                num0 = 11;  //倒數
                                break;
                        case 15:
                                //lcd_write_str("exp(");
                                num0 = 12;
                                break;
                        case 16:
                                //lcd_write_str("10^(");
                                num0 = 13;
                                break;
                        case 18:                               
                                //lcd_write_str("sin(");
                                num0 = 15;
                                break;
                        case 19:
                                //lcd_write_str("cos(");
                                num0 = 16;
                                break;
                        case 20:
                                //lcd_write_str("tan(");
                                num0 = 17;
                                break;
       
                       
//                case 31:
//                        num0='1';
//                        break;
//                case 32:
//                        num0='2';
//                        break;
//                case 33:
//                        num0='3';
//                        break;                       
                       
                       
                }
               
        }
        else
        {
                switch(result)
                {
                        case 2:
                                //返回設置?
                                num0 = 23;
                                break;
                        case 3:
                                num0 = 'e';
                                break;
                        case 5:
                                //清屏,關閉背光
                                //lcd_clear();
                                //關閉背光?
                                num0 = 24;
                                break;
                        case 11:
                                num0 = 'i';
                                break;
                        case 12:
                                //lcd_write_str("^(1/2)");
                                num0 = 25;
                                break;
                        case 13:
                                //lcd_write_str("^(1/");
                                num0 = 26;
                                break;       
                        case 14:
                                //lcd_write_str("!");
                                num0 = '!';
                                break;
                        case 15:
                                //lcd_write_str("ln(");
                                num0 = 27;
                                break;
                        case 16:
                                //lcd_write_str("log(");
                                num0 = 28;
                                break;
                        case 18:
                                //lcd_write_str("asin(");
                                num0 = 29;
                                break;
                        case 19:
                                //lcd_write_str("acos(");
                                num0 = 30;
                                break;
                        case 20:
                                //lcd_write_str("atan(");
                                num0 = 31;
                                break;
                        case 31:
                                //lcd_write_str("x");
                                num0 = 'x';
                                break;
                        case 32:
                                //lcd_write_str("y");
                                num0 = 'y';
                                break;
                        case 33:
                                //lcd_write_str("z");
                                num0 = 'z';
                                break;
                        case 37:
                                num0 = 32;
                                break;
                }
        }
        if(result != 1)
                shift=0;
               
        if(shift == 0)
                bl_bright_change(byte_read(ADD_BRIGHT, 0));        //還原亮度設定
        else
                bl_bright_change(byte_read(ADD_SHIFTSIGN, 0));        //shift亮度設定       

        /////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////
        if(num0==24)                              //on和off
        {
                TR0=0;
                lcd_clear();
                lcd_write_pic(0, 0, welcome_pic, 128, 64);                /*波音會徽*/

                lcd_set_pos(1, 4);
                lcd_write_str("計算器");                /*計算器*/
       
                lcd_set_pos(2, 4);
                lcd_write_str("開心波音");                /*開心波音*/
       
                delay_2s();
                lcd_clear();
                lcd_clear_pic();                /*清屏*/
                bl_bright_change(0);        //關燈
                while(num0!=4)
                        num0 = keyboard_output();            
                        bl_bright_change(byte_read(ADD_BRIGHT, 0));        //還原亮度設定
               
                reset();                        //復位
        }
        /////////////////////////////////////////////////////////////////////////
        else if(num0==23)                              //set
        {
                byte_write(ADD_PROG_STATUS, SET ,0);                //寫入設置
                reset();                        //復位
        }
                               
        ////////////////////////////////////////////////////////////////////////
        else if(num0==1)                              //mode
        {
                byte_write(ADD_PROG_STATUS, MODE ,0);                //寫入菜單
                reset();                        //復位
        }
        /////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////
        return num0;
}

void about()
{
                TR0=0;
                lcd_clear();
                lcd_write_pic(0, 0, welcome_pic, 128, 64);                /*波音會徽*/

                lcd_set_pos(1, 4);
                lcd_write_str("計算器");                /*計算器*/
       
                lcd_set_pos(2, 4);
                lcd_write_str("開心波音");                /*開心波音*/
                while(keyboard_wake());
}


bandicam 2020-04-03 18-02-18-834.jpg (214.95 KB, 下載次數: 195)

bandicam 2020-04-03 18-02-18-834.jpg

評分

參與人數 1黑幣 +5 收起 理由
rsx9583 + 5 很給力!

查看全部評分

回復

使用道具 舉報

5#
ID:352458 發表于 2020-4-3 20:29 | 只看該作者
厲害了,這些不僅僅是一個傳統意義上的科學計算器了。他是專業級別的計算器了。同學有一塊專業級別可以解自控方程的要120大洋的。
回復

使用道具 舉報

6#
ID:163090 發表于 2020-4-5 17:06 來自觸屏版 | 只看該作者
liu5678 發表于 2020-4-3 20:29
厲害了,這些不僅僅是一個傳統意義上的科學計算器了。他是專業級別的計算器了。同學有一塊專業級別可以解自 ...

哥們有沒興趣做一個給大家分享一下呢
回復

使用道具 舉報

7#
ID:91165 發表于 2020-4-7 08:06 | 只看該作者
51也做得這么強大。樓主厲害
回復

使用道具 舉報

8#
ID:281879 發表于 2020-4-7 13:04 | 只看該作者
太牛了 學習到了
回復

使用道具 舉報

9#
ID:458705 發表于 2020-4-8 15:35 | 只看該作者
一個字,牛!
兩個字,特牛!
三個字,犇!
回復

使用道具 舉報

10#
ID:87631 發表于 2020-4-12 14:16 | 只看該作者
這人真的是太牛了
回復

使用道具 舉報

11#
ID:704585 發表于 2020-4-14 14:29 | 只看該作者
感謝樓主分享,學習一下。
回復

使用道具 舉報

12#
ID:413383 發表于 2020-4-14 22:57 | 只看該作者
這人真的是太牛了,感覺太難了
回復

使用道具 舉報

13#
ID:17204 發表于 2020-4-15 15:47 | 只看該作者
好難,只有吃透51才能做出來 ,向大佬看齊,努力學習中。。。
回復

使用道具 舉報

14#
ID:701252 發表于 2020-10-17 09:35 | 只看該作者
啥也不說了!謝謝樓主分享!
回復

使用道具 舉報

15#
ID:88256 發表于 2020-10-17 10:10 | 只看該作者
那個按鍵帽有地方買的嗎?
回復

使用道具 舉報

16#
ID:557411 發表于 2021-3-20 16:58 | 只看該作者
這個做得太強大了,樓主厲害
回復

使用道具 舉報

17#
ID:894410 發表于 2021-3-20 19:05 | 只看該作者
注意到了鍵帽。。哈哈
回復

使用道具 舉報

18#
ID:59830 發表于 2021-3-20 19:09 | 只看該作者
非常不錯, 多級LCD顯示菜單.
程序結構清晰. 值得大家學習. 謝謝!
回復

使用道具 舉報

19#
ID:358564 發表于 2021-3-20 19:29 | 只看該作者
感謝樓主分享,學習一下。
回復

使用道具 舉報

20#
ID:891775 發表于 2021-5-3 11:34 來自觸屏版 | 只看該作者
想問一下,判斷運算符優先級的代碼應該怎么寫呀
回復

使用道具 舉報

21#
ID:838718 發表于 2021-7-21 20:11 | 只看該作者
膜拜一下,有機會挑戰一下自己也搞一個。
回復

使用道具 舉報

22#
ID:507641 發表于 2021-7-31 18:04 | 只看該作者
很好的學習分享實例51.對于按鍵的處理如果優化才是好產品
回復

使用道具 舉報

23#
ID:507641 發表于 2021-7-31 18:17 | 只看該作者
功能強大。只是DS1302走時誤差大了些。
回復

使用道具 舉報

24#
ID:137590 發表于 2021-8-10 17:33 | 只看該作者
。因此在軟件上需要做到語法識別、優先級順序、括號嵌套等功能。 計算器擁有普通計算(表達式與函數識別、計算)、計算結果存儲/回看、復數計算、矩陣運算、函數圖形、解方程、統計、最小二乘法求回歸直線、一階常微分方程、單位,進制轉換、定積分、求導等功能。 有節電模式,5分鐘不輸入自動關機,液晶屏亮度5級可調。
回復

使用道具 舉報

25#
ID:137590 發表于 2021-8-10 17:34 | 只看該作者
一個字,牛!
兩個字,特牛!
三個字,犇!
回復

使用道具 舉報

26#
ID:137590 發表于 2021-10-9 21:12 | 只看該作者
好難,只有吃透51才能做出來 ,向大佬看齊,努力學習中。。。
回復

使用道具 舉報

27#
ID:970860 發表于 2021-10-10 06:56 來自觸屏版 | 只看該作者
都是大神
回復

使用道具 舉報

28#
ID:648615 發表于 2021-10-10 23:13 | 只看該作者
真提我女朋友歷害,很有用,謝謝樓主
回復

使用道具 舉報

29#
ID:62246 發表于 2021-10-11 07:48 | 只看該作者
厲害,厲害,大佬級人物。
回復

使用道具 舉報

30#
ID:86450 發表于 2021-10-11 08:13 | 只看該作者
按鍵帽,在哪里買的?
回復

使用道具 舉報

31#
ID:304725 發表于 2021-10-24 23:16 | 只看該作者
有原理圖嗎
回復

使用道具 舉報

32#
ID:974131 發表于 2021-11-6 17:55 | 只看該作者
論壇有你更精彩,謝謝!
回復

使用道具 舉報

33#
ID:1003827 發表于 2022-1-29 20:33 | 只看該作者
大佬就是大牛啊
回復

使用道具 舉報

34#
ID:430492 發表于 2022-1-30 10:17 | 只看該作者
這個設計真是太牛掰了!動手能力也很牛掰!
回復

使用道具 舉報

35#
ID:507641 發表于 2022-3-18 10:40 | 只看該作者
單片機菜鳥丿 發表于 2020-4-5 17:06
哥們有沒興趣做一個給大家分享一下呢

大伽分享吧
回復

使用道具 舉報

36#
ID:22218 發表于 2022-3-19 04:27 | 只看該作者
2732803160 發表于 2021-5-3 11:34
想問一下,判斷運算符優先級的代碼應該怎么寫呀

這個我想可以按C語言內置的功能
回復

使用道具 舉報

37#
ID:195496 發表于 2022-5-8 07:34 | 只看該作者
真是大神級的人物
回復

使用道具 舉報

38#
ID:1042173 發表于 2022-9-2 00:36 | 只看該作者
樓主是乍作出實物來的???有電路圖嗎??光有程序也不行呀——起好多彎路的——
回復

使用道具 舉報

39#
ID:74784 發表于 2022-9-3 13:34 | 只看該作者
曾經見到過高人用51單片機
做的彩色屏俄羅斯方塊游戲。
回復

使用道具 舉報

40#
ID:961114 發表于 2022-9-15 10:26 | 只看該作者
大神辛苦了,幫用  屠龍刀三-STC32G12K128核心功能實驗板去改 或 開天斧三-STC8H8K64U核心功能實驗板去改 !  STC將提供贊助
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 夜夜草视频| 国产精品自在线 | 欧美中文字幕一区二区三区亚洲 | 亚洲第一免费播放区 | 一级做a爰片性色毛片视频停止 | 日韩视频在线免费观看 | 亚洲欧美日韩在线 | 成人免费视频网站在线看 | 亚洲在线日韩 | 精品国产久| 欧产日产国产精品v | 亚洲一区在线日韩在线深爱 | 国产免费一二三区 | 成人在线观看免费视频 | www.色53色.com| jizz在线看片 | 亚洲国产精品福利 | 91麻豆精品一区二区三区 | 午夜在线精品 | 日本黄色大片免费 | 99久视频 | 欧美理论片在线 | 亚洲精品18 | 精品一区二区三区在线观看国产 | 日韩精品一区二区三区在线播放 | 69福利影院 | 欧美另类视频在线 | 国产福利一区二区 | 久久久无码精品亚洲日韩按摩 | 天天操天天天干 | 男女爱爱福利视频 | 久久人体 | 粉嫩高清一区二区三区 | 99热国产精品 | 免费在线看黄 | 91精品国产91久久久久久吃药 | 久久久精品天堂 | 欧美日韩久| 久久午夜精品 | 夜夜夜久久 | 999精品在线 |