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

基于89c52的簡易計算器設計

發布者:camuspyc最新更新時間:2019-12-04 來源: 51hei關鍵字:89c52  簡易計算器  鍵盤掃描 手機看文章 掃描二維碼
隨時隨地手機看文章

 

#include

#include

#include "lcd1602_8.h"

uint temp,num;//鍵盤掃描數值

uchar keynum1=0,keynum2=0,sign=0,i=0,j=0; //按鍵計數,符號標示

uchar num1[8]={0},num2[8]={0};         //按鍵存儲數組

float ans1=0,ans2=0,ans=0,point=0; //運算數據

bit conflag=0;         //繼續運算標志位

bit newcalc=0;        //新運算標志

bit ac=0;                //清零標志,1為清零

bit beepflag=0;         //蜂鳴器標志位

bit sqrtflag1=0;        //開方1標志位

bit sqrtflag2=0;        //開方2標志位

bit        powflag=0;

sbit keybeep=P3^3;//蜂鳴器開關按鍵

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

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

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

uchar keyscan();

void maininit(void);

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

void main(void)

{

        maininit();//初始化

        while(1)        //整個系統大循環,讓計算器一直處于工作狀態

        {

                while(1)        //第一運算數掃描

                {

                        if(ac==1)

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

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

                        {

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

                                {

                                        lcdwrite_com(0x01);//清屏

                                        newcalc=0;

                                        lcd_setxy(0,0);

                                }

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

                                {                        

                                        if(num=='.')

                                        {        

                                                lcdwrite_data('.');        //顯示小數點

                                        }

                                        else

                                                lcdwrite_num1(num);

                                        num1[keynum1]=num;

                                        keynum1++;

                                }

                        }

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

                        {

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

                                {        

                        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++)           //計算按下的數字的大小

                                {

                                        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; //清除開方標志

                                sqrtflag2=0;//清除開方標志

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

                                {

                                        delayms(5);

                                                if(keysqrt==0)

                                                {

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

                                                        {

[1] [2] [3] [4] [5]
關鍵字:89c52  簡易計算器  鍵盤掃描 引用地址:基于89c52的簡易計算器設計

上一篇:單片機課程設計報告—溫度報警器
下一篇:基于51的IIC通訊原理及協議詳解(I2C)

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

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

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京B2-20211791 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 娱乐| 延安市| 三门县| 永平县| 贺州市| 富锦市| 利辛县| 礼泉县| 肥乡县| 京山县| 碌曲县| 蒙城县| 保康县| 福泉市| 从化市| 芦山县| 东乡族自治县| 汉寿县| 榆林市| 丹东市| 玉山县| 麻江县| 城固县| 蒙山县| 思茅市| 施甸县| 隆回县| 东安县| 灌阳县| 炎陵县| 黄石市| 嘉鱼县| 五莲县| 平邑县| 包头市| 抚顺县| 榆社县| 广西| 中西区| 绥阳县| 怀集县|