娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

基于89c52的簡易計(jì)算器設(shè)計(jì)

發(fā)布者:camuspyc最新更新時(shí)間:2019-12-04 來源: 51hei關(guān)鍵字:89c52  簡易計(jì)算器  鍵盤掃描 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

 

#include

#include

#include "lcd1602_8.h"

uint temp,num;//鍵盤掃描數(shù)值

uchar keynum1=0,keynum2=0,sign=0,i=0,j=0; //按鍵計(jì)數(shù),符號標(biāo)示

uchar num1[8]={0},num2[8]={0};         //按鍵存儲(chǔ)數(shù)組

float ans1=0,ans2=0,ans=0,point=0; //運(yùn)算數(shù)據(jù)

bit conflag=0;         //繼續(xù)運(yùn)算標(biāo)志位

bit newcalc=0;        //新運(yùn)算標(biāo)志

bit ac=0;                //清零標(biāo)志,1為清零

bit beepflag=0;         //蜂鳴器標(biāo)志位

bit sqrtflag1=0;        //開方1標(biāo)志位

bit sqrtflag2=0;        //開方2標(biāo)志位

bit        powflag=0;

sbit keybeep=P3^3;//蜂鳴器開關(guān)按鍵

sbit beep=P2^3;         //蜂鳴器控制口

sbit keysqrt=P3^4;//開方按鍵

sbit keypow=P3^5;//任意次方按鍵

uchar keyscan();

void maininit(void);

/****主程序***/

void main(void)

{

        maininit();//初始化

        while(1)        //整個(gè)系統(tǒng)大循環(huán),讓計(jì)算器一直處于工作狀態(tài)

        {

                while(1)        //第一運(yùn)算數(shù)掃描

                {

                        if(ac==1)

                                break;         //若清零,則退出輸入

                        if((keyscan()!='N')&&((num>=0&&num<=9)||num=='.')) //記錄按下的數(shù)字

                        {

                                if(newcalc==1)          //新一次運(yùn)算開始

                                {

                                        lcdwrite_com(0x01);//清屏

                                        newcalc=0;

                                        lcd_setxy(0,0);

                                }

                                if(keynum1<=7)           //限制輸入位數(shù)

                                {                        

                                        if(num=='.')

                                        {        

                                                lcdwrite_data('.');        //顯示小數(shù)點(diǎn)

                                        }

                                        else

                                                lcdwrite_num1(num);

                                        num1[keynum1]=num;

                                        keynum1++;

                                }

                        }

                        else if(num=='+'||num=='-'||num=='*'||num=='/'||num=='='||num=='^'||keysqrt==0)  

                        {

                                if(keynum1==0&&num1[0]==0)          //若直接輸入運(yùn)算符而沒有輸入數(shù)字則執(zhí)行連續(xù)運(yùn)算

                                {        

                        here:        ans1=ans;

                                        sign=num;

                                        lcdwrite_com(0x01);

                                        delayms(5);

                                        lcd_setxy(0,0);

                                        lcdwrite_float(ans1);

                                        if(sqrtflag2!=1&&num!='N')

                                                lcdwrite_data(num);

                                        break; 

                                }

                                for(i=0;keynum1>0;i++)           //計(jì)算按下的數(shù)字的大小

                                {

                                        if(num1[i]!='.')

                                                ans1=ans1*10+num1[i];

                                        else if(num1[i]=='.')

                                                break;

                                        keynum1--;

                                }

                                for(keynum1--,i++,j=0;keynum1>0;j++,i++,keynum1--)

                                        point=point*10+num1[i];

                                for(;j>0;j--)

                                        point*=0.1;

                                ans1=ans1+point;

                                sqrtflag1=0; //清除開方標(biāo)志

                                sqrtflag2=0;//清除開方標(biāo)志

                                if(keysqrt==0)                  //計(jì)算開方

                                {

                                        delayms(5);

                                                if(keysqrt==0)

                                                {

                                                        if(beepflag==1) //若開聲音則每一次按鍵均鳴叫

                                                        {

[1] [2] [3] [4] [5]
關(guān)鍵字:89c52  簡易計(jì)算器  鍵盤掃描 引用地址:基于89c52的簡易計(jì)算器設(shè)計(jì)

上一篇:單片機(jī)課程設(shè)計(jì)報(bào)告—溫度報(bào)警器
下一篇:基于51的IIC通訊原理及協(xié)議詳解(I2C)

推薦閱讀最新更新時(shí)間:2025-04-24 23:02

單片機(jī)液晶秒表以及簡易計(jì)算器
注;學(xué)51時(shí)的一個(gè)小制作,希望大家喜歡. 硬件電路:51最小系統(tǒng),沒有采用總線方式,直接的I/O形式,包括矩陣鍵盤,1602液晶,一個(gè)數(shù)碼管,LED4個(gè),蜂鳴器等. /////design by HUAZ 2006.8.9 // 單片機(jī)液晶秒表計(jì)算器完整修改版本 可以實(shí)現(xiàn)兩種功能的切換,其他功能自行對照代碼研究。 4*4 矩陣鍵盤 , 第一排前三列是實(shí)現(xiàn)小時(shí) \ 分鐘 \ 秒的加 . 第二排前三列是實(shí)現(xiàn)小時(shí) \ 分鐘 \ 秒的減 . 當(dāng)然還可以通過設(shè)置矩陣鍵盤的鍵值 , 來實(shí)現(xiàn)加 \ 減 \ 乘 \ 除四則運(yùn)算 , 由數(shù)碼管顯示參與運(yùn)算的數(shù)字以及最終的運(yùn)算結(jié)果 #include reg51.h
[單片機(jī)]
將MAX6954和MAX6955的鍵盤掃描擴(kuò)展至32鍵以上
摘要:本應(yīng)用筆記介紹了一種擴(kuò)展掃描的方法,可以擴(kuò)展MAX6954和MAX6955 LED顯示驅(qū)動(dòng)器的鍵盤掃描范圍,從32鍵擴(kuò)展到80鍵。 MAX6954/MAX6955是4線或2線串行接口的LED驅(qū)動(dòng)器,可以控制7段、14段或16段LED或一個(gè)16x8的LED矩陣。驅(qū)動(dòng)器還包括5個(gè)I/O擴(kuò)展(GPIO)端口,以及用這些端口自動(dòng)掃描32個(gè)按鍵、消除按鍵抖動(dòng)的所有邏輯控制。另外一個(gè)功能選項(xiàng)是通過一個(gè)中斷引腳通知系統(tǒng)處理器消除鍵抖。本文介紹的擴(kuò)展按鍵掃描方案(從32鍵擴(kuò)展到80或更多個(gè)按鍵)需要增添額外的二極管。 表1. MAX6954/MAX6955的標(biāo)準(zhǔn)32鍵連接 P0 P1 P2 P3 LED Output O
[模擬電子]
將MAX6954和MAX6955的<font color='red'>鍵盤</font><font color='red'>掃描</font>擴(kuò)展至32鍵以上
89C52來做定時(shí)記數(shù)器程序,51定時(shí)程序
使用89C52來做定時(shí)記數(shù)器 /*************************************************************** 功能:實(shí)現(xiàn) 單片機(jī) 定時(shí)記數(shù)器 ***************************************************************/ #include reg51.h sbit DsDat=0x94; /*定義數(shù)據(jù)位輸入給74ALS164數(shù)據(jù)位就是從P14出去的*/ sbit DsClk=0x95; /*定義脈沖 信號 給164,脈沖信號是從P15出去的*/ sbit Gw=0x90; /*定義個(gè)位定形P10*/ sbit Sw=0x91; /
[單片機(jī)]
用GY30,LCD,89C52單片機(jī)顯示光照強(qiáng)度
#include REG51.H #include math.h //Keil library #include stdio.h //Keil library #include INTRINS.H #define uchar unsigned char #define uint unsigned int #define DataPort P0 //LCD1602數(shù)據(jù)端口 sbit SCL=P1^0; //IIC時(shí)鐘引腳定義 sbit SDA=P1^1; //IIC數(shù)據(jù)引腳定義 sbit LCM_RS=P1^2; //LCD1602命令端
[單片機(jī)]
用GY30,LCD,<font color='red'>89C52</font>單片機(jī)顯示光照強(qiáng)度
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京B2-20211791 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 河津市| 敦化市| 怀集县| 林州市| 阿拉善右旗| 溆浦县| 潍坊市| 红安县| 东安县| 五常市| 松滋市| 抚宁县| 彝良县| 乐亭县| 甘南县| 平南县| 永善县| 洛浦县| 山西省| 巴彦县| 固阳县| 肇东市| 开封县| 成武县| 通城县| 电白县| 宁国市| 广南县| 湘乡市| 义乌市| 建瓯市| 沂南县| 鄱阳县| 萍乡市| 南宫市| 屏边| 江城| 汕头市| 木里| 定西市| 桐梓县|