![簡易計算機LCD1602單次顯示程序與仿真設(shè)計_第1頁](http://file4.renrendoc.com/view/f987554038239f29dd1fd8b4a33a8726/f987554038239f29dd1fd8b4a33a87261.gif)
![簡易計算機LCD1602單次顯示程序與仿真設(shè)計_第2頁](http://file4.renrendoc.com/view/f987554038239f29dd1fd8b4a33a8726/f987554038239f29dd1fd8b4a33a87262.gif)
![簡易計算機LCD1602單次顯示程序與仿真設(shè)計_第3頁](http://file4.renrendoc.com/view/f987554038239f29dd1fd8b4a33a8726/f987554038239f29dd1fd8b4a33a87263.gif)
![簡易計算機LCD1602單次顯示程序與仿真設(shè)計_第4頁](http://file4.renrendoc.com/view/f987554038239f29dd1fd8b4a33a8726/f987554038239f29dd1fd8b4a33a87264.gif)
![簡易計算機LCD1602單次顯示程序與仿真設(shè)計_第5頁](http://file4.renrendoc.com/view/f987554038239f29dd1fd8b4a33a8726/f987554038239f29dd1fd8b4a33a87265.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 . . . . 7/7/*/簡易計算器,LCD1602顯示/*#include#include#include#define uchar unsigned char #define uint unsigned int/*管腳定義*sbit RS = P30; /選擇數(shù)據(jù)還是命令sbit RW = P31; /選擇讀還是寫sbit EN = P32; /使能位#define CHECK_BUSY#define RS_CLR RS=0 #define RS_SET RS=1#define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0#de
2、fine EN_SET EN=1#define DataPort P2/液晶數(shù)據(jù)口接在P2口/*/ uS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值/unsigned char 是定義無符號字符變量,其值的圍是/0255 這里使用晶振12M,準(zhǔn)確延時請使用匯編,大致延時/長度如下 T=tx2+5 uS /*void DelayUs2x(uchar t) while(-t);void DelayMs(uchar t) while(t-) DelayUs2x(245); DelayUs2x(245); /*寫入命令函數(shù)*void LCD_Write_Com(uchar ) De
3、layMs(1); RS_CLR; RW_CLR; EN_SET; DataPort= ; _nop_(); EN_CLR;/*寫入數(shù)據(jù)函數(shù)*void LCD_Write_Data(uchar Data) DelayMs(1); RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR;/*寫入字符函數(shù)*void LCD_Write_Char(uchar x,uchar y,uchar dat) if (y = 0) LCD_Write_Com(0 x80 + x); else LCD_Write_Com(0 xC0 + x); LCD_W
4、rite_Data( dat);/*清屏函數(shù)*void LCD_Clear(void) LCD_Write_Com(0 x01); DelayMs(5);/*寫入字符串函數(shù)*void LCD_Write_String(uchar x,uchar y,uchar *s) if (y = 0) LCD_Write_Com(0 x80 + x); /表示第一行 else LCD_Write_Com(0 xC0); /表示第二行 while(*s != 0) /字符的尾部 LCD_Write_Data( *s); s +; /*初始化函數(shù)*void LCD_Init(void) LCD_Write_C
5、om(0 x38); /顯示模式設(shè)置 DelayMs(5); LCD_Write_Com(0 x38); DelayMs(5); LCD_Write_Com(0 x08); /顯示關(guān)閉 LCD_Write_Com(0 x01); /顯示清屏 LCD_Write_Com(0 x06); /顯示光標(biāo)移動設(shè)置 DelayMs(5); LCD_Write_Com(0 x0C); /顯示開與光標(biāo)設(shè)置/*按鍵掃描函數(shù),返回掃描鍵值*uchar KeyScan() /鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法uchar cord_h,cord_l;/行列值中間變量P1=0 x0f; /行線輸出全為0cord_h=P1
6、&0 x0f; /讀入列線值if(cord_h!=0 x0f) /先檢測有無按鍵按下DelayMs(10); /去抖if(P1&0 x0f)!=0 x0f)cord_h=P1&0 x0f; /讀入列線值P1=cord_h|0 xf0; /輸出當(dāng)前列線值cord_l=P1&0 xf0; /讀入行線值while(P1&0 xf0)!=0 xf0);/等待松開并輸出return(cord_h+cord_l);/鍵盤最后組合碼值return(0 xff); /返回該值uchar KeyPro()switch(KeyScan()case 0 xeb:return 1;break;/0 按下相應(yīng)的鍵顯示相
7、對應(yīng)的碼值case 0 xdb:return 2;break;/1case 0 xbb:return 3;break;/2case 0 x77:return +;break;/3case 0 xed:return 4;break;/4case 0 xdd:return 5;break;/5case 0 xbd:return 6;break;/6case 0 x7b:return -;break;/7case 0 xee:return 7;break;/8case 0 xde:return 8;break;/9case 0 xbe:return 9;break;/acase 0 x7d:retu
8、rn x;break;/bcase 0 xe7:return 0;break;/ccase 0 xd7:return .;break;/dcase 0 xb7:return =;break;/ecase 0 x7e:return /;break;/fdefault:return 0 xff;break;void main()uchar num,i,sign; uchar temp16; /最大輸入16個bit firstflag;float a=0,b=0;uchar s;LCD_Init(); /初始化液晶屏DelayMs(10);/延時用于穩(wěn)定,可以去掉LCD_Write_Com(0 x0
9、1); /清屏LCD_Write_String(4,0, Calculator ); LCD_Write_String(4,1, Welcome To Use ); for(s=0;s7;s+)/延時5s DelayMs(200);LCD_Write_Com(0 x01);while (1) /主循環(huán)num=KeyPro(); /掃描鍵盤if(num!=0 xff) /如果掃描是按鍵有效值那么進(jìn)展處理if(i=0) /輸入是第一個字符的時候需要把改行清空,方便觀看LCD_Write_Com(0 x01);if(+=num)| (i=16) | (-=num) | (x=num)| (/=num
10、) | (=num)/輸入數(shù)字最大值16,輸入符號表示輸入完畢i=0; /計數(shù)器復(fù)位if(firstflag=0) /如果是輸入的第一個數(shù)據(jù),賦值給a,并把標(biāo)志位置1,到下一個數(shù)據(jù)輸入時可以跳轉(zhuǎn)賦值給bsscanf(temp,%f,&a);firstflag=1;elsesscanf(temp,%f,&b);for(s=0;s16;s+) /賦值完成后把緩沖區(qū)清零,防止下次輸入影響結(jié)果temps=0;LCD_Write_Char(0,1,num);if(num!=) /判斷當(dāng)前符號位并做相應(yīng)處理sign=num; /如果不是等號記下標(biāo)志位elsefirstflag=0; /檢測到輸入=號,判斷
11、上次讀入的符合switch(sign)case +:a=a+b;break;case -:a=a-b;break;case x:a=a*b;break;case /:a=a/b;break;default:break;sprintf(temp,%g,a); /輸出浮點型,無用的0不輸出LCD_Write_String(1,1,temp);/顯示到液晶屏sign=0;a=b=0; /用完后所有數(shù)據(jù)清零for(s=0;s16;s+)temps=0;else if(i16)if(1=i)& (temp0=0) )/如果第一個字符是0,判讀第二個字符if(num=.) /如果是小數(shù)點那么正常輸入,光標(biāo)位置加1temp1=.;LCD_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機械設(shè)備合同(2篇)
- 機場跑道擴建招標(biāo)合同(2篇)
- 2025至2031年中國硫酸奈替米星氯化鈉注射液行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國木芯輪行業(yè)投資前景及策略咨詢研究報告
- 客戶生命周期價值預(yù)測-第1篇-深度研究
- 人工智能輔助設(shè)計-第2篇-深度研究
- 2025年度車輛維修后安全性能評估與優(yōu)化改進(jìn)合同
- 二零二五年度能源管理派遣員工服務(wù)合同
- 2025年度二零二五年度汽車抵押權(quán)回購合同樣本
- 2025年度附條件附條件房地產(chǎn)基金投資居間代理合同
- 長江委水文局2025年校園招聘17人歷年高頻重點提升(共500題)附帶答案詳解
- IF鋼物理冶金原理與關(guān)鍵工藝技術(shù)1
- 隧道配電設(shè)備安裝與調(diào)試方案
- 2024年河北省中考數(shù)學(xué)試題(含答案解析)
- 新租賃準(zhǔn)則(2024版)
- 家禽呼吸系統(tǒng)認(rèn)知
- 《社區(qū)康復(fù)》課件-第九章 言語障礙患者的社區(qū)康復(fù)實踐
- 凸優(yōu)化在經(jīng)濟學(xué)與金融學(xué)中的應(yīng)用
- 家譜、宗譜頒譜慶典講話
- 大學(xué)生職業(yè)生涯發(fā)展規(guī)劃知到章節(jié)答案智慧樹2023年齊魯師范學(xué)院
- GB/T 9123.1-2000平面突面鋼制管法蘭蓋
評論
0/150
提交評論