在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于51單片機的簡易計算器設計

白茶茶668 ? 來源:白茶茶668 ? 作者:白茶茶668 ? 2023-08-01 00:51 ? 次閱讀

該計算器系統51 系列的單片機進行的數字計算器系統設計,可以完成計算器的鍵盤輸入, 進行加、 減、乘、除的簡單四則運算,并在 LCD屏幕上相應的顯示結果。選擇內部存儲資源豐富的 51 單片 機,輸入采用 4×4矩陣鍵盤,顯示采用LCD1602屏幕模塊進行顯示。軟件方面從分析計算器功能、 流程圖設計,再到程序的編寫進行系統設計。編程語言方面從程序總體設計以及高效性和功能性對 C 語言和匯編語言進行比較分析, 針對計算器四則運算算法特別是乘法和除法運算的實現,最終選 用全球編譯效率最高的KEIL 公司的μVision5 軟件,采用C語言進行編程,并用 Proteus8 進行仿真

image.png

部分程序:

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit rs=P2^6; //數據命令選擇

sbit lcden=P2^7;//使能信號


uchar code table[]= " ";


long int data_a,data_b; //第一個數和第二個數

long int data_c; //計算結果


uchar dispaly[10]; //顯示緩沖


sbit MUSIC_REST =P2^2;//語音芯片復位腳

sbit MUSIC_DATA =P2^1;//語音芯片脈沖識別

sbit bus =P2^0;//語音芯片工作狀態識別信號

uchar bbh,xm1,xm2,xm0;


void delay_us(unsigned int us)//延時函數

{

while(us--)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

void Music(unsigned char music_count)

{

MUSIC_REST=1;

delay_us(200);

MUSIC_REST=0;

delay_us(200);


while(music_count>0)

{

MUSIC_DATA=1;

delay_us(100);

MUSIC_DATA=0;

delay_us(100);

music_count--;

}

}

//************************************************************************/

// 描述: 延時t us函數

//************************************************************************/

void LCD_Delay_us(unsigned int t)

{

while(t--); //t=0,退出

}

//************************************************************************/

// 描述: 延時t ms函數

//************************************************************************/

void LCD_Delay_ms(unsigned int t)

{

unsigned int i,j;

for(i=0;i;i++)>

for(j=0;j<113;j++) //執行113次循環

;

}

//************************************************************************/

// 描述: 1602液晶寫指令

//************************************************************************/

void write_com(uchar com) //1602液晶寫指令

{

rs=0; //寫指令

lcden=0; //使能1602

P0=com; //寫入指令com

LCD_Delay_ms(1); //延時1ms

lcden=1; //使能1602

LCD_Delay_ms(2); //延時2ms

lcden=0; //使能1602

}

//************************************************************************/

// 描述:1602液晶寫數據

//************************************************************************/

void write_date(uchar date) //1602液晶寫數據

{

rs=1; //寫數據

lcden=0; //使能1602

P0=date; //寫入數據date

LCD_Delay_ms(1); //延時1ms

lcden=1; //使能1602

LCD_Delay_ms(2); //延時2ms

lcden=0; //使能1602

}

//************************************************************************/

// 描述:指定x,y寫入字符函數

//************************************************************************/

void W_lcd(unsigned char x,unsigned char y,unsigned char Data)

{

if (y == 0){write_com(0x80 + x);} //第一行

else{write_com(0xc0 + x);} //第二行

write_date( Data); //寫入數據

}

//指定x,y寫入字符串函數

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)

{

if (y == 0){write_com(0x80 + x);} //第一行

else{write_com(0xC0 + x);} //第二行

while (*s) //

{write_date( *s); s++;} //寫入數據

}

//************************************************************************/

// 描述:初始化液晶,及畫面初始化

//************************************************************************/

void init_lcd(void) //初始化液晶,及畫面初始化

{

lcden=0; //使能1602

write_com(0x38); //8 位總線,雙行顯示,5X7 的點陣字符

LCD_Delay_us(100); //延時100us

write_com(0x0c); //開顯示,無光標,光標不閃爍

write_com(0x06); //光標右移動

write_com(0x01); //清屏

write_com(0x80); //DDRAM 地址歸0

}

//************************************************************************/

// 描述: 反轉法鍵盤掃描

//************************************************************************/

short keycheckdown() /* 反轉法鍵盤掃描 */

{


short temp1,temp2,temp,a=0xff;

P1=0xf0; /* 輸入行值(或列值) */

LCD_Delay_ms(20); /* 延時 */

temp1=P1; /* 讀列值(或行值) */

P1=0xff;

LCD_Delay_ms(20); /* 延時 */

P1=0x0f; /* 輸入列值(或行值) */

LCD_Delay_ms(20); /* 延時 */

temp2=P1; /* 讀行值(或列值) */

P1=0xff;

temp=(temp1&0xf0)|(temp2&0xf); /* 將兩次讀入數據組合 */

switch(temp) /* 通過讀入數據組合判斷按鍵位置 */

{

case 0x77 :a=0x0d;Music(27);while(!bus);break;// 按鍵/

case 0x7b :a=0x0e;Music(31);while(!bus); break;// 按鍵=

case 0x7d :a=0;Music(2);while(!bus);break;// 按鍵0

case 0x7e :a=0x0f; break;// 按鍵CE

case 0xb7 :a=0x0c;Music(26);while(!bus);break;// 按鍵*

case 0xbb :a=0x9;Music(11);while(!bus);break; // 按鍵9

case 0xbd :a=0x8;Music(10);while(!bus);break; // 按鍵8

case 0xbe :a=0x7;Music(9);while(!bus);break; // 按鍵7

case 0xd7 :a=0x0b;Music(25);while(!bus);break;// 按鍵-

case 0xdb :a=0x6;Music(8);while(!bus);break; // 按鍵6

case 0xdd :a=0x5;Music(7);while(!bus);break; // 按鍵5

case 0xde :a=0x4;Music(6);while(!bus);break; // 按鍵4

case 0xe7 :a=0x0a;Music(24);while(!bus);break;// 按鍵+

case 0xeb :a=3;Music(5);while(!bus);break; // 按鍵3

case 0xed :a=2;Music(4);while(!bus);break; // 按鍵2

case 0xee :a=1;Music(3);while(!bus);break; // 按鍵1

default :a=0xff;

}

return a; /* 返回按鍵值 */

}

image.png?

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4437

    瀏覽量

    168081
  • 51單片機
    +關注

    關注

    274

    文章

    5705

    瀏覽量

    124047
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137401
  • 計算器
    +關注

    關注

    16

    文章

    437

    瀏覽量

    37417
收藏 人收藏

    評論

    相關推薦

    51單片機 簡易計算器制作

    具體東西 都在附件里基于STC89C51做的想做簡但計算器的可以看看
    發表于 04-16 11:37

    基于51單片機簡易計算器制作 相關資料推薦

    基于51單片機簡易計算器制作51單片機可以實現的功能很多,今天筆者介紹一種使用4*4矩陣鍵盤和
    發表于 07-06 06:12

    基于51單片機簡易計算器,用LCD1602顯示 精選資料分享

    基于51單片機簡易計算器經歷了一番學習,成功做出了一個簡易計算器,并且在程序開頭加了一個小密
    發表于 07-14 07:28

    怎樣去設計一種基于51單片機簡易計算器

    怎樣去設計一種基于51單片機簡易計算器簡易計算器上的矩陣按鍵分別代表什么意思?
    發表于 09-07 07:01

    如何設計一個基于51單片機簡易計算器

    1.簡介本計算器是以MCS-51系列AT89C51單片機為核心構成的簡易計算器系統。該系統通過
    發表于 11-18 08:50

    51單片機簡易計算器(單片機小實驗,含C程序和Ptotues電路圖)

    51單片機簡易計算器(單片機小實驗,含C程序和Ptotues電路圖)一個單片機的小實驗,做一個
    發表于 04-22 11:04 ?812次下載

    基于MC51單片機簡易計算器設計_畢業設計(論文)

    畢業設計(論文)-基于MC51單片機簡易計算器設計 有需要的看一看,不收積分。
    發表于 11-20 16:49 ?136次下載

    簡易計算器設計

    基于51單片機簡易計算器,采用按鍵與數碼管實現
    發表于 12-31 14:33 ?20次下載

    基于51單片機簡易計算器,用LCD1602顯示

    基于51單片機簡易計算器經歷了一番學習,成功做出了一個簡易計算器,并且在程序開頭加了一個小密
    發表于 11-11 15:51 ?48次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>簡易</b><b class='flag-5'>計算器</b>,用LCD1602顯示

    基于51單片機簡易計算器

    1.簡介本計算器是以MCS-51系列AT89C51單片機為核心構成的簡易計算器系統。該系統通過
    發表于 11-11 19:51 ?54次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>簡易</b><b class='flag-5'>計算器</b>

    基于51單片機簡易計算器設計

    一.硬件方案本設計是以51單片機為核心的計算器模擬系統設計,輸入采用4×4矩陣鍵盤,可以進行加、減、乘、除4位帶符號數字運算,并在LCD1602上顯示操作過程。。主要由51
    發表于 11-13 10:21 ?28次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>簡易</b><b class='flag-5'>計算器</b>設計

    基于51單片機簡易計算器LCD顯示

    分享一個小作品,是根據普中單片機給的簡易計算器的代碼的思路自己改寫的,IO口的話也能對應的上開發板的引腳,他原來給的程序是只能實現兩位數差十倍的加減乘除,特別是除法的話A/B A<B在
    發表于 11-23 16:36 ?3次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>簡易</b><b class='flag-5'>計算器</b>LCD顯示

    基于51單片機簡易計算器(數碼管顯示)源代碼

    基于51單片機簡易計算器(數碼管顯示)例程源代碼
    發表于 05-12 16:39 ?64次下載

    基于51單片機簡易計算器設計

    基于51單片機簡易計算器設計(實物)
    發表于 01-02 10:02 ?41次下載

    基于51單片機簡易計算器設計

    電子發燒友網站提供《基于51單片機簡易計算器設計.rar》資料免費下載
    發表于 01-12 10:50 ?12次下載
    主站蜘蛛池模板: 人人爽天天爽夜夜爽曰| 四虎永久在线观看免费网站网址| 国产精品福利久久2020| 在线jlzzjlzz免费播放| 夜夜操com| 国产免费一区二区三区| 色丁香在线观看| 人操人摸| 激情综合网五月婷婷| 国产成人精品日本亚洲网站| 男人的天堂在线免费视频| 黄色日本网站| 最新福利网站| 狼人狠狠干| 欧美成人 色 图| ww在线观看| 国产中文99视频在线观看| www.av天天| 色吧综合网| 亚洲综合涩| 一区二区三区国模大胆| 色一区二区| 色多多免费在线观看| 毛片免费观看| 999www成人免费视频| 97影院理论| 欧美成人全部费免网站| 欧美性xxxx交| 国产精品久久久久久免费播放| 日本不卡在线观看免费v| 亚洲色图.com| 欧美日韩国产网站| 欧美三级一级| bt种子天堂| 狠狠操天天操视频| 国产99久9在线视频| 女人aaaaa片一级一毛片 | 国产欧美乱码在线看| 日日做日日摸夜夜爽| 757福利影院合集3000| 唐人社电亚洲一区二区三区|