⑴ 51單片機怎麼入門
1、建議你買個開發板,200塊的配置都非常全了,硬體有個直觀認識
2、網上有視頻教程《十天學會單片機》、《力天手把手教你單片機》等一些可以讓你快速入門,看視頻做筆記,邊練習,進步很快。手頭應該有些比較全面的單片機的書,方便查閱。
3、如果沒有開發板,只有用proteus模擬軟體,我推薦《單片機C語言程序設計實訓100例——基於8051+Proteus模擬》這本書
請看郭天祥大師的《怎樣學習單片機》
很多單片機初學者問我的第一句話就是怎樣才能學好單片機?對於這個問題我今天就我自己是如何開始學單片機、如何開始上手、如何開始熟練這個過程給大家講講。先說說單片機,我們現在用的比較多的是8051單片機,它的資料比較多,用的人也較多,市場也很大,51單片機內部結構比較簡單,非常適合初學者學習,建議初學者將51單片機做為入門級晶元。單片機屬於硬體,我強烈不推薦大家使用單片機模擬軟體來學習單片機,也可以肯定的告訴大家,使用模擬軟體是學不會單片機的,硬體只有把它擺在你的面前,親自操作它,才會有深刻的體會,才能學明白它。單片機這門課是一科非常重視動手實踐的科目,不能總是看書,但是也不能完全不看書,我們需要從書中大概了解一下單片機的各個功能寄存器,如果看的多了反而容易搞亂,尤其是現在市場上大多數講單片機的書一開始就講解較復雜的內存、地址、存儲器什麼的,更讓初學者感到不知所雲、難以入門。簡單的說,當我們使用單片機時,實際上就是用我們自己編寫的軟體去控制單片機的各個功能寄存器,再簡單些,就是控制單片機哪些引腳的電平什麼時候輸出高,什麼時候輸出低。由這些高低變化的電平來控制外圍電路,實現我們需要的各個功能。
關於看書,大家只需大概了解單片機各引腳的功能,了解下寄存器。第一次、第二次你可能看不明白,但這不要緊,因為還缺少實際的感觀認識。所以我總是說,學單片機看書看兩三天就夠了,而我們要把更多的時間放到實踐中去,這才是最關鍵的,在實踐的過程有不懂之處再查書,這樣記憶才深刻。關於實踐有兩種方法你可以選擇,方法一、你自己花錢買一塊單片機的學習板,不要求那種價格上千塊功能太太全的,對於初學者來說你買功能太全的板子,上面有很多東西你這輩子都用不著,我建議有流水燈、數碼管、獨立鍵盤、矩陣鍵盤、AD 和DA、液晶、蜂鳴器、IIC匯流排、有USB擴展也最好,這些就差不多了。如果說我上面提到的這些功能你能熟練應用,那可以說對於單片機本身的操作你已經入門了,剩下的就是自己練習設計外圍電路,不斷的積累經驗。只要過了第一關,後面的路就好走多了,萬事開頭難,大家都聽過。方法二、你身邊如果有單片機方面的高手,向他求助,讓他幫你搭個簡單的最小系統板。對於高手來說,做個單片機的最小系統板可能只需要幾分鍾的時間,而對於初學者可就難多了,因為只有對硬體徹底了解了,你才能熟練的駕馭它。而如果你身邊沒有這樣的高手,又找不到可以幫助你的人,那我勸你還是選擇方法一,畢竟自己有一塊學習板要方便的多,以後做單片機類的小實驗時經常都能用得上,省時又省事。
有了單片機學習板之後你就要多練習,最好是自己有台電腦,少看電影,少打游戲,把學習板和電腦連好,打開調試軟體坐在電腦前,先學會怎麼用調試軟體,然後從最簡單的流水燈實驗做起,等你能讓那八個流水燈按照你的意願隨意流動時你已經入門了,你會發現單片機是多麼迷人的東西啊,太好玩了,這不是在學習知識,而是在玩,比起跑跑卡丁車,比起魔獸世界,要好玩的多的多。當你編寫的程序按你的意願實現時,你比做任何事都開心,你會上癮的,真的,做電子設計的人真的會上癮。然後讓數碼管亮起來,這兩項會了後,你已經不能自拔了。就是要這樣練習,在寫程序的時候你肯定會遇到很多問題,而這時你再去翻書找,或是問別人,或是上網搜索。當得到解答後你會記住一輩子的,知識必須應用於現實生活中,解決實際問題,這樣才能發揮它的作用,你自己好好想想,上了這么多年大學,天天上課,你在課堂上學到了什麼?是不是為了期末考試而忙碌呢?考完得了90分,哈哈哈好高興啊,過一個假期,甚至過一個周末,然後忘的一干二凈,是不是?你學到什麼了?我認為這樣的生活沒有意義。但是我告訴你單片機一旦學會,永遠不會忘了。
另外我再說說關於用匯編語言還是C語言編程的問題。很多同學大一、二就開設了C語言的課,我也上過,我知道那時上課老師講的就是幾乘幾、幾加幾、求個階乘、畫個星星、編個月亮什麼的。學完了有什麼用?雖然考試我考了90分,可我心裡比誰都明白,C語言到底是什麼?它有什麼用?到底它能做什麼我一無所知。我們不能過多的評價當今的高校教育,但我們必須得為自己負責任。讓你用C語言編單片機的程序你是不是就傻了?單片機編程用C語言或匯編語言都可以,但是我建議用C語言比較好,如果原來有C語言的基礎那學起來會更好,如果沒有,也可以邊學單片機邊學C語言,C語言很簡單,只是一門工具而已,我勸大家最好學好學精它,將來肯定用得著,要不然以後也得學,你一點匯編都不會根本無所謂,但你一點C語言都不會那你將來會吃苦頭。給大家推薦一本書,作者譚浩強,書名<程序設計>>,清華大學出版社,大家在學習本書的同時再參考上面提到的這本書更有利C語言學習。也根本沒必要再從頭把<程序設計>>學一邊,就算再學一邊也許結果還是和你現在一樣,最好的辦法就是用到哪裡學哪裡。匯編寫程序代碼效率高,但相對難度較大,而且很繁瑣,尤其是遇到演算法方面的問題時,根本是麻煩的不得了,現在單片機的主頻在不斷的提高,我們完全不需要那麼高效率的代碼,因為有高頻率的時鍾,單片機的ROM也在不斷的提高,足夠裝得下你用C語言寫的任何代碼,C語言的資料又多又好找,將來可移植性非常好,所以我勸大家用C語言。
總結上面,只要你有信心,做事能堅持到底,有不成功絕不放棄的強烈意志,那學個單片機對你來說就是件非常容易的事。建議步驟:
1 、看書大概了解一下單片機結構,大概了解就行。不用都看懂,又不讓你出書。
2 、用學習板練習編寫程序,學單片機主要就是練編程序,遇到不會的再問人或查書。
3 、自己網上找些小電路類的資料練習設計外圍電路。焊好後自己調試,熟悉過程。
4 、自己完全設計具有個人風格的電路、產品 … 你已經是高手了。
⑵ 單片機初學者該看什麼書
《51單片機工程師是怎樣煉成的:基於C語言+Proteus模擬》老楊 電子工業出版社
《單片機C語言程序設計實訓100例——基於8051+Proteus模擬》彭偉 電子工業出版社
《新概念51單片機C語言教程——入門、提高、開發、拓展》 郭天祥 電子工業出版社
《實例解讀51單片機完全學習與應用》 電子工業出版社
《手把手教你學單片機》 北航
《單片機基礎》李廣弟 北航
《單片機原理及介面技術》李朝青 北航
《51單片機應用從零開始》匯編 楊欣 清華出版社
《愛上單片機》 杜洋 人民郵電出版社
《例說51單片機(C語言版)》 張義和 人民郵電出版社
《單片機原理與技術》
《51單片機開發與應用技術詳解》
《單片機技術與原理教材》
《匠人手記》
《手把手教你學單片機》
《8051單片機》
《單片機原理及應用》 張毅剛
《51單片機原理與實踐》
《單片機應用技術》 哈爾濱工業大學出版社
《8051單片機教程》 平凡
《單片機輕松入門》平凡
⑶ 零基礎怎麼學單片機
可以的,單片機不難,先學C語言,英語常用的單詞認識就行,一般都可以用翻譯軟體。0基礎建議先學51
⑷ 單片機教程
王雲 51單片機教程,就很好,身邊很多同學在用。
⑸ 單片機學習入門基礎
學習單片機的最有效方法是理論與實踐並重
對一個初學單片機的人來說,如果按教科書式的學法,上來就是一大堆指令、名詞,學了半天還搞不清這些指令起什麼作用,能夠產生什麼實際效果,那麼也許用不了幾天就會覺得枯燥乏味而半途而廢。所以學習與實踐結合是一個好方法,邊學習、邊演練,循序漸進,這樣用不了幾次就能將用到的指令理解、吃透、紮根於腦海,甚至「根深蒂固」。也就是說,當你此次學習完某幾條指令後(一次數量不求多,只求懂),接下去就該做實驗了,通過實驗,使你感受剛才的指令產生了控制效果,眼睛看得見(燈光)、耳朵聽得到(聲音),更能深刻理解指令是怎樣轉化成信號去控制電子產品的。說句過分的話,單片機與其說是學出來的,還不如說是做實驗練出來的,何況做實驗本身也是一種學習過程。《電子製作》2003~2004的《手把手教你學單片機》講座就是基於這樣一種邊學邊練的理念展開的,從眾多的讀者反饋來看,效果特別好,許多讀者經3~6個月的學習已能開發簡單的產品了(如霓紅燈廣告牌控制、累加計數器等)。
學習單片機要合理安排學習時間持之以恆
學習單片機可不能「三天打魚、二天曬網」 ,要有持之以恆的毅力與決心,學習完幾條指令後,就應及時做實驗,融會貫通,而不要等幾天或幾個星期有時間後再做實驗,這樣效果不好甚至前學後忘。另外要有打「持久戰」 的心理准備,不要興趣來時學上幾天,無興趣時涼上幾星期。學習單片機很重要的一點就是持之以恆。
學習單片機要使用循環學習法使之根深蒂固
《手把手教你學單片機》講座入門起點低,很多朋友覺得好學、易學,很快就能將講座從頭至尾學完、學懂,但過了幾個月,在開發產品時對指令的具體作用就有些淡忘了。根據現代科學的研究,對只短暫學過一遍的知識,充其量只比浮光掠影稍好。因此,較好的方法是,過一段時間後(1~2個月)再重新做一遍,這樣反復循環幾次就能徹底弄懂消化,永不忘卻。有道是:若人生能細看《水滸傳》10遍,那麼裡面的故事內容、人物場情將永生不忘。
學習單片機要進行適當投資購買實驗器材及書籍資料
單片機技術是一門含金量高的技術,一旦學會後,它給你帶來的效益回報當然也高,無論是應聘求職還是自起爐灶開廠辦公司,其前景是光明無限。因此在學習時要捨得適當投資購買必要的學習、實驗器材,另外還要經常去科技圖書店看看,購買一些適合自己學習、提高的書籍。總之,春天不播種哪來秋天的收獲?考慮到初學者的學習成本,《手把手教你學單片機》講座主要採用「程序完成後軟體模擬→單片機燒錄程序→試驗板通電實驗」的方法(現在的快閃型單片機其程序可燒寫1000次以上),而沒有採用價格昂貴的在線模擬器(ICE)進行實驗,這樣整套實驗器材(不包括PC機)只有幾百元,對大部分已工作的愛好者來說都有這個經濟能力承受。一旦當你掌握了單片機的編程技術,成為一個水平較高的單片機設計人員時,再買在線模擬器也不遲。
准備:
單片機燒錄器
單片機模擬器
單片機(89c2051,便宜)
軟體(Keil)
1、先找本單片機入門的書來看,對於寄存器不必很深的了解
2、照書上的電路圖搭好電路(復位、晶振、IO……)
3、將書上的范常式序燒入單片機跑(或者模擬,看程序運行)
4、當你做完IO流水燈實驗、串口收發數據實驗,再回去看書,能有更深的體會。
5、高級應用的書,或者做更多的東西~~
⑹ 學51單片機推薦書籍,要求是入門的
單片機入門書籍,推薦3本書給你吧。
1.《新型單片開關電源設計與應用技術》
⑺ 怎樣自學單片機簡單嗎
學習單片機原理需要以下一些基礎: 基本的電路原理的基礎 基本的匯編、C語言的基礎,
基本的計算機使用基礎等,一般來說自學比較難,不好理解的。所以建議還是報班去學習的好
像創客學院的教學就比較有趣的,還可以自己操作實踐。
⑻ 手把手教你學單片機課後習題答案:關於用定時器著流水燈程序
在51單片機開發板上,用定時器做了一個流水燈程序,調整非常靈活,很實用拿出來和朋友們一起分享#include<reg52.h>,這是一個左右循環的程序,如果想要其他花樣只需改變數組里元素排列順序即可,很好玩的,也很簡單。
⑼ 手把手教你學51單片機的前 言
目前,51系列單片機在我國已得到大力推廣和廣泛應用,從工業控制系統到小型電子產品都可以見到51單片機的身影,它經典的結構使其成為單片機學習的入門首選,得到了廣大單片機使用者的一致推崇,關於51單片機學習和應用的書也五彩紛呈,本書也是其中的一本。
編寫本書的目的
筆者從事單片機設計工作已有多年,在這期間設計和參與設計了較多的單片機項目,取得了很多單片機實際設計經驗,對單片機設計有了一些較深的認識。所以希望能通過這本書對初步學習單片機的讀者有所幫助,並且也是自己對學習和應用單片機的一個總結。
通常在學校學習的單片機知識偏重於理論而不是技能,可是在工作中需要面對的是實際問題,而不是在紙上談兵;作為一名單片機工程師,筆者在工作中對此深有感觸。所以本書的著重點是想讓讀者了解一個完整的單片機設計過程所需的知識,而不僅僅只是講述單片機的原理。通過本書的學習,讀者可以獨立設計和完成一個簡單的單片機控制系統,即體驗從原理圖設計、製作電路板到單片機系統調試的整個過程。
本書的主要內容
本書概括地論述了單片機的基礎知識,包括單片機的基本結構和工作原理;並就實際單片機項目開發中會遇到的各種問題進行了闡述,列舉了單片機開發的流程和必須遵守的一些規范,說明了模擬器和編程器在開發中的作用以及基本的使用方法。具體內容如下。
首先論述了單片機的基礎知識,包括單片機的基本結構和工作原理,闡述了目前單片機的發展情況,列舉了最新流行的單片機種類,總結了單片機的選擇方法。
在了解單片機基本知識的基礎上,詳細講解了單片機的主要開發語言——匯編語言和C51語言;編程語言的使用是單片機和其他集成電路的重要區別,用它來賦給單片機命令,使單片機按照設計者的意志運行命令。
本書也花了一定的篇幅講解了模擬器和編程器的原理和使用說明。編程器和模擬器是單片機項目開發中常用的工具,模擬器是單片機程序調試中很有用的輔助工具,可以逐步地觀察單片機的運行過程,以便發現程序中的錯誤;而編程器是用來將編寫好的程序寫入單片機的工具。除了傳統的模擬器和編程器外,還列舉了一些最新的單片機開發手段,如在線模擬和ISP(在系統編程),這些新的方法大大降低了單片機的開發費用,在線模擬使得設計者不需要去購買昂貴的模擬器,而ISP則替代了編程器,這進一步降低了學習單片機開發的門檻。
在講解這些理論知識的過程中,本書還簡單講述了單片機開發中的一些規范,包括單片機原理圖、PCB圖以及程序設計的設計規范。這在實際工作中是必須了解和遵守的,也是一個單片機設計工程師必須具備的基本知識。
完成了基本知識的學習後,本書由易至難列舉了一些設計實例,這些實例基本上概括了單片機項目設計中遇到的各種問題。
通常,一個單片機系統設計可以分為如下五大方面。
(1)單片機能夠運行的最小系統,包括振盪電路、復位電路以及電源電路。
(2)單片機I/O口的使用方法和定時器、中斷系統的使用。
(3)單片機的通信介面,單片機的通信在單片機設計中是經常遇到的功能,所以必須注意目前單片機系統常用的各種通信介面和協議。
(4)單片機的系統擴展,系統擴展通常可以分為程序存儲器的擴展、數據存儲器的擴展以及單片機I/O口的擴展三部分。
(5)信號轉換介面,主要是A/D、D/A轉換以及PWM的實現。這是單片機信號處理中經常遇到的問題。
前面兩部分是單片機最基本的功能,後面三部分則是單片機的擴展應用,掌握了這些基本知識,便可應對用單片機解決的各種項目。
本書的特點
本書具有知識全面、實例豐富、操作性強的特點,力求以全面、系統的知識和豐富、簡短的實例指導初學者學習單片機各方面的知識。因此,本書適合於開始學習單片機設計和具有一定單片機基礎知識的讀者,目的是使讀者通過本書的學習可以初步掌握單片機的開發應用。
本書安排有「提示」、「注意」、「說明」小欄目,通過這些小欄目可和讀者分享一些經驗和心得,同時也可為讀者清除學習過程中的難點和疑點。
本光碟內容超值豐富,不但提供了書中全部範例的源代碼和電路圖,而且提供了多媒體視頻教學錄像,用以講解如何使用本書光碟中的源代碼,手把手引導讀者直觀深入地學習。
本書閱讀順序
本書章節的安排是依據讀者對單片機學習的過程、以循序漸進的方式建立的,建議初學者從前至後閱讀。
首先閱讀第1章至第7章,這些章節是單片機設計的基礎知識,必須掌握。只有熟讀了這幾章的內容,才能閱讀後面的章節。其中,第3章可以放到完成基本知識的學習後閱讀。
閱讀第8章至第12章,這幾章是講述單片機設計中的一些基本手段和方法,涉及單片機系統設計中的方方面面,掌握這些知識可以解決單片機設計中的大部分問題。
閱讀第13章——綜合實例,它由淺入深、由簡入繁,將前面講解的一些知識應用到實際項目中,可以讓讀者對單片機設計項目有具體的認識。
致謝
經過緊張的策劃、寫作和編寫,本書才得已完稿。在寫作的過程中,得到了參與本書策劃的各位編輯的大力協助;在此,對所有參與該書編輯、出版的老師表示衷心的感謝。
惠 仇
2008.6.28
⑽ 手把手教你學會單片機,宋雪松老師的簡易計算器,怎麼用普中科技單片機實現怎麼接線
/* S16 S12 S8 S4分別是123+
S15 S11 S7 S3分別是456-
S14 S10 S6 S2分別是789*
S13 S9 S5 S1分別是0 CLR = /
*/
/* 實現兩個數的運算,每個數的位數至少可以八位 */
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit rw=P2^5;
sbit rs=P2^6;
sbit e=P2^7;
sbit led=P3^7;
sbit beep=P2^0;
uint8 key,num;
uint8 fuhao;//定義具體的那個符號,是加減還是乘除。
uint8 flag; //定義有沒有按下符號鍵,這個是統稱
long a,b,c,d; //定義運算數據的第一個和第二個及等於的數變數
uint8 k; //定義小數點後面顯示的位數
uint8 biao;
uint8 dat1[]={1,2,3,0x2b-0x30, 4,5,6,0x2d-0x30, 7,8,9,0x2a-0x30, 0,0x01-0x30,0x3d-0x30,0x2b-0x30 };//保存顯示的數據
void delay(uint16 i)
{
while(i--);
}
void lcdwrc(uint8 c)
{
delay(1000);
rs=0;
rw=0;
e=0;
P0=c;
e=1;
delay(1000);
e=0;
}
void lcdwrd(uint8 dat)
{
delay(1000);
rs=1;
rw=0;
e=0;
P0=dat;
e=1;
delay(1000);
e=0;
rs=0;
}
void lcdinit()
{
delay(1500);
lcdwrc(0x38);
delay(500);
lcdwrc(0x38);
delay(500);
lcdwrc(0x38);
delay(500);
lcdwrc(0x38);
lcdwrc(0x08);
lcdwrc(0x01);
lcdwrc(0x06);
lcdwrc(0x0c);
key=0;
num=0;
flag=0;
fuhao=0;
a=0;
b=0;
c=0;
d=0;
biao=0;
led=0;
}
void keyscan()
{
P1=0xfe; //令第一行為0,然後判斷是哪一列按下
if(P1!=0xfe)
{
delay(1000);
if(P1!=0xfe)
{
key=P1&0xf0;
switch(key)
{
case 0xe0: num=0;break; //1
case 0xd0: num=1;break; //2
case 0xb0: num=2;break; //3
case 0x70: num=3;break; //加
}
}
while(P1!=0xfe);
if(num==0||num==1||num==2) //確認第一行的數1,2,3
{
if(flag==0) //沒有按下符號鍵
{
//led=1;
a=a*10+dat1[num];
}
else
{
//led=1;
b=b*10+dat1[num];
}
}
if(num==3)
{
//led=0;
flag=1;
fuhao=1;//加號+
}
lcdwrd(0x30+dat1[num]);
}
P1=0xfd; //令第二行為0,判斷是哪一列按下
if(P1!=0xfd)
{
delay(1000);
if(P1!=0xfd)
{
key=P1&0xf0;
switch(key)
{
case 0xe0: num=4;break; //4
case 0xd0: num=5;break; //5
case 0xb0: num=6;break; //6
case 0x70: num=7;break; //減—
}
}
while(P1!=0xfd);
if(num==4||num==5||num==6)
{
if(flag==0) //沒有按下符號鍵
{
//led=1;
a=a*10+dat1[num];
}
else
{
//led=1;
b=b*10+dat1[num];
}
}
else
{
flag=1;
fuhao=2;//帶表減號
}
lcdwrd(0x30+dat1[num]);
}
P1=0xfb; //令第三行為0,判斷哪一列按下
if(P1!=0xfb)
{
delay(1000);
if(P1!=0xfb)
{
key=P1&0xf0;
switch(key)
{
case 0xe0: num=8;break; //7
case 0xd0: num=9;break; //8
case 0xb0: num=10;break; //9
case 0x70: num=11;break; //乘*
}
}
while(P1!=0xfb);
if(num==8||num==9||num==10)
{
if(flag==0) //沒有按下符號鍵
{
//led=1;
a=a*10+dat1[num];
}
else
{
//led=1;
b=b*10+dat1[num];
}
}
else
{
flag=1;
fuhao=3;//帶表乘號*
}
lcdwrd(0x30+dat1[num]);
}
P1=0xf7; //令第四行為0,判斷哪一列按下
if(P1!=0xf7)
{
delay(1000);
if(P1!=0xf7)
{
key=P1&0xf0;
switch(key)
{
case 0xe0: num=12;break; //0
case 0xd0: num=13;break; //清除rst
case 0xb0: num=14;break; //等號=
case 0x70: num=15;break; //除/
}
}
while(P1!=0xf7);
switch(num)
{
case 12:
if(flag==0) //沒有按下符號鍵
{
//led=1;
a=a*10+dat1[num];
lcdwrd(0x30);
}
else
{
//led=1;
b=b*10+dat1[num];
lcdwrd(0x30);
}
break;
case 13:
lcdwrc(0x01); //清屏指令
a=0;
b=0;
flag=0;
fuhao=0;
break;
case 15:
flag=1;
fuhao=4;
lcdwrd(0x2f);//除號/
break;
case 14:
if(fuhao==1)//加
{
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//設置游標左移,屏幕不移動
c=a+b;
while(c!=0) //一位一位顯示
{
lcdwrd(0x30+c%10);//顯示結果的最後一位在0x4f的位置
c=c/10;//取前面的結果數據
}
lcdwrd(0x3d); //顯示等於號=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}
if(fuhao==2) //減
{
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//設置游標左移,屏幕不移動
if(a>b)
c=a-b;
else
c=b-a;
while(c!=0) //一位一位顯示
{
lcdwrd(0x30+c%10);//顯示結果的最後一位在0x4f的位置
c=c/10;//取前面的結果數據
}
if(a<b) lcdwrd(0x2d); //顯示-號
lcdwrd(0x3d); //顯示等於號=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}
if(fuhao==3)//乘法
{
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//設置游標左移,屏幕不移動
c=a*b;
while(c!=0) //一位一位顯示
{
lcdwrd(0x30+c%10);//顯示結果的最後一位在0x4f的位置
c=c/10;//取前面的結果數據
}
lcdwrd(0x3d); //顯示等於號=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}
if(fuhao==3)//乘法
{
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//設置游標左移,屏幕不移動
c=a*b;
while(c!=0) //一位一位顯示
{
lcdwrd(0x30+c%10);//顯示結果的最後一位在0x4f的位置
c=c/10;//取前面的結果數據
}
lcdwrd(0x3d); //顯示等於號=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}
if(fuhao==4)
{
k=0;
lcdwrc(0x4f+0x80);
lcdwrc(0x04);//設置游標左移,屏幕不移動
c=(long)(((float)a/b)*1000);//強制轉換為long。
while(c!=0) //一位一位顯示
{
k++;
lcdwrd(0x30+c%10);//顯示結果的最後一位在0x4f的位置
c=c/10;//取前面的結果數據
if(k==3)
{
lcdwrd(0x2e);
k=0;
}
}
if(a/b<0) //如果a比b小的話那麼除的結果最高位是0
{
lcdwrd(0x30);
}
lcdwrd(0x3d); //顯示等號
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}
break;
}
}
}
void main()
{
lcdinit();
while(1)
{
keyscan();
}
}