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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 18366|回復(fù): 43
收起左側(cè)

基于stm32簡(jiǎn)易計(jì)算器制作(lcd1602顯示)源程序

  [復(fù)制鏈接]
ID:687531 發(fā)表于 2020-11-17 21:43 | 顯示全部樓層 |閱讀模式
這是我前幾天用stm32f03c8t6單片機(jī)做的一個(gè)簡(jiǎn)易計(jì)算器,用4×4矩陣鍵盤(pán)輸入,LCD1602顯示。下面是對(duì)我計(jì)算器的介紹,附件中還可以下載源程序代碼碼。我的簡(jiǎn)易計(jì)算器是搭建在面包板上面的,下面這是實(shí)物圖和仿真圖。
圖片1.png        圖片2.png



該計(jì)算器可以實(shí)現(xiàn)連續(xù)加減運(yùn)算圖:


    圖片3.png
較大數(shù)字或者較小數(shù)字可以用科學(xué)計(jì)數(shù)法顯示
    圖片4.png     圖片5.png

當(dāng)用除法運(yùn)算時(shí),能夠保留三位小數(shù)字
    圖片6.png

另外,在運(yùn)算時(shí)還可以通過(guò)串口觀察數(shù)據(jù)變化

下面是部分源碼:
#include "stm32f10x.h"
#include "delay.h"
#include "keyscan.h"
#include "LCD1602.h"
#include "usart.h"
#include "math.h"
u8 num,flag;
double r,o;
long long a,b,x,y,z,sum,k;
int e,f,g,h,i,t,len,w,l;
int s,m,w,j,q,d,n,c=0;

int main()
{
        LCD_init();
        uart_init(9600);

        while(1)
        {
          num=keyscan();
                a=num;
                                if(a>=0&&a<=9&&s!=2&&flag!=0)
                                {
                                        if(a!=0||n!=0)
                                        {
                                                LCD_write_data((u8)a+0x30);
                                                if(n==0)
                                                {
                                                        b=a;
                                                }
                                                else
                                                {
                                                        b=sum*10;
                                                        sum=a;
                                                }
                                                sum=sum+b;
///////////////////////////////                        
            if(q==0&&j==0)
            {                                 
                                                                x=sum;
                                                                printf("x=%lld ",x);
                                                                d=1;
                                                                m=0;
            }

                       if(q==1&&j==1)
                                         {
                                                                x=-sum;
                                                                printf("x=%lld ",x);
                                                                d=1;
                                                                m=0;
            }

/////////////////////////////////

            if(q==1&&(j==2||j==0))
            {                    
              y=sum;
                                                        printf("y=%lld ",y);
                                                        d=2;
            }


/////////////////////////////////
            n++;
                                                w++;
                                    delay_ms(100);
                                  }
                         }
                        if(a==10&n!=0&&m!=1&&flag!=0)//+號(hào)
                   {
                                  if(c>=1)
                                        {
                                        q=1;
                                        j=0;
                                        x=z;

                                        }
                      //LCD_write_data('+');
                                        LCD_write_data(0x2b);
                                        printf(" + ");
                                        j=0;
                                        n=0;
                                        q=1;
                                        flag=1;
                                        b=0;
                                        sum=0;
                                  c++;
                                  w++;

                                        delay_ms(100);
                         }
                        if(a==11&&m!=1&&flag!=0)
                        {
                                //LCD_write_data('-');
                          LCD_write_data(0x2d);//''號(hào)
                                printf(" - ");
                                if(c>=1)
                                        {
                                        q=1;
                                        j=0;
                                        x=z;

                                        }

                          if(d==0)
                                {
                                j=1;
                                }
                                if(d==1)
                                {
                                j=2;
                                }

                    n=0;
        q=1;
        flag=2;
                          b=0;
                          sum=0;
                          m=-m;
                          w++;
                                c++;
                                delay_ms(100);
                 }

                if(a==12&n!=0&&m!=1&&flag!=0)
                {
                          LCD_write_data('*');//×號(hào)
                                //LCD_write_data(0x2a);//×號(hào)
                          if(c>=1)
                                        {
                                        q=1;
                                        j=0;
                                        x=z;

                                        }
                                printf(" * ");
                          j=0;
        n=0;
        q=1;
        flag=3;
                          b=0;
                          sum=0;
                          m=-m;
                          w++;
                                c++;
                                delay_ms(100);
                }
                if(a==13&n!=0&&m!=1&&flag!=0)
                {
                        // LCD_write_data('');//除號(hào)
                                LCD_write_data(0xfd);//÷號(hào)
                          if(c>=1)
                                        {
                                        q=1;
                                        j=0;
                                        x=z;

                                        }
                                printf("/");
NSV`S3@9{)5TFQFX2W22BPV.png
有需要的小伙伴可以到附件中去下載全部代碼。
由于本人儲(chǔ)備知識(shí)量較少,基礎(chǔ)較為薄弱,計(jì)算器中使用變量較多,代碼較為繁瑣,感興趣的小伙伴們可以在評(píng)論區(qū)相互探討學(xué)習(xí),若計(jì)算器中還存在問(wèn)題,也希望大家可以指正批評(píng)。
最后,感謝大家的支持!!!

全部資料51hei下載地址:
stm32計(jì)算器.7z (197.07 KB, 下載次數(shù): 712)

評(píng)分

參與人數(shù) 2黑幣 +62 收起 理由
Morpho + 12 贊一個(gè)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:328014 發(fā)表于 2020-11-18 05:11 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:863205 發(fā)表于 2020-12-19 11:17 | 顯示全部樓層
謝謝謝謝,太棒了
回復(fù)

使用道具 舉報(bào)

ID:863205 發(fā)表于 2020-12-19 11:42 | 顯示全部樓層
請(qǐng)問(wèn)一下,電路圖中這個(gè)PR1是什么啊,求賜教
回復(fù)

使用道具 舉報(bào)

ID:863205 發(fā)表于 2020-12-19 15:08 | 顯示全部樓層
您好,我想向您請(qǐng)教一下,我按照您的這個(gè)電路圖連接的實(shí)物,但是沒(méi)有連那個(gè)排阻,現(xiàn)在lcd背光亮,但是按動(dòng)鍵盤(pán)沒(méi)有顯示數(shù)字,能請(qǐng)您給我點(diǎn)建議嗎,求賜教
回復(fù)

使用道具 舉報(bào)

ID:687531 發(fā)表于 2020-12-23 21:04 | 顯示全部樓層
9876k 發(fā)表于 2020-12-19 11:42
請(qǐng)問(wèn)一下,電路圖中這個(gè)PR1是什么啊,求賜教

電路圖中的PR1是排阻,接實(shí)物圖時(shí)可以不要,最好不要用proteus仿真stm32,目前版本效果一點(diǎn)都不好,我的8.9版本勉強(qiáng)仿真出來(lái)LCD1602,但是它現(xiàn)實(shí)的延時(shí)有問(wèn)題,我這是方便大家看接線圖才在上面畫(huà)的
回復(fù)

使用道具 舉報(bào)

ID:687531 發(fā)表于 2020-12-23 21:09 | 顯示全部樓層
9876k 發(fā)表于 2020-12-19 15:08
您好,我想向您請(qǐng)教一下,我按照您的這個(gè)電路圖連接的實(shí)物,但是沒(méi)有連那個(gè)排阻,現(xiàn)在lcd背光亮,但是按動(dòng) ...

仿真圖上面的VEE(實(shí)物L(fēng)CD1602那里是V00),我的這里是為了方便就直接接地了,最好接一個(gè)電位器,用來(lái)調(diào)節(jié)顯示對(duì)比度
回復(fù)

使用道具 舉報(bào)

ID:343451 發(fā)表于 2020-12-31 08:24 | 顯示全部樓層
9876k 發(fā)表于 2020-12-19 11:42
請(qǐng)問(wèn)一下,電路圖中這個(gè)PR1是什么啊,求賜教

排阻..........
回復(fù)

使用道具 舉報(bào)

ID:86450 發(fā)表于 2020-12-31 08:52 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:713091 發(fā)表于 2020-12-31 12:22 | 顯示全部樓層
徐軍寶 發(fā)表于 2020-12-23 21:04
電路圖中的PR1是排阻,接實(shí)物圖時(shí)可以不要,最好不要用proteus仿真stm32,目前版本效果一點(diǎn)都不好,我的8 ...

嗯  有道理
回復(fù)

使用道具 舉報(bào)

ID:870196 發(fā)表于 2021-1-2 13:49 | 顯示全部樓層
你好,想問(wèn)一下按照你的電路圖連接的實(shí)物,LCD1602那里也接了電位器,代碼燒錄進(jìn)去之后,為什么按鍵沒(méi)有反應(yīng),怎么回事呢,能給點(diǎn)建議嗎?
回復(fù)

使用道具 舉報(bào)

ID:103696 發(fā)表于 2021-1-3 12:12 | 顯示全部樓層
既然用LCD1602就加個(gè)I2C轉(zhuǎn)并口模塊吧,才2到3塊錢(qián),反正LCD1602就那么慢,I2C的速度就能滿(mǎn)足了,就2個(gè)IO省了一大堆引腳省得布線麻煩而且調(diào)對(duì)比度供電引腳都集成好了!
回復(fù)

使用道具 舉報(bào)

ID:872516 發(fā)表于 2021-1-3 12:32 | 顯示全部樓層
我想學(xué)習(xí)單片機(jī)
回復(fù)

使用道具 舉報(bào)

ID:907272 發(fā)表于 2021-5-15 01:36 來(lái)自手機(jī) | 顯示全部樓層
我的LCD不顯示呢,是哪里有問(wèn)題嗎,應(yīng)該不是電位器的問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:865814 發(fā)表于 2021-6-7 09:30 | 顯示全部樓層
這個(gè)版塊的ADC有沒(méi)有更簡(jiǎn)單的寫(xiě)法
回復(fù)

使用道具 舉報(bào)

ID:936641 發(fā)表于 2021-6-13 20:05 | 顯示全部樓層
ghoo 發(fā)表于 2021-5-15 01:36
我的LCD不顯示呢,是哪里有問(wèn)題嗎,應(yīng)該不是電位器的問(wèn)題

大哥你的這個(gè)問(wèn)題解決了嗎 我的也是這個(gè)問(wèn)題,實(shí)在不知道原因是啥
回復(fù)

使用道具 舉報(bào)

ID:937357 發(fā)表于 2021-6-14 12:03 | 顯示全部樓層
個(gè)人建議家底不厚不要入手51單片機(jī),看起來(lái)是一片金山未開(kāi)化,你得有一個(gè)團(tuán)隊(duì),當(dāng)技術(shù) 成熟后必須組件生產(chǎn)線,沒(méi)個(gè)三五十五萬(wàn)  你只能花閑錢(qián)做愛(ài)好而已。當(dāng)然了,有夢(mèng)想是好事,當(dāng)你的實(shí)體樣品機(jī)開(kāi)始出售后  估計(jì)半年就一大堆山寨機(jī)開(kāi)始競(jìng)爭(zhēng)了。新科技的 競(jìng)爭(zhēng)及其殘忍
回復(fù)

使用道具 舉報(bào)

ID:855933 發(fā)表于 2021-6-14 23:34 | 顯示全部樓層
LCD1602的線不用接完的嗎?
回復(fù)

使用道具 舉報(bào)

ID:939131 發(fā)表于 2021-6-17 10:23 來(lái)自手機(jī) | 顯示全部樓層
想問(wèn)問(wèn) 為啥我連接實(shí)物后lcd亮了缺沒(méi)有內(nèi)容,可能會(huì)是什么地方的問(wèn)題?
回復(fù)

使用道具 舉報(bào)

ID:945549 發(fā)表于 2021-6-29 10:35 | 顯示全部樓層
南瓜小公主? 發(fā)表于 2021-6-17 10:23
想問(wèn)問(wèn) 為啥我連接實(shí)物后lcd亮了缺沒(méi)有內(nèi)容,可能會(huì)是什么地方的問(wèn)題?

一樣,問(wèn)題解決了嗎?
回復(fù)

使用道具 舉報(bào)

ID:770265 發(fā)表于 2021-7-7 14:52 | 顯示全部樓層
博主,我制作出來(lái) LCD顯示屏不顯示數(shù)字,應(yīng)該如何排查硬件錯(cuò)誤呢?
回復(fù)

使用道具 舉報(bào)

ID:978697 發(fā)表于 2021-11-6 17:09 | 顯示全部樓層
9876k 發(fā)表于 2020-12-19 11:42
請(qǐng)問(wèn)一下,電路圖中這個(gè)PR1是什么啊,求賜教

就是一個(gè)排阻
回復(fù)

使用道具 舉報(bào)

ID:991474 發(fā)表于 2021-12-12 23:53 | 顯示全部樓層
求教,正常顯示八位,開(kāi)機(jī)顯示0 可以進(jìn)行加減乘除,除法可以自動(dòng)舍去小數(shù),超出顯示錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

ID:110875 發(fā)表于 2021-12-13 19:31 | 顯示全部樓層
不錯(cuò),不過(guò)最后一張照片有問(wèn)題吧,98/6=16.3333333333,而不是16.033,區(qū)別大了!
回復(fù)

使用道具 舉報(bào)

ID:984159 發(fā)表于 2021-12-15 17:15 | 顯示全部樓層
liang118038 發(fā)表于 2021-1-3 12:12
既然用LCD1602就加個(gè)I2C轉(zhuǎn)并口模塊吧,才2到3塊錢(qián),反正LCD1602就那么慢,I2C的速度就能滿(mǎn)足了,就2個(gè)IO省 ...

I2C轉(zhuǎn)并口模塊是什么
回復(fù)

使用道具 舉報(bào)

ID:984159 發(fā)表于 2021-12-15 17:17 | 顯示全部樓層
liang118038 發(fā)表于 2021-1-3 12:12
既然用LCD1602就加個(gè)I2C轉(zhuǎn)并口模塊吧,才2到3塊錢(qián),反正LCD1602就那么慢,I2C的速度就能滿(mǎn)足了,就2個(gè)IO省 ...

我在某一個(gè)寶上搜I2C轉(zhuǎn)并口,要好幾十。。。
回復(fù)

使用道具 舉報(bào)

ID:997442 發(fā)表于 2021-12-28 10:54 | 顯示全部樓層
用點(diǎn)整能不能實(shí)現(xiàn)啊
回復(fù)

使用道具 舉報(bào)

ID:995076 發(fā)表于 2022-3-2 08:26 | 顯示全部樓層
這個(gè)里邊沒(méi)有仿真吧
回復(fù)

使用道具 舉報(bào)

ID:1002916 發(fā)表于 2022-3-15 17:05 | 顯示全部樓層
51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:687531 發(fā)表于 2022-3-19 19:21 | 顯示全部樓層
qwssd 發(fā)表于 2022-3-2 08:26
這個(gè)里邊沒(méi)有仿真吧

沒(méi)有仿真
回復(fù)

使用道具 舉報(bào)

ID:1023741 發(fā)表于 2022-5-4 14:50 | 顯示全部樓層
謝謝分享,幫助我解決了電路連接難題
回復(fù)

使用道具 舉報(bào)

ID:1023741 發(fā)表于 2022-5-6 14:56 | 顯示全部樓層
本帖最后由 w921913520 于 2022-5-6 22:17 編輯

樓主的代碼可以用于STM32F103RB的芯片不
回復(fù)

使用道具 舉報(bào)

ID:1026050 發(fā)表于 2022-5-12 23:33 | 顯示全部樓層
想問(wèn)一下,LCD有亮但是按鍵盤(pán)卻沒(méi)有反應(yīng),而且蜂鳴器一直在響該怎么解決?
回復(fù)

使用道具 舉報(bào)

ID:262 發(fā)表于 2022-5-13 16:40 | 顯示全部樓層
wutiaowu 發(fā)表于 2022-5-12 23:33
想問(wèn)一下,LCD有亮但是按鍵盤(pán)卻沒(méi)有反應(yīng),而且蜂鳴器一直在響該怎么解決?

LCD有亮只能證明 背光的2個(gè)引腳沒(méi)有錯(cuò),有可能其他的數(shù)據(jù)和控制io全部都是錯(cuò)誤的接法,仔細(xì)檢查一下電路
回復(fù)

使用道具 舉報(bào)

ID:1004455 發(fā)表于 2022-5-16 18:54 | 顯示全部樓層
LCD不顯示加個(gè)RP電阻調(diào)節(jié)就行了
回復(fù)

使用道具 舉報(bào)

ID:1029251 發(fā)表于 2022-5-24 14:45 | 顯示全部樓層
wutiaowu 發(fā)表于 2022-5-12 23:33
想問(wèn)一下,LCD有亮但是按鍵盤(pán)卻沒(méi)有反應(yīng),而且蜂鳴器一直在響該怎么解決?

檢查一下IO口是否對(duì)應(yīng)
回復(fù)

使用道具 舉報(bào)

ID:1037718 發(fā)表于 2022-6-30 11:07 | 顯示全部樓層
太棒了,設(shè)計(jì)就做這個(gè)了
回復(fù)

使用道具 舉報(bào)

ID:1064507 發(fā)表于 2023-2-27 16:27 | 顯示全部樓層
LCD1602好難
回復(fù)

使用道具 舉報(bào)

ID:1087371 發(fā)表于 2023-7-5 18:48 | 顯示全部樓層
不太明白,前來(lái)學(xué)習(xí),感謝樓主。
回復(fù)

使用道具 舉報(bào)

ID:1094673 發(fā)表于 2023-9-27 13:47 | 顯示全部樓層
有沒(méi)有具體的接線圖呀,還是說(shuō)就按著原理圖接就行
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品麻豆日日躁夜夜躁 | 亚洲一区三区在线观看 | 在线一区视频 | 免费视频二区 | 91免费看片 | 亚洲国产精品一区二区第一页 | 亚洲视频二区 | www.97zyz.com | 国产一区二区三区四区五区加勒比 | 国产小u女发育末成年 | 天天操天天干天天爽 | 午夜视频在线 | 国产精品观看 | 国产在线精品一区二区三区 | 羞羞视频在线免费 | 亚洲精品1区2区3区 91免费看片 | 欧美人妇做爰xxxⅹ性高电影 | 国产视频一区在线 | 亚洲v日韩v综合v精品v | 欧美视频在线看 | 日韩一区二区三区视频 | 久久精品亚洲精品国产欧美kt∨ | 一区在线观看 | 亚洲欧美日韩久久 | 久久成人精品视频 | 亚洲精品久久久久久久久久久久久 | 日韩影音 | 亚洲精品不卡 | 精品久久一区 | 欧美性大战久久久久久久蜜臀 | 欧美一区二区成人 | 国产成人精品一区二区三区网站观看 | 国产视频精品免费 | 97人人超碰 | 成人高清在线 | 亚洲欧美成人 | 亚洲成人一区 | 日本特黄a级高清免费大片 成年人黄色小视频 | 亚洲一区二区三区在线视频 | 国产精品1区2区 | 日韩精品一区二区三区中文在线 |