版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 專業(yè)綜合應(yīng)用與工程能力實(shí)踐訓(xùn)練 課程設(shè)計(jì) 電 子 計(jì) 算 器 院 部: 電氣與信息工程學(xué)院 學(xué)生姓名: 李 旭 指導(dǎo)教師: 戴佳陽(yáng) 職稱 講師 專 業(yè): 自動(dòng)化 班 級(jí): 自本1001 完成時(shí)間: 2013年12月 摘 要在我們的學(xué)習(xí)生活中,常會(huì)遇到一些繁雜的計(jì)算,耗費(fèi)我們的時(shí)間,而且,有些計(jì)算過(guò)程復(fù)雜,通過(guò)筆算,難以得到正確的答案,比如說(shuō)ln、sin、cos、tan等,就此我們?cè)O(shè)計(jì)了一款科學(xué)計(jì)算器,便于我們平時(shí)的計(jì)算使用。我們?cè)O(shè)計(jì)的這款計(jì)算器,是具有多功能的,它除了包括了四則運(yùn)算、三角函數(shù)運(yùn)算、開根號(hào)、ln、階乘、求冪、十進(jìn)制與八進(jìn)制轉(zhuǎn)換、十進(jìn)制與十六進(jìn)制轉(zhuǎn)換外,還添加了溫度計(jì)功能,實(shí)現(xiàn)了
2、多功能合與一體的設(shè)計(jì)。伴隨電子行業(yè)的發(fā)展,單片機(jī)在我們的生活中占有舉重輕重的地位,而這個(gè)計(jì)算器正是基于單片機(jī)來(lái)設(shè)計(jì)的,所以這次的設(shè)計(jì)真正的達(dá)到了學(xué)以致用效果,也很具有現(xiàn)實(shí)意義。關(guān)鍵字:計(jì)算器;溫度計(jì);單片機(jī)abstractwe always meet some multifarious computation in our school life which take lots of our time. whats more, some calculation process, such as ln, sin, cos, tan and so on, is so complicated tha
3、t through the manual computation, we get low efficiency and probability. thus, we design a calculator to facilitate our usual calculation. the calculator is of multiple function and realizes multi function in one, which adds the thermometer function, as well as the stopwatch function, except for the
4、 four operations, the operation of trigonometric function, open radical sign, ln, factorial, exponentiation, decimal and octal, decimal and hexadecimal conversion. with the development of electronics industry, single chip computer (scm) plays a more and more important role in our life. the design of
5、 this calculator is based on scm. that is to say, this design put what we learn into practice, and also it has practical significance. key words: calculator;thermometer;single chip computer目 錄1 計(jì)算器任務(wù)、功能要求說(shuō)明及總體方案介紹1 1.1 計(jì)算器任務(wù)1 1.2 功能要求說(shuō)明1 1.3 計(jì)算器設(shè)計(jì)總體方案介紹及工作原理說(shuō)明12 計(jì)算器硬件系統(tǒng)的設(shè)計(jì)2 2.1 計(jì)算器硬件系統(tǒng)各模塊的簡(jiǎn)要介紹2 2.1.
6、1 計(jì)算器鍵盤輸入模塊2 2.1.2 計(jì)算器lcd1602顯示輸出模塊2 2.1.3 溫度計(jì)模塊3 2.1.4 at89s52單片機(jī)模塊42.2 電路原理圖、pcb圖、元器件布局圖42.3 設(shè)計(jì)課題元器件清單53 計(jì)算器軟件系統(tǒng)的設(shè)計(jì)6 3.1 計(jì)算器使用單片機(jī)資源的情況6 3.2 設(shè)計(jì)課題軟件系統(tǒng)各模塊功能簡(jiǎn)要介紹6 3.3 流程框圖7 3.4 程序清單74 仿真結(jié)果、設(shè)計(jì)結(jié)論84.1 計(jì)算器模塊的仿真8 4.1.1 按鍵輸入并計(jì)算計(jì)算器基本運(yùn)算加減乘除:8 4.1.2 按鍵輸入并計(jì)算基本運(yùn)算三角函數(shù)sin,cos,tan:8 4.1.3 按鍵輸入并計(jì)算基本運(yùn)算開根號(hào)9 4.1.4 按鍵輸入
7、并轉(zhuǎn)化八進(jìn)制,十六進(jìn)制94.2 溫度計(jì)模塊的仿真94.3 計(jì)算器的使用說(shuō)明94.4 設(shè)計(jì)心得10結(jié)束語(yǔ)11致 謝12參考文獻(xiàn)13附錄a 電路原理圖14附錄b pcb圖15附錄c 元器件布局圖16附錄e 程序清單18附錄f 實(shí)物圖34附錄g protues仿真圖341 計(jì)算器任務(wù)、功能要求說(shuō)明及總體方案介紹1.1 計(jì)算器任務(wù) 設(shè)計(jì)一個(gè)具有特定功能的計(jì)算器。該計(jì)算器上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“p.”,進(jìn)入準(zhǔn)備工作狀態(tài)。能實(shí)現(xiàn)(1)基本的加、減、乘、除、平方、開方;(2)三角函數(shù)運(yùn)算;(3)十進(jìn)制、十六進(jìn)制轉(zhuǎn)換運(yùn)算;(4)溫度計(jì)1.2 功能要求說(shuō)明能夠正確無(wú)誤的進(jìn)行基本的四則運(yùn)算、平方、開
8、方、三角函數(shù)、十進(jìn)制、十六進(jìn)制等運(yùn)算,并且能夠進(jìn)行溫度的測(cè)量。1.3 計(jì)算器設(shè)計(jì)總體方案介紹及工作原理說(shuō)明 以單片機(jī)作為總體核心部件,以 lcd1602液晶顯示屏為輸出部分以及自行設(shè)計(jì)的2*14鍵盤、18b20為溫度測(cè)試芯片等為外圍電路為輔助部分進(jìn)行本次課題的設(shè)計(jì)。 從鍵盤進(jìn)行數(shù)據(jù)的編輯輸入到單片機(jī)中,以設(shè)計(jì)好的軟件進(jìn)行相應(yīng)的運(yùn)算,然后再?gòu)膯纹瑱C(jī)中輸出到lcd1602液晶顯示屏芯片中,運(yùn)算結(jié)果進(jìn)行顯示;對(duì)于溫度模塊而言,以18b20芯片對(duì)環(huán)境溫度進(jìn)行測(cè)量,然后通過(guò)外圍電路輸送到單片機(jī)進(jìn)行處理,再送給lcd1602液晶顯示芯片進(jìn)行輸出。如下圖所示: 18b20溫度測(cè)量 鍵盤輸入 at89s52單
9、片機(jī) 1602輸出 圖1 原理框圖2 計(jì)算器硬件系統(tǒng)的設(shè)計(jì)2.1 計(jì)算器硬件系統(tǒng)各模塊的簡(jiǎn)要介紹2.1.1 計(jì)算器鍵盤輸入模塊由于計(jì)算器設(shè)計(jì)中計(jì)算器要實(shí)現(xiàn)sin,cos,tan等功能的計(jì)算,按傳統(tǒng)4*4鍵盤按鍵不能達(dá)到本次的設(shè)計(jì)要求,所以利用8-3編碼器74ls148來(lái)實(shí)現(xiàn)2*14鍵盤的應(yīng)用。2.1.2 計(jì)算器lcd1602顯示輸出模塊液晶屏lcd1602接線是利用10k排阻將d0d8腳與電源正極連接,在單片機(jī)p00p07口無(wú)輸出時(shí)將無(wú)輸出的引腳電頻置“1”,以實(shí)現(xiàn)lcd的顯示功能。lcd1602共有16個(gè)引腳,其功能如表1所示。圖2 lcd1602顯示屏表1 lcd1602引腳功能表2.1.
10、3 溫度計(jì)模塊溫度計(jì)模塊用的是溫度傳感器ds18b20利用溫度傳感器溫度感知送入單片機(jī)at89s52的p3.7口(第17引腳),通過(guò)編程把結(jié)果輸出到顯示屏lcd1602中。如下圖所示圖3 ds18b202.1.4 at89s52單片機(jī)模塊 at89s52單片機(jī)工作原理與引腳與我們所學(xué)的at89c51基本相同,只是at89s52的存儲(chǔ)空間比at89c51大了一倍,變成了8k。其引腳圖如下所示:圖4 at89s52引腳圖2.2 電路原理圖、pcb圖、元器件布局圖 原理圖見附錄a、pcb圖見附錄b、元器件布局圖見附錄c2.3 設(shè)計(jì)課題元器件清單表2 元件清單at89s52芯片1個(gè)ds18b20傳感器
11、1個(gè)lcd1602液晶顯示屏1個(gè)按鍵開關(guān)29個(gè)74ls00芯片3個(gè)10k電阻14個(gè)排阻1個(gè)200歐電阻1個(gè)74ls148芯片2個(gè)20uf極性電容1個(gè)22pf電容2個(gè)晶振片1個(gè)3 計(jì)算器軟件系統(tǒng)的設(shè)計(jì)3.1 計(jì)算器使用單片機(jī)資源的情況本次計(jì)算器的設(shè)計(jì)中,單片機(jī)的p1口和p2.0口以及p2.1口被用作了鍵盤的掃描和輸入所占用。p0口和p2.5、p2.6以及p2.7口連接lcd1602作為信息的輸出,p3.2口用作外部中斷信號(hào)的輸入,xtal1與xtal2接外部晶振電路,rst接復(fù)位電路。3.2 設(shè)計(jì)課題軟件系統(tǒng)各模塊功能簡(jiǎn)要介紹 (1)void delayms(uint n) ,為毫秒延時(shí)子程序,
12、可以達(dá)到延時(shí)的功能,其中的uint n,為延時(shí)所設(shè)定的延時(shí)時(shí)間,單位為ms。 (2)void delayus(uchar us) 、void tmpdelay(int u),為微秒延時(shí)子程序,可以達(dá)到延時(shí)的功能,其中的uint us,為延時(shí)所設(shè)定的延時(shí)時(shí)間,單位為us。 (3)uchar read_lcd_state(),為讀lcd的子程序,將單片機(jī)的信息通過(guò)lcd1602顯示輸出。 (4)void lcd_busy_wait(),為lcd1602的等待子程序。 (5)void write_lcd_data(uchar dat),為lcd1602寫的子程序,將單片機(jī)的輸出信息,寫入到lcd的寄
13、存器中。 (6)void lcd_init(),為lcd的初始化子程序,用于開機(jī)及復(fù)位lcd的初始化。 (7)void set_lcd_pos(uchar p),為lcd的位置設(shè)置子程序。 (8)void lcd_string(uchar p,uchar *s),為lcd的寫程序自程序。 (9)void initial()、void inter0() interrupt 0為開中斷子程序。 (10)uint keyscan(),為鍵盤掃描子程序,對(duì)鍵盤進(jìn)行數(shù)據(jù)的輸入。 (11)void abc(uint t),為操作子線程。 (12)void jsq_init(),為計(jì)算器初始化子程序。 (1
14、3)void out(),為計(jì)算器輸出子程序。 (14)void init_ds18b20(),為18b20的初始化子程序。 (15)void readtemp(),為溫度讀取子程序。 (16)void tem_bcd(),為溫度轉(zhuǎn)換bcd子程序。 (17)void use(),為功能選擇子程序。 (18)void main(),為主程序。3.3 流程框圖 見附錄d所示。3.4 程序清單見附錄e所示。4 仿真結(jié)果、設(shè)計(jì)結(jié)論4.1 計(jì)算器模塊的仿真在打開計(jì)算器之后或按功能復(fù)位鍵后將直接進(jìn)入功能選則提示0or1,待提示信息消失,按鍵“0”+“=”進(jìn)入計(jì)算器功能。4.1.1 按鍵輸入并計(jì)算計(jì)算器基本
15、運(yùn)算加減乘除: 圖5 (注:+加法;-:減法;*:乘法;/:除法)4.1.2 按鍵輸入并計(jì)算基本運(yùn)算三角函數(shù)sin,cos,tan: 圖6 (s:sin函數(shù);c:con函數(shù);t:tan函數(shù))4.1.3 按鍵輸入并計(jì)算基本運(yùn)算開根號(hào),階乘,x的y次方,ln等運(yùn)圖7 (注:屏幕上顯示#:開根號(hào);$:階乘;y:x的y次方;k:以e為底的對(duì)數(shù);)4.1.4 按鍵輸入并轉(zhuǎn)化八進(jìn)制,十六進(jìn)制圖8 (x:八進(jìn)制轉(zhuǎn)換;x:十六進(jìn)制轉(zhuǎn)換)4.2 溫度計(jì)模塊的仿真在打開計(jì)算器之后火按功能復(fù)位后將直接進(jìn)入功能選擇提示0or1,按鍵“1”+“=”進(jìn)入計(jì)算器功能。如下圖所示:圖9 溫度模塊4.3 計(jì)算器的使用說(shuō)明首先,
16、將電源的總開關(guān)打開,然后顯示屏就會(huì)有如下圖所示: 圖10 然后就會(huì)顯示功能選擇提示,如下圖所示:圖110 是計(jì)算器模塊,1是溫度計(jì)模塊,等到清屏后,由用戶自己選擇輸入0或者1,以“=”為確認(rèn)建,如下圖所示:圖12就分別進(jìn)入了相對(duì)應(yīng)的功能模塊中去了,然后便可以進(jìn)行相應(yīng)的運(yùn)算或溫度檢測(cè)了。4.4 設(shè)計(jì)心得通過(guò)本次課程設(shè)計(jì),我們懂得了要完成一個(gè)電路的設(shè)計(jì),理論基礎(chǔ)是根基,實(shí)踐操作是完成事物的重要部分,而創(chuàng)新能力則決定了一個(gè)電路的價(jià)值,因?yàn)樵O(shè)計(jì)一個(gè)電路,絕不是簡(jiǎn)單的按課本的電路圖進(jìn)行焊接成型,我們要進(jìn)行電路各個(gè)元件參數(shù)的計(jì)算,這個(gè)涉及我們所掌握的理論知識(shí),元件的計(jì)算是設(shè)計(jì)中較為重要的一部分,計(jì)算準(zhǔn)了,
17、則設(shè)計(jì)出來(lái)的電路誤差不大,否則,設(shè)計(jì)出來(lái)的電路性能指標(biāo)根要求相差甚遠(yuǎn)。最困難的是當(dāng)電路出現(xiàn)問(wèn)題時(shí)如何檢測(cè)出錯(cuò)誤之處,如何排除錯(cuò)誤,它考驗(yàn)了我們?nèi)绾芜\(yùn)用理論知識(shí)和實(shí)際的調(diào)試的能力,另外,通過(guò)這次課程設(shè)計(jì),我掌握了常用元件的識(shí)別和測(cè)試,熟悉了常用的儀器,了解了電路的連接,焊接方法,鞏固了基礎(chǔ),提高了實(shí)際操作技能,并養(yǎng)成注重設(shè)計(jì),追求創(chuàng)新的思維習(xí)慣??偠灾?,這次課程設(shè)計(jì)極大的提高我們?cè)陔娮与娐贩矫娴母黜?xiàng)能力。 結(jié)束語(yǔ) 課程設(shè)計(jì)結(jié)束了,但是從中學(xué)到的知識(shí)會(huì)讓我終身受益。設(shè)計(jì)過(guò)程,好比是我們?nèi)祟惓砷L(zhǎng)的歷程,常有一些不如意,能免回遇到各種各樣的問(wèn)題。在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)
18、理解得不夠深刻,掌握的不夠廖谷。我們通過(guò)查閱大量有關(guān)資料,并在小組中互相討論,交流經(jīng)驗(yàn)和自學(xué),若遇到是在搞不明白的問(wèn)題就會(huì)及時(shí)請(qǐng)教老師,了解自身存在的不足之處,雖然感覺理論上已經(jīng)掌握,但在運(yùn)用到實(shí)踐的過(guò)程中仍有意想不到的困后,經(jīng)過(guò)一番努力才得以解決。這也激發(fā)了我今后努力學(xué)習(xí)的興趣,我想著將對(duì)我以后的學(xué)習(xí)產(chǎn)生積極的影響。通過(guò)這次課程設(shè)計(jì),我也懂得了學(xué)習(xí)的重要性,了解到理論知識(shí)與實(shí)踐相結(jié)合的重要意義,學(xué)會(huì)了堅(jiān)持、耐心、和努力,這將為自己今后的學(xué)習(xí)和工作做出了最好的榜樣。致 謝 大學(xué)兩年半,這次課程設(shè)計(jì)是我們這大學(xué)期間干的最有意義的事之一。從最初的選題,到寫課程設(shè)計(jì)直到完成課程設(shè)計(jì)。其間,查找資料,
19、老師指導(dǎo),與同學(xué)交流,反復(fù)修改設(shè)計(jì),每一個(gè)過(guò)程都是對(duì)自己能力的一次檢驗(yàn)獲很多,比如學(xué)會(huì)了查找相關(guān)資料相關(guān)標(biāo)準(zhǔn),分析數(shù)據(jù),提高了自己的制作能力。開始著手計(jì)算器設(shè)計(jì)的制作,一步一步的做下來(lái)。等做好設(shè)計(jì)的時(shí)候才發(fā)現(xiàn)這是個(gè)美好的過(guò)程,也不枉費(fèi)我們對(duì)這次設(shè)計(jì)花的時(shí)間和精力。其實(shí)這么一次的鍛煉可以學(xué)到書本里許多學(xué)不到的知識(shí),堅(jiān)韌、獨(dú)立、思考等。 但是課程設(shè)計(jì)也暴露出我專業(yè)基礎(chǔ)的很多不足之處。比如缺乏綜合應(yīng)用專業(yè)知識(shí)的能力,對(duì)材料的不了解等等。這次實(shí)踐是對(duì)單片機(jī)及數(shù)電,模電知識(shí)所學(xué)和充實(shí)。通過(guò)這次實(shí)踐,我們了解了計(jì)算器工作原理,熟悉了計(jì)算器的設(shè)計(jì)步驟,鍛煉了設(shè)計(jì)實(shí)踐能力,培養(yǎng)了我的設(shè)計(jì)能力。此設(shè)計(jì)是對(duì)我們專
20、業(yè)知識(shí)和專業(yè)基礎(chǔ)知識(shí)一次實(shí)際檢驗(yàn)和鞏固。 感謝所有支持和幫助過(guò)我的同學(xué)和老師!謝謝你們的關(guān)照與寬容,與你們一起走過(guò)的繽紛時(shí)代,將會(huì)是我一生最珍貴的回憶。 此外,我還要感謝在我們的課程設(shè)計(jì)中所有被援引過(guò)的文獻(xiàn)的作者們,他們是我們的知識(shí)之源! 最后,再次向所有給予我們幫助和鼓勵(lì)的同學(xué)和老師致以最誠(chéng)摯的謝意!參考文獻(xiàn)1馬忠梅,籍順心,張凱,馬巖.單片機(jī)的c語(yǔ)言應(yīng)用程序設(shè)計(jì)m.北京:北京航空航天大學(xué)出版社,2006ma zhongmei,j, zhang kai, mayan. mcu c language program design m .beijing: beijing aerospace un
21、iversity press, 20062李廣弟,朱月秀,冷祖祁.單片機(jī)基礎(chǔ)m.北京:北京航空航天大學(xué)出版社,2007 li guangdi, zhuyuexiu, leng zuqi. microcontroller m .beijing: beijing university of aeronautics and press, 2007 3李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)m.北京:北京航空航天大學(xué)出版社,2004.9 li guangfei. this course design example guide m .beijing: beijing university of aeronaut
22、ics and press, 2004.9 4邢增平.protel 99 se設(shè)計(jì)專家指導(dǎo)m.北京:中國(guó)鐵道出版社,2004 xing zengping. protel 99 se design expert guidance m .beijing:china railway publishing house, 2004 附錄a 電路原理圖附錄b pcb圖圖14 pcb頂層圖15 pcb底層附錄c 元器件布局圖圖16 pcb頂層絲印層附錄d 程序流程框圖 開始 附錄e 程序清單#include #include #include #include #define _nop() _nop_()
23、/定義空指令#define uchar unsigned char /宏定義無(wú)符號(hào)型字符變量#define uint unsigned int /宏定義無(wú)符號(hào)整形變量sbit dq =p37; /ds18b20溫度sbit rs =p26; /1602寄存器sbit rw =p25; /1602讀/寫sbit en =p27; /1602使能sbit spk=p24; /蜂鳴器sbit ff=p20; sbit gg=p21;code uchar mayuan28=1,2,3,c,4,5,6,s,7,8,9,t,n,0,.,=,+,-,*,/,#,y,x,x,%,!,$,k;uchar cod
24、e keycode28=0x78,0xb8,0x47,0x87,0x70,0xb0,0x46,0x86,0x68,0xa8,0x45,0x85,0x60,0xa0,0x44,0x84,0x58,0x98,0x43,0x83,0x50,0x90,0x42,0x82,0x48,0x88,0x81,0x41;/ /鍵盤編碼值()uchar code mcuexp= 51_mcu exp ;uchar code welcome= welcome! ;/*定義全局變量*/bit flag;int j,t,zz=0;float c=0;char m,g=0,f=0,i,e=0,d=0,k=0,z=0;ch
25、ar date115; /要操作的數(shù) /計(jì)算器輸出值的各位/* 延時(shí)函數(shù)*/void delayms(uint n) /毫秒延時(shí)子函數(shù) uint i=0,j=0; /付循環(huán)初始值 for (i=n;i0;i-) /循環(huán)嵌套延時(shí) for (j=246;j0;j-); void delayus(uchar us) /微秒延時(shí)子函數(shù)while(us-); /*/* lcd1602程序模塊 */*/uchar read_lcd_state() /讀lcd狀態(tài)uchar state; rs=0; /關(guān)閉1602的寄存器 rw=1; /將1602的讀/寫端置1,進(jìn)行讀操作en=1; /打開1602的使能端
26、delayms(1); /延時(shí)1毫秒state=p0; /將p0口的狀態(tài)輸入到lcden=0; /關(guān)閉1602的使能delayms(1); /延時(shí)1毫秒return state;void lcd_busy_wait() /忙則等待while(read_lcd_state()&0x80)=0x80); /判斷是否忙delayms(5); /延時(shí)5毫秒void write_lcd_data(uchar dat) /lcd寫數(shù)據(jù)子函數(shù)lcd_busy_wait(); /判斷l(xiāng)cd是否忙,忙則等rs=1; /打開1602的寄存器 rw=0; /打開1602的寫 en=0; /關(guān)閉使能端 p0=dat;
27、 /將數(shù)據(jù)寫出en=1; /開使能端delayms(1); /延時(shí)1毫秒en=0; /關(guān)使能端void write_lcd_com(uchar i) /lcd寫指令lcd_busy_wait(); /判斷l(xiāng)cd是否忙,忙則等rs=0; /關(guān)閉1602寄存器rw=0; /打開1602的寫en=0; /關(guān)閉使能端p0=i; /將數(shù)據(jù)輸出en=1; /打開使能端delayms(1); /延時(shí)1毫秒en=0; /關(guān)閉使能端 void lcd_init() /lcd初始化 write_lcd_com(0x38); /顯示模式設(shè)置 delayms(1); /延時(shí)1毫秒 write_lcd_com(0x38
28、); /顯示模式設(shè)置 delayms(1); /延時(shí)1毫秒 write_lcd_com(0x08); /顯示關(guān)閉 delayms(1); /延時(shí)1毫秒 write_lcd_com(0x01); /顯示清屏 delayms(1); /延時(shí)1毫秒 write_lcd_com(0x06); /顯示光標(biāo)移動(dòng)設(shè)置 delayms(1); /延時(shí)1毫秒 write_lcd_com(0x0c); /顯示開及光標(biāo)設(shè)置void set_lcd_pos(uchar p) /*設(shè)置lcd位置*/write_lcd_com(p|0x80); /清屏void lcd_string(uchar p,uchar *s) /
29、*lcd寫程序*/uchar i; set_lcd_pos(p); /*設(shè)置lcd位置*/for(i=0;i16;i+) /循環(huán)寫入數(shù)據(jù)write_lcd_data(si);delayms(5); /延時(shí)5毫秒void initial() /*開中斷*/ea=1; /總開關(guān) ex0=1; /中斷方式0開啟it0=0; / /設(shè)置中段方式為電平觸發(fā)方式uint keyscan() uint i;uchar temp;ff=1;gg=0;delayms(10); /延時(shí)if(p1!=0x40) /有鍵按下temp=p1; /保存鍵盤此刻的鍵植delayms(10); /延時(shí)while(p1!=0x
30、40); /松手檢測(cè)ff=0;gg=1;delayms(10); /延時(shí)if(p1!=0x80) /有鍵按下temp=p1;delayms(5); /延時(shí)5毫秒while(p1!=0x80); /松手檢測(cè) for(i=0;i0)write_lcd_com(0x10); /屏幕后退一位 z-; /數(shù)組減一位if(mayuant!=n&mayuant!=&mayuant!=%&mayuant!=!)date1z+=mayuant; /把輸入的數(shù)放在數(shù)組中write_lcd_data(mayuant); /把輸入的數(shù)顯示在lcd上if(z14)lcd_string(0x40,error); /提示輸
31、入太多void inter0() interrupt 0 /*中斷函數(shù)*/uint n;delayms(10); /延時(shí)if(int0=0) /有鍵按下n=keyscan();ff=0; /中段前提條件gg=0;abc(n); /調(diào)用操作子程序void jsq_init() /*計(jì)算器初始化*/ uint s;en=1; /開使能端lcd_init(); /對(duì)lcd進(jìn)行初始化 e=0; d=0; m=0;z=0;c=0; for(s=0;s15;s+) date1s=0;double fun3(int a) /*求階層函數(shù)*/int sum=1,i;double dd;for(i=1;i=a;
32、i+)sum*=i;dd=(double)sum; /將snm轉(zhuǎn)化成小數(shù)形式return (dd);void fun2(double p) /*16進(jìn)制轉(zhuǎn)換函數(shù)*/char a15,j;int i=0;long h;h=(long)p; /對(duì)p進(jìn)行強(qiáng)制轉(zhuǎn)化if(h=0) /判斷要轉(zhuǎn)換的數(shù)是否為0a0=0+48; /將0的bcd碼存入數(shù)組set_lcd_pos(0x40); /lcd屏幕的輸出位置設(shè)置write_lcd_data(a0);/將數(shù)據(jù)(要輸出的字符)寫到lcd的寄存器中while(h!=0) /對(duì)不為0的轉(zhuǎn)化j=h%16; /將被轉(zhuǎn)化數(shù),除以16取余h=h/16; /將被除數(shù)除以16
33、(短除法相同)if(j9) /判斷轉(zhuǎn)換后的數(shù)據(jù)是否大于10 ai=j+55; /將轉(zhuǎn)化后的數(shù)據(jù)轉(zhuǎn)換成字符型i+;set_lcd_pos(0x40); /lcd輸出位置設(shè)置while(i0) write_lcd_data(a-i); /將數(shù)據(jù)寫入到lcd的寄存器中zz+;void fun1(double p) / *8進(jìn)制轉(zhuǎn)換函數(shù)*/char a15,i=0;long h;h=(long)p;if(h=0) /判斷要轉(zhuǎn)換的數(shù)據(jù)是否為0a0=0+48; /為0則,將0的字符型存入數(shù)組set_lcd_pos(0x40); /lcd輸出位置設(shè)置write_lcd_data(a0); /將數(shù)據(jù)寫入到lc
34、d的寄存器中 while(h!=0) /對(duì)不為0的轉(zhuǎn)化ai=h%8+48; /將轉(zhuǎn)化后的數(shù)據(jù)轉(zhuǎn)換成字符型h=h/8; /將被除數(shù)除以8(和短除法相同)i+;set_lcd_pos(0x40); /lcd輸出位置設(shè)置while(i0)write_lcd_data(a-i); /將數(shù)據(jù)寫入到lcd的寄存器中zz+;void def() /*算術(shù)函數(shù)*/int s;uchar *q,*p,i;char e=0,g,t=1;double f,a=0,b=0,j; /*f為小數(shù)位*/p=date1;if(date10=-) /判斷是否為負(fù) t=0-1;p+; /指向下一位for(q=p;*q=0;q+)
35、 /*計(jì)算a的值*/a=a*10+(*q-48); /將轉(zhuǎn)化后的數(shù)據(jù)轉(zhuǎn)換成字符型 if(*q=.)q+;for(;*q=0;q+) /計(jì)算a的小數(shù)部分e+;f=(*q-48);for(g=0;g=0&*q=9;q+) /*計(jì)算b的整數(shù)部分值*/b=b*10+(*q-48);e=0;if(*q=.) /第二個(gè)數(shù)帶小數(shù)點(diǎn)q+;for(;*q=0;q+) /計(jì)算第二個(gè)數(shù)小數(shù)部分e+;f=(*q-48);for(g=0;ge;g+)f=f/10;b=b+f;for(i=0;i15;i+) /把存放輸入數(shù)的數(shù)組請(qǐng)0date1i=0;j=a/180*(3.1415); /把a(bǔ)的值轉(zhuǎn)換成弧度,方便三角函數(shù)運(yùn)
36、用s=(int)a; /把a(bǔ)的值強(qiáng)制轉(zhuǎn)換成整形 switch (m) /判斷具體要操作的步驟,并進(jìn)行相關(guān)操作case c : c=cos(j); break; /進(jìn)行cos運(yùn)算case s : c=sin(j); break; /進(jìn)行sin運(yùn)算case t : c=tan(j); break; /進(jìn)行tan運(yùn)算case + : c=a+b; break; /進(jìn)行加法運(yùn)算case - : c=a-b; break; /進(jìn)行減法運(yùn)算case * : c=a*b; break; /進(jìn)行乘法運(yùn)算case / : c=a/b; break; /進(jìn)行除法運(yùn)算case # : c=sqrt(a); brea
37、k; /進(jìn)行開根號(hào)運(yùn)算case y : c=pow(a,b); break; /求x的y次方case x : fun1(a); break; /進(jìn)行8進(jìn)制轉(zhuǎn)換case x : fun2(a); break; /進(jìn)行16進(jìn)制轉(zhuǎn)換case k : c=log(a); break; /ln計(jì)算case $ : c=fun3(s); break; /階乘運(yùn)算default : write_lcd_com(0x01); /把lcd顯示屏清屏lcd_string(0x00,error); /沒有相關(guān)操作,提示錯(cuò)誤void out() /計(jì)算器輸出操作函數(shù)*/double b,j,m;char z=0,i,g,p,k=0;char l15,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生物制藥企業(yè)存貨質(zhì)押貸款合同3篇
- 2025年度舞臺(tái)租賃服務(wù)合同下載3篇
- 2025年度大型商場(chǎng)DJ現(xiàn)場(chǎng)表演及音響租賃合同2篇
- 二零二五版危險(xiǎn)品倉(cāng)儲(chǔ)安全協(xié)議合同3篇
- 2024聯(lián)合研發(fā)合同3篇帶眉腳
- 2025年度夾板加工及銷售一體化合同范本4篇
- 二零二五版銀行存款賬戶資金調(diào)撥與監(jiān)管合同3篇
- 2025年新型投影顯示屏銷售合同3篇
- 二零二五年度玩具OEM委托生產(chǎn)合同示范文本3篇
- 二零二五年度按摩養(yǎng)生館安全管理與應(yīng)急預(yù)案合同3篇
- 2025年經(jīng)濟(jì)形勢(shì)會(huì)議講話報(bào)告
- 北師大版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)第五單元《周長(zhǎng)》測(cè)試卷(含答案)
- 國(guó)家安全責(zé)任制落實(shí)情況報(bào)告3篇
- 2024年度順豐快遞冷鏈物流服務(wù)合同3篇
- 六年級(jí)下冊(cè)【默寫表】(牛津上海版、深圳版)(漢譯英)
- 合同簽訂培訓(xùn)
- 新修訂《保密法》知識(shí)考試題及答案
- 電工基礎(chǔ)知識(shí)培訓(xùn)課程
- 鐵路基礎(chǔ)知識(shí)題庫(kù)單選題100道及答案解析
- 金融AI:顛覆與重塑-深化理解AI在金融行業(yè)的實(shí)踐與挑戰(zhàn)
- 住宅樓安全性檢測(cè)鑒定方案
評(píng)論
0/150
提交評(píng)論