基于單片機的簡易收款機的設計
《基于單片機的簡易收款機的設計》由會員分享,可在線閱讀,更多相關《基于單片機的簡易收款機的設計(34頁珍藏版)》請在裝配圖網上搜索。
1、IXXXXXXXXXX 大學本科畢業(yè)設計大學本科畢業(yè)設計基于單片機的簡易收款機的設計學生姓名學生姓名 所所 在在 系系專業(yè)名稱專業(yè)名稱班班 級級學學 號號指導教師指導教師II基于單片機的簡易收款機的設計學生: 指導教師:內容摘要內容摘要: :隨著全球信息化的發(fā)展,人們的生活水平也不斷在提高,人們所需要的商品也越來越多,各大規(guī)模的超市也隨之涌現,超市里的商品品種和數量數不勝數,以致于不可能完全依靠人來管理。本設計正是基于此,解決超市人工收款任務不方便的問題.本設計是基于 Atmel 公司 AT89C51 的簡易超市收款機控制的設計。通過 4X4 矩陣鍵盤,液晶顯示器(字符型 1602) ,串行鐵
2、電存貯器(24C64) ,串行通訊口和單片機(AT89C51)的配合,以程控的方式完成收款的目的,系統(tǒng)采用 Atmel 公司 1989 年生產的 AT89C51 單片機為核心控制器,完成簡易超市收款機的基本功能。通過矩陣鍵盤輸入商品號,系統(tǒng)經過一系列的分析處理,輸出商品號,數量,單價和總價等基本信息.關鍵詞關鍵詞: 矩陣鍵盤 字符型液晶顯示 鐵電存貯 I2CIIISimple cash register based on single-designAbstractAbstract: With the development of global information, peoples livi
3、ng standards have also continued to improve, people need more and more merchandise, the large-scale supermarkets also the emergence of the supermarket variety and quantity of merchandise just to name a few that do not may completely rely on to manage people. The design is based on this, the settleme
4、nt of receivables design artificial supermarket. through the 4X4 matrix keyboard, liquid crystal display (character 1602), serial ferroelectric memory (24C64), using Atmel Corporation 1989 production AT89C51 single-chip microcomputer as the core controller, complete the summary of the basic function
5、s of supermarket cash registers, through the matrix keyboard input No. merchandise, the system through a series of analytical processing, the output of goods number, quantity, unit price, total price of such basic information.Key words:Matrix keyboard character LCD ferroelectric memory I2CIV目 錄一一、引言
6、、引言 .1 1(一)本設計的背景.1(二)本設計的目的和意義.1二、總體方案設計二、總體方案設計 .2 2(一)方案設計.2(二)方案論證與選擇.2三、系統(tǒng)硬件電路設計三、系統(tǒng)硬件電路設計 .4 4(一)單片機及其外圍電路設計.4(二)鍵盤電路的設計.5(三) 、顯示電路的設計.6(四)存儲器電路的設計.10(五)串行通信接口電路的設計.12四、系統(tǒng)軟件程序設計四、系統(tǒng)軟件程序設計 .1414(一)單片機內部數據處理程序.14(二)鍵盤處理程序.15(三)LCD 液晶顯示程序 .16(四)串口通信程序.17(五)存儲器程序.18五、設計總結五、設計總結 .1919六、致謝六、致謝 .1919
7、附錄附錄 .2020附錄一 硬件原理圖.20附錄二 硬件 PCB 圖.21附錄三 原程序代碼.22參考文獻參考文獻 .30301一、引言、引言(一)本設計的背景當前,單片機被廣泛地應用于人們生活的各個領域。單片機實際就是一臺微型計算機,雖然功能沒有普通的計算機那么強大,可是它的體積很小,在很多場合下普通計算機不能完成的工作,單片機卻能出色的完成。單片機是一種集成電路芯片,采用超大規(guī)模技術把具有數字處理能力(如算術運算,邏輯運算,數據傳送,中斷處理)的微處理器(CPU) ,隨機存取數據存儲器(RAM) ,只讀程序存儲器(ROM) ,輸入輸出電路(I/O 口) ,可能還包括定時計數器,串行通信口(
8、SCI) ,顯示驅動電路(LCD 或 LED 驅動電路) ,脈寬調制電路(PWM) ,模擬多路轉換器及 A/D 轉換器等電路集成到一塊單塊芯片上,構成一個最小然而完善的計算機系統(tǒng)。由此來看,單片機有著微處理器所不具備的功能,它可單獨地完成現代工業(yè)控制所要求的智能化控制功能,這是單片機最大的特征。單片機在外觀上與常見的集成電路塊一樣,體積很小,多為黑色長條狀,條狀兩側各有一排金屬引腳,可與外電路連接。只需在電路中添加少許元器件,通過編寫程序就可以實現多種功能的單片機自動控制。比如說,單片機接上鍵盤可以進行信號輸入;接上顯示器可以實現數據顯示;接上喇叭可以實現聲音輸出等等。由于單片機體積小巧、功能
9、強大、應用靈活、價格便宜,所以應用十分廣泛。隨著人們的生活水平的不斷提高,對各種圍繞人們生活圈的設備要求也是越來越高,同時隨著工業(yè)化大發(fā)展,一切家用設備、工業(yè)設備和商業(yè)設備都要求智能化,傻瓜化,比如說數碼相機,全自動洗衣機,電冰箱等;工業(yè)自動化設備,那就是太多了,數控機床,智能化生產線等等;商業(yè)設備也是一樣,自動取款機,自動條碼檢測系統(tǒng),自動收款機等等。伴隨著人們生活水平的提高,人們所需要的必須品也越來越多,各種規(guī)模的超市也數不勝數,超市里的商品品種和數量也太多,以致于不可能完全用人來管理。本設計正是基于此,研究超市現在流行的簡易收款機。(二)本設計的目的和意義超市收款機的主要任務就是,將各種
10、商品的基本信息存貯起來,當識別到外部輸入的商品后,自動調出相關信息,比如說,商品的名稱,商品貨號,商品單價,商品數量。通過用單價來乘上相應的商品的數量,計算出商品總價,來達到收款的目的,完成整個收款的過程。根據上述,本設計的目的就是要完成超市收2款機簡單的基本信息存貯,鍵盤輸入數據,顯示器顯示相關內容,數據能夠和PC 機通信的功能。二、總體方案設計(一)方案設計總體電路設計應該完成五個部分電路:1、單片機及外圍電路,2、鍵盤電路,3、顯示電路,4、存儲器電路,5、串行通信接口電路。單片機采用較流行的八位機 AT89C51,根據內部的特性,完全能滿足功能要求;因為需要輸入的數字量比較多,所以鍵盤
11、采用 4X4 矩陣鍵盤;顯示器使用液晶顯示器;存儲器采用鐵電存儲器,操作方便,可靠,掉電可保存數據。圖 1 為電路組成框圖。單片機AT89C51矩陣鍵盤數據存儲器LCD顯示器串行通信口圖 1 系統(tǒng)組成框圖(二)方案論證與選擇1鍵盤模塊的選擇鍵盤的作用有兩個,一是輸入數據,二是功能操作?;诖耍泻芏喾N方案實現這一操作。方案一、采用直接式獨立按鍵操作。這種方案的操作過程,就是直接從單片機 I/O 口引出通上拉電阻,接一按鍵,當按鍵按下時,單片機該端口為“0” ,單片機通過對此端口邏輯“0”判斷,來完成按鍵的識別,達到數據的輸入,功能的實現。從這一過程可知,完成任務需要單片機很多 I/O 口,花費
12、了很多 CPU 資源,此種方案不可取。方案二、矩陣鍵盤。矩陣鍵盤,這里采用 4X4 矩陣鍵盤,一共有 16 組情況,實現的方法也是利用單片機的 I/O 口,通過上拉電阻相接,4X4 正好用到了單片機一個端口。采用這種方案既節(jié)約資源又方便,而且能夠滿足本設計的需要。3綜上所述,在本設計中采用方案二。2顯示電路模塊的選擇顯示電路的主要任務是反應出操作結果和相關商口的信息。根據此,有四種方案可完這一工作。方案一,可用七段共陽極 LED 數碼顯示,將商口名稱、單價等顯示出來,可以完成,將多個 LED 數碼管的段選線相應并聯在一起,由一個 8 位 I/O 口控制,而各位的共陽極或共陰極分別由相應的 I/
13、O 口線控制,實現各位的分時選通,這就是動態(tài)掃描顯示方式,采用動太掃描顯示方式,每一位 LED 的選通時間為 1-2MS。這個時間不能太短,因為發(fā)光二極管從導通到發(fā)光有一定的延時,導通時間太短,發(fā)光太弱人眼無法看清,這個時間也不能太長,否占用 CPU 時間太長,由于人眼有視覺暫留現象,只要每一位顯示時間足夠短,就能夠造成多位同時顯示的假象,每一位顯示的時間間隔不能超過 20ms,若時間間隔太長,就會造成閃爍現象,采用動態(tài)掃描方式,可降低功率消耗。此系統(tǒng),所需數碼管較多,操作麻煩,并且不直觀,當然其發(fā)光數碼管價格較便易。在本系統(tǒng)中,此方案不可取。方案二,用 LED 數碼管矩陣方式顯示,這種方案的
14、顯示的原理和方案一都差不多,用 16X16 點陣排列,將字型分成上下兩個半部,上半部 16 列,每列用一個字節(jié)表示(8 個點) ,下半部也是 16 列,每列也用一個字節(jié)表示(8 個點) ,因此每個字需要 32 個字節(jié)來表示。當然這樣主就可以顯示漢字,但時和單片機相連較為復雜,本系統(tǒng)要許多塊這樣的 16X16 點陣,同時這種 LED 點陣方式顯示,造價較高,作為本電路,也是不可取的。方案三,采用帶中文字庫的 LCD 液晶顯示器來完成顯示,128X64 這種顯示器作為本系統(tǒng)設計,當然最好。便考慮到系統(tǒng)成本的問題,帶中文字庫的 LCD 價格一般都比較貴,采用這種方案,勢必會增加設計成本。本文也不采用
15、這種方案。方案四,采用兩行字符型顯示器,這種顯示器,用英文顯示相關信息,操作方便,價格又較適中,二十多元錢一塊,作為本設計,是最合適不過。因此,結合上述方案,在本設計中,采用兩行字符型 1602 顯示器。3存儲器電路模塊的選擇存儲器的作用在本設計中主要起到基本商品信息的存儲,和最后商品的出入信息的存貯。完成這一項工作方案也是多種多樣的。方案一,用紫外線存儲器 ROM,這個存儲器操作不方便,同時,本設計的數據4是不斷變化的,因此這種方案不可取。方案二,可以用海量存貯器來完,當然這個完全是可行的,掉電后信息也不會掉失。它具有低功耗、大容量、擦寫速度快、可整片或分扇區(qū)在系統(tǒng)編程、擦除等特點。并且可由
16、內部嵌入的算法完成對芯片的操作,因而在各種嵌入式系統(tǒng)中得到了廣泛的應用。作為一種非易失性存儲器,它在系統(tǒng)中通常用來存放程序代碼。這種存貯器當然很好,但是,價格較貴,同時和本設計的單片機也不容易實現接口,因為數據線和地址較復雜。 方案三,采用串行鐵電存貯器,可在系統(tǒng)中讀寫,掉電可保存數據,用 I2C總線進行操作,因此需用的單片機端口較少,站用 CPU 資源較少,同時價格也不貴,美中不足之處就是存貯容量沒有海量存貯器大。 根據上述三種方案,兼顧價格、容量和可操作性,本設計選用第三種方案,也就是用串 E2ROM。4串行通信接口電路的選擇串行通信接口標準經過使用和發(fā)展,目前已經有幾種。但都是在 RS-
17、232 標準的基礎上經過改進而形成的。所以,以 RS-232C 為主來討論。RS-323C 標準是美國 EIA(電子工業(yè)聯合會)與 BELL 等公司一起開發(fā)的 1969 年公布的通信協議。它適合于數據傳輸速率在 020000b/s 范圍內的通信。這個標準對串行通信接口的有關問題,如信號線功能、電器特性都作了明確規(guī)定。由于通信設備廠商都生產與 RS-232C 制式兼容的通信設備,因此,它作為一種標準,目前已在微機通信接口中廣泛采用。這里使用 RS-232C。三、系統(tǒng)硬件電路設計本系統(tǒng)由五部分組成:單片機、鍵盤處理電路、顯示器電路、存儲器電路、串行通信口等。下面將詳細討論這幾部分電路的設計過程。(
18、一)單片機及其外圍電路設計微處理電路采用 AEMEL 公司的單片機,價格便宜、功能齊全、可靠性高、使用普遍。AT89C51 單片機是 ATMEL 公司 8 位單片機系列產品之一,是一種40 引腳雙列直插式芯片。AT89C51 有 4K FLASH;128 字節(jié) RAM;32 條 I/O 引線;2 個 16 位定時器/計數器;一個 5 向量 2 級中斷結構;一個全雙工串行口;一個片內震蕩器和時鐘電路。此外,AT89C51 是用可降到 0 頻率的靜態(tài)邏輯操作設計的,并支持兩種可選的軟件節(jié)能工作方式。空閑方式停止 CPU 工作,但允5許 RAM、定時器/計數器、串行口和中斷系統(tǒng)繼續(xù)工作。掉點方式保持
19、 RAM 內容,但振蕩器停止工作,并禁止所有其他部件的工作直到下一個硬件復位。它含有 4KB 可反復燒錄及擦除內存和 128 字節(jié)的 RAM,有 32 條可編程控制的 I/O 線,5 個中斷源,指令與 MCS-51 系列完全兼容。選用它作為核心控制新片,可使電路極大地簡化,而且程序的編寫及固化也相當方便、靈活。主要性能:4KB 可重編程 Flash 存儲器;耐久性:1000 次寫/擦除;2.76V的操作范圍;全靜態(tài)操作:0Hz24MHz;2 極加密程序存儲器;1288 位內部RAM;32 條可編程 I/O 引線;2 個 16 位定時器/計數器;6 個中斷源;可編程串行UART 通道;直接 LE
20、D 驅動輸出;片內模擬比較器;低功耗空載和掉電方式。本系統(tǒng)設計電路圖 2 所示:圖 2 單片機電路圖如圖 2 所示,P0 口為 LCD 的八根數據總線,P2.5、P2.6、P2.7 三根線為LCD 的讀寫控制線和使能端。P3.6、P3.7 為存貯器的兩根總線,主要用于數據的讀取與存貯。P1 口為矩陣鍵盤列線與行線的接口,實現 4X4 鍵盤,完成相關的工能操作,比如說,數字的輸入,功能操作等。XTAL1 和 XTAL2 口接外部晶體振蕩器,保證單片機內部各部分有序的工作。P3.0、P3.1 口接串行端口,分別作串行數據的接收端和發(fā)送端。RST 與 Vss 之間連接一個下拉電阻,與 Vcc 之間連
21、接一個電容,目的是保證可靠的復位。(二)鍵盤電路的設計這里采用的是矩陣鍵盤。如圖 3 所示:6圖 3 矩陣鍵盤實物圖矩陣鍵盤的實現可采用查詢的辦法,也可以采用中斷的方法。4X4 的意思即:4 根列線,4 根行線,列線通上拉電阻接到電源上,因此無按鍵按下時,各列線均為高電平。當行線分別輸出低電平時,有健按下,相應的列線上會出現低電平。根據此原理,CPU 對整個鍵盤進行掃描。所謂掃描,即 CPU 不斷輪流對行線置低電平,然后檢查列線輸入狀態(tài),確定按鍵情況。電路如圖 4 所示:圖 4 矩陣鍵盤圖如圖 4 所示,4X4 矩陣鍵盤,一共有 16 個按鍵,用單片機的 P1 口,其內部有上接電阻,在此可不用
22、,在確定有按鍵按下后,先把 H1 置為低電平,其它都為高電平,再讀入 H5、H6、H7、H8 的值。若 H5 為“1” ,其它都為“0” ,則“F”按下。依次類推,當 H8 為“1” ,其它都為“0” ,則“3”按下。根據此道理,可判斷,哪個按鍵按下。本設計就是根據此,判斷數據的輸入和各功能的實現。按鍵“A” 、 “B” 、 “C” 、 “D” 、 “E” 、 “F”為功能鍵,其它的為數字鍵。(三) 、顯示電路的設計這里采用的是兩行字符型 1602 顯示器,下面詳細介紹 1602 及其使用。1.字符型點陣式 LCD 液晶顯示屏7LCD 的應用很廣泛,簡單如手表上的液晶顯示屏,儀表儀器上的液晶顯
23、示器或者是電腦筆記本上的液晶顯示器,都使用了 LCD。在一般的辦公設備上也很常見,如傳真機,復印機,以及一些娛樂器材玩具等也常常見到 LCD 的足跡。本設計要介紹的 LCD 為字符型點陣式 LCD 模塊(Liquid Crystal Display Module)簡稱 LCM,或者是字符型 LCD。字符型液晶顯示模塊是一類專門用于顯示字母,數字,符號等的點陣式液晶顯示模塊。在顯示器件上的電極圖型設計,它是由若干個 5*7 或 5*11 等點陣符位組成。每一個點陣字符位都可以顯示一個字符。點陣字符位之間有一空點距的間隔起到了字符間距和行距的作用。目前市面上常用的有 16 字*1 行,16 字*2
24、 行,20 字*2 行和 40 字*2 行等的字符模塊組。這些 LCM 雖然顯示字數各不相同,但是都具有相同的輸入輸出界面。本設計將以 WINTECH 16*2 字符型液晶顯示模塊WM-C1602N 為例,詳細介紹字符液晶顯示模塊的應用技術。一般字符 LCD 模塊的控制器為日本日立新華通訊社的 HD44780 及其替代集成電路,驅動器為 HD44100 及其替代的集成電路。2. LCD 液晶顯示屏的內部結構液晶顯示模塊 WN-C1602N 的內部結構可以分成三部分:LCD 挖掘器、LCD驅動器和 LCD 顯示裝置。如圖 5 所示:圖 5 LCD 內部結構圖目前大多數的 LCD 液晶顯示器的控制
25、器都有采用一顆型號為 HD44780 的集成電路作控制器。HD44780 是集控制器,驅動器于一體,專用于字符顯示控制驅動集成電路。HD44780 是字符型液晶顯示控制器的代表電路,HD44780 集成電路的特點有:(1) HD44780 不僅作為控制器而且還具有驅動 40*16 點陣液晶像素的能力,并且 HD44780 的驅動能力可通過外接驅動器擴展 360 列驅動。8(2)HD44780 的顯示緩沖區(qū)及用戶自定義的字符發(fā)生器 CGRAM 全部內藏在芯片內。(3)HD44780 具有適用于 M6800 系列 MPU 的接口,并且接口數據傳輸可為 8 位數據和 4 位數據傳輸兩種方式。(4)H
26、D44780 具有簡單而功能較強的指令集,可實現字符移動,閃爍等顯示功能。由于 HD44780 的 DDRAM 容量所限,HD44780 可控制的字符高達每行 80個字,也就是 5*80=400 點,HD44780 內藏有 16 路行驅動器和 40 路列驅動器,所以 HD44780 本身就具驅動有 16*40 點陣 LCD 能力(即單行 16 個字符或兩行8 個字符) 。如果在外部加一 HD44100 外擴展多 40 路/列驅動,則可驅動16*2LCD。HD44780 內藏的字符發(fā)生存儲器(CGROM)已經存儲了 160 個不同的點陣字符圖形,如表 1 所示,這些字符有:阿拉伯數字、英文字母的
27、大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼。比如數字“1”的代碼是00110001B(31H) ,又如大寫的英文字母“A”代碼是 01000001B(41H) 。表 1 WM-C1602N 的 CGRAM 字符圖形代碼對應表3. LCD 的應用9液晶顯示模塊 LCD1602 在顯示“1”時,則只需將 ASCII 碼 31H 存入 DDRAM 即可。顯示時模塊把地址 31H 中的點陣字符圖形顯示出來,就能看到數字“1”了。DDRAM 有 80bytes 空間,共可顯示 80 個字,地址與實際顯示位置的排列順序跟LCD 的型號有關。1602 采用標準的 16 腳接口,如表 2
28、所示。其中 VSS 為地電源,VDD 接 5V 正電源,VL 為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個 10K 的電位器調整對比度。RS 為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。RW 為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當 RS 和 RW 共同為低電平時可以寫入指令或者顯示地址,當 RS 為低電平 RW 為高電平時可以讀忙信號,當 RS 為高電平 RW 為低電平時可以寫入數據。E 端為使能端,當 E 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。D0-D7 為 8 位雙向數據線。表
29、 2 LCD1602引腳說明表編號符號引腳說明編號符號引腳說明1VSS電源地9D2Data I/O2VDD電源正極10D3Data I/O3VL液晶顯示偏壓信號11D4Data I/O4RS數據/命令選擇端(H/L)12D5Data I/O5R/W讀/寫選擇端(H/L)13D6Data I/O6E使能信號14D7Data I/O7D0Data I/O15BLA背光源正極8D1Data I/O16BLK背光源正極本設計電路如圖 6 所示:圖 6 LCD1602 電路連接圖10如圖 6 所示,有八根數據線與單片機的 P0 口相連,三根讀寫控制線,背光調節(jié)電位器,可調節(jié)背光亮度。(四)存儲器電路的設
30、計本設計采用串行鐵電存貯器 FRAM,采用 I2C 總線工作方式。FRAM 鐵電存儲器的核心技術是美國 Ramtron 公司研制的鐵電晶體材料。這一特殊材料使得鐵電存儲產品同時擁有隨機存儲器(RAM)和非易失性存儲器(EPROM、E2ROM、FLash)的特性。1. 鐵電晶體材料的工作原理當把電場加載到鐵電晶體材料上,晶陣中的中心原子會沿著電場方向運動,達到穩(wěn)定狀態(tài),一個狀態(tài)存儲邏輯 0,另一個狀態(tài)存儲邏輯 1。中心原子在常溫下沒有電場的作用時停留在此狀態(tài)達一百年以上,鐵電存儲器不需要定時刷新,斷電情況下能保存數據不變。由于在整個物理過程中沒有任何原子碰撞,鐵電存儲器(FRAM)擁有高速讀寫,
31、超低功耗和無限次寫入等特性。2. 存儲器的基礎知識傳統(tǒng)存儲器有兩大類:易失存儲器(volatile memory)和非易失存儲器(non-volatile memory) ,易失性存儲器像 SRAM 和 DRAM 存儲器在沒有電源的情況下都不能保存數據,但這種存儲器擁有高性能,存取速度快和無限次的寫入次數,易用等優(yōu)點。非易失性存儲器像 EPROM、E2ROM 和 FLash 能在斷電后保存數據不變,但由于所有這些存儲器均起源只讀存儲器(ROM)技術,因此它們都有寫入速度慢,寫入次數有限和使用時功耗大等缺點。 表 3 是 16K 位鐵電存儲器(FRAM)的性能和 16K 位 E2ROM 性能比較
32、情況,FRAM 第一個最明顯的優(yōu)點是:FRAM 可以跟隨總線速度寫入,無需任何等候時間,而 E2ROM 需等幾毫秒(ms)才能寫入一下數據。FRAM 第二大優(yōu)點是幾乎無限次的寫入。E2ROM 的寫入次數是每百萬次(10 的 6 次方) ,而新一代的鐵電存儲器(FRAM)卻是一億億次(10 的 6 次方)寫入壽命。FRAM 的第三大優(yōu)點是超低功能。E2ROM 的慢速和高電流寫入一個字節(jié)令它需要高出 FRAM2500 倍的能量。表 3 性能比較表型號待機電流寫入電流寫入次數字節(jié)寫入時間整片寫入時間FM2401610UA150US1E1372US47AMSAT24C1618UA3mA1E610MS1
33、.3S11ST24C16300UA3mA1E610MS1.3S24AA16100UA3mA1E610MS1.3SX24C16150UA3mA1E610MS1.3S3. 鐵電存貯器 FRAM 的應用FRAM 無限次快速擦寫和非易性的特點,令它的系統(tǒng)工程師可以把現在在電路上分離的 SRAM 和 E2ROM 兩種存儲器整合到一個 FRAM 里,為整個系統(tǒng)節(jié)省了功耗,降低了成本,減小了體積,同時增加了整個系統(tǒng)的可靠性。 典型應用包括:儀器儀表、工業(yè)控制、家用電器、復印機、打印機、機頂盒、網絡設備、游戲機、計算機等等。 4. I2C 總線知識該存貯器采用 I2C 總線方式工作,在軟件操作時,就得用 I2
34、C 總線方式進行讀寫。I2C 總線是由 PHILIPS 公司發(fā)明的一種高性能芯片間串行同步傳輸總線。與SPI、MicroWire 接口不同,它僅僅需要兩根信號線(串行數據線 SDA 和串行時鐘線 SCL) ,就實現了完善的雙工同步數據傳送,能夠極其方便地構成多機系統(tǒng)和外圍器件擴展系統(tǒng)。I2C 總線采用了器件地址的硬件設置方法,通過軟件尋址完全避免了器件的片選線尋址端,從而使硬件系統(tǒng)具有更簡單、更靈活的擴展方法。鑒于 I2C 總線的眾多功能優(yōu)越性,目前,以 PHILIPS 公司為主的許多著名半導體制造公司,紛紛研制出了大量的種類繁多的(已經達數百種型號)帶有 I2C總線硬件接口的單片機、通用外圍
35、器件,例如RAM、EEPROM、NVRAM、I/O、ADC、DAC、日歷時鐘 RTC、LED 驅動器、LCD 驅動器、溫度傳感器等等。另外,還開發(fā)了面向一些特殊應用系統(tǒng)中專用配套的 I2C 總線芯片,例如無線電、無繩電話、移動手機、電視機、音響系統(tǒng)、家庭影院等系統(tǒng)中的雙音多頻(DTMF)撥號器、語音合成器、數字調諧器、編碼器、解碼器、圖像處理器、頻率合成器、音調控制器、立體聲處理器等等。本設計電路如圖 7:12圖 7 存儲器電路圖如圖 7 所示,電路用 24C64 存貯器,A0、A1、A2 為地址選擇端,主要作用是用于級連,在總線上掛接多個這樣的存貯器時使用,VSS 為接地端,VCC 為電源正
36、極連接端,WP 為寫保護控制端,SCL、SDA 分別為 I2C 總線的串行時鐘連接端和串行數據連接端,數據的寫入與讀出就是通過這個端兩個端操作的,同時電路中在這兩個端口加了兩只上接電阻,作用是由于存貯器內部是采用開漏輸出的。(五)串行通信接口電路的設計串行通信接口標準經過使用和發(fā)展,目前已經有幾種。但都是在 RS-232C 標準的基礎上經過改進而形成的。RS-323C 標準是美國 EIA(電子工業(yè)聯合會)與BELL 等公司一起開發(fā)的 1969 年公布的通信協議。它適合于數據傳輸速率在020000b/s 范圍內的通信。這個標準對串行通信接口的有關問題,如信號線功能、電器特性都作了明確規(guī)定。由于通
37、行設備廠商都生產與 RS-232C 制式兼容的通信設備,因此,它作為一種標準,目前已在微機通信接口中廣泛采用。 RS-232C 標準(協議)的全稱是 EIA-RS-232C 標準,其中 EIA(Electronic Industry Association)代表美國電子工業(yè)協會,RS(ecommeded standard)代表推薦標準,232 是標識號,C 代表 RS232 的最新一次修改(1969),在這之前,有 RS232B、RS232A。它規(guī)定連接電纜和機械、電氣特性、信號功能及傳送過程。常用物理標準還有有 EIARS-232-C、EIARS-422-A、EIARS-423A、EIARS
38、-485。 這里只介紹 EIARS-232-C(簡稱 232,RS232)。 例如,目前在 IBM PC 機上的 COM1、COM2 接口,就是 RS-232C 接口。1. RS-232C 電氣特性RS-232C 標準(協議)的全稱是 EIA-RS-232C 標準,其中 EIA(Electronic Industry Association)代表美國電子工業(yè)協會,RS(ecommeded standard)代表推薦標準,232 是標識號,C 代表 RS232 的最新一次修改(1969),在這之前,13有 RS232B、RS232A。它規(guī)定連接電纜和機械、電氣特性、信號功能及傳送過程。常用物理標
39、準還有有 EIARS-232-C、EIARS-422-A、EIARS-423A、EIARS-485。 這里只介紹 EIARS-232-C(簡稱 232,RS232)。 例如,目前在 IBM PC 機上的 COM1、COM2 接口,就是 RS-232C 接口。EIA-RS-232C 對電器特性、邏輯電平和各種信號線功能都作了規(guī)定,如下:(1)在 TxD 和 RxD 上,邏輯 1(MARK)=-3V-15V;(2)邏輯 0(SPACE)=+315V;(3)在 RTS、CTS、DSR、DTR 和 DCD 等控制線上;(4)信號有效(接通,ON 狀態(tài),正電壓)+3V+15V;(5)信號無效(斷開,OF
40、F 狀態(tài),負電壓)=-3V-15V。以上規(guī)定說明了 RS-323C 標準對邏輯電平的定義。對于數據(信息碼):邏輯“1”(傳號)的電平低于-3V,邏輯“0”(空號)的電平告語+3V;對于控制信號;接通狀態(tài)(ON)即信號有效的電平高于+3V,斷開狀態(tài)(OFF)即信號無效的電平低于-3V,也就是當傳輸電平的絕對值大于 3V時,電路可以有效地檢查出來,介于-3+3V 之間的電壓無意義,低于-15V 或高于+15V 的電壓也認為無意義,因此,應保證電平在(315)V 之間。2. 連接器的機械特性:連接器:由于 RS-232C 并未定義連接器的物理特性,因此,出現了DB-25、DB-15 和 DB-9
41、各種類型的連接器,其引腳的定義也各不相同。下面分別介紹兩種連接器。(1)DB-25: PC 和 XT 機采用 DB-25 型連接 DB-25 連接器定義了 25 根信號線,分為 4 組: 異步通信的 9 個電壓信號(含信號地 SG)2,3,4,5,6,7,8,20,22; 20mA 電流環(huán)信號 9 個(12,13,14,15,16,17,19,23,24) ; 空 6 個(9,10,11,18,21,25) ; 保護地(PE)1 個,作為設備接地端(1 腳) 。(2)DB-9 連接器:在 AT 機及以后,不支持 20mA 電流環(huán)接口,使用 DB-9 連接器,作為提供14多功能 I/O 卡或主板
42、上 COM1 和 COM2 兩個串行接口的連接器。它只提供異步通信的 9 個信號。DB-25 型連接器的引腳分配與 DB-25 型引腳信號完全不同。因此,若與配接 DB-25 型連接器的 DCE 設備連接,必須使用專門的電纜線。電纜長度:在通信速率低于 20kb/s 時,RS-232C 所直接連接的最大物理距離為 15m(50 英尺)。最大直接傳輸距離說明:RS-232C 標準規(guī)定,若不使用 MODEM,在碼元畸變小于 4%的情況下,DTE 和 DCE 之間最大傳輸距離為 15m(50 英尺) ??梢娺@個最大的距離是在碼元畸變小于 4%的前提下給出的。為了保證碼元畸變小于 4%的要求,接口標準
43、在電氣特性中規(guī)定,驅動器的負載電容應小于 2500pF。3. RS-232C 的接口信號RS-232C 規(guī)標準接口有 25 條線,4 條數據線、11 條控制線、3 條定時線、7條備用和未定義線。在本設計中電路連接圖如圖 8 所示:圖 8 串行通信口連接圖如圖 8 所示,MAX232 中電平轉換芯片。將差分電平,轉換成單片機等可識別的 TTL 電平,電路中 RXD、TXD 兩根線分別和單片機相連 P3 口的串行通訊口相連,RXD 為數據據接收端,單片機通過這個端口讀取 PC 機等送來的信號,TXD 為數據發(fā)送端口,主要向 PC 等設備發(fā)送信號。圖右邊還有一個 9 針串行通信口,主要和 PC 機相
44、連。15四、系統(tǒng)軟件程序設計 本設計程序共分成五個部分:鍵盤處理程序、LCD 顯示程序、單片機內部數據處程序、存貯程序、串口和 PC 機通信程序。(一)單片機內部數據處理程序單片機內部數據處理程序,即是系統(tǒng)的主程序。當插上電源后,單片機對系統(tǒng)進行一系列的初始化,包括 LCD 顯示初始化,串口初始化和菜單的初始化,以及判斷有無按鍵按下,并做出相應的處理。主程序流程圖如圖 9:圖 9 主程序流程圖(二)鍵盤處理程序鍵盤處理程序,主要作用就是通過用戶的按鍵識別,判斷當前的系統(tǒng)任務,通過前面的硬件分析,采用 4X4 矩陣,一共十六組狀態(tài)。一方面是數字的輸入輸出,另一方面的一系列的功能操作。經過鍵盤掃描
45、程序掃描是否有按鍵按下,如果有再判斷是數字鍵還是功能鍵,并做出相應的處理;如果沒有則返回繼續(xù)檢查有克按鍵按下。鍵盤處理程序流程圖如圖 10 所示。16圖 10 鍵盤處理程序流程圖(三)LCD 液晶顯示程序LCD 處理程序,完成信息的顯示,包括商品號,單價,數量,總計金額等這些資料。LCD 根據鍵盤處理程序中按鍵的性質(數字鍵還是功能鍵)來操作。流程圖如圖 1117圖 11 LCD 顯示流程圖(四)串口通信程序串口通信程序,完成將完交的數量,以及總金額,賣出與進入的商品告知 PC機完成匯總。流程圖如圖 12:18圖 12 串口通信流程圖(五)存儲器程序存貯器程序,完成對 24C64 的數據讀取與
46、寫入,同時要有掉電保存的功能。流程圖如圖 13:圖 13 存儲器流程圖19五、設計總結本系統(tǒng)的制作,性能和效果都比較好,通過鍵盤有操作,LCD 直觀的顯示,和串口的通信及信息的存貯都能達到設計的要求,實現超市簡易的收款工作。本設計的成本較低,操作簡單。但是,本設計也存在上些不足,比如 LCD 字符型液晶顯示器不帶有中文字庫,不能顯示中文,這樣顯示的內容不是很直觀。再如,系統(tǒng)沒有留出打印口,不能打印出憑條等等。不過,在本設計的基礎上很容易通過改善設備,對系統(tǒng)進行升級,使功能更齊全,設計更完美。通過這次的畢業(yè)設計,我體會到應該掌握豐富的理論知識,理論知識是設計的前提。但同時又決不能局限于理論。在設
47、計過程中,深深感受到自己在對一些器件的了解上,還存在很大差距,對他們的功能,參數都不是太熟悉。但是通過這次理論與實際的結合之后,認識比以前有不少提高。六、致謝本畢業(yè)設計,在設計過程中,從理論到實踐,從畫框圖,到具體電路,從學習認識元器件,到最后完成一個系統(tǒng),從中學習了許多新的專業(yè)知識,同時也學會了許多社會人文知識。在此,對我畢業(yè)設計提拱指導幫助的所有老師,表示是忠心的感謝,對在設計過程中遇到困難時,得到同仁們幫助的朋友、同學,表示誠摯的謝意!真誠感謝成都學院的領導和老師,感謝電信教研室的各位老師,他們在我平常的學習與日常生活中,給了我許多關心與幫助。在此我表示深深的感謝!20附錄附錄一 硬件原
48、理圖21附錄二 硬件 PCB 圖22附錄三 原程序代碼1、主程序代碼#include unsigned char w,cc=0;unsigned char str16=0;/液晶顯示顯存#include lcd.h /包含液晶顯示器的一些操作函數#include iic.h /24C64 的讀寫函數#include urat.h /串行口的操作函數#include manage.h /按鍵功能函數#include key4.h /按鍵檢測和鍵值讀取函數 /bit w24c64,r24c64;void main() initlcd(); /初始 LCD initurat(); /初始串口 men
49、u(); /初始菜單 /inorder(0 xc0);/indata(0 x38);/測試 LCD 第二行是否顯示 while(1) key1(); if(w!=0) /如果有鍵按下則讀鍵值 key2(w); /讀鍵值 /*結束*/2、鍵盤代碼unsigned char w1,w2;void key1(void) P1=0 x0f; w1=P1&0 x0f; if(w1!=0 x0f) / 按鍵 delay(100); if(w1!=0 x0f) /再一次檢測按鍵 P1=0 xf0; w2=P1&0 xf0; w=(w1 | w2); else w=0; /未按鍵23/-/unsigned c
50、harvoid key2(unsigned char j) unsigned char i; switch(j) /-以下為數字鍵 case 0 x77: i=0 x30;indata(i);strcc+=0;break; case 0 x7b: i=0 x31;indata(i);strcc+=1;break; case 0 x7d: i=0 x32;indata(i);strcc+=2;break; case 0 x7e: i=0 x33;indata(i);strcc+=3;break; case 0 xb7: i=0 x34;indata(i);strcc+=4;break; case
51、 0 xbb: i=0 x35;indata(i);strcc+=5;break; case 0 xbd: i=0 x36;indata(i);strcc+=6;break; case 0 xbe: i=0 x37;indata(i);strcc+=7;break; case 0 xd7: i=0 x38;indata(i);strcc+=8;break; case 0 xdb: i=0 x39;indata(i);strcc+=9;break; /以下為功能鍵 case 0 xDD: manage_key1();i=0;break;/A 寫 24C64 case 0 xDE: manage_
52、key2();i=0;break;/B 讀 24C64 case 0 xE7: manage_key3();i=0;break;/C 串行通訊,發(fā)送數據 case 0 xeb: manage_key4();i=0;break;/D 串行通訊,接受數據 case 0 xED: manage_key5();i=0;break;/E 顯示計算結果 case 0 xEE: manage_key6();i=0; /f 清屏 while(1) /等待按鍵的釋放 key1(); if(w1=0 x0f) delay(10); if(w1=0 x0f) break; /*結束*/3、液晶顯示器代碼#inclu
53、de#define RS P2_5 /定義 LCD 控制口#define RW P2_6#define E P2_7#define XS P024void busy(void) /檢查忙信號 _nop_(); do XS=0 xff; RS=0; RW=1; E=0; _nop_(); E=1; while(P0_7); void inorder(unsigned char order)/寫命令 XS=order; RS=0; RW=0; E=0;busy();E=1; void indata(unsigned char datar) /寫數據 XS=datar; RS=1; RW=0; E=
54、0; busy(); E=1;void initlcd (void) inorder(0 x01); inorder(0X38);/8 位 2 行 5X7 點陣 inorder(0X0f);/顯示器開,光標開,閃爍開 inorder(0X06);/文字不動,光標自動右移 inorder(0 x01);/清顯示/=顯示處理程序=void xianshi(void) unsigned long x,y,z,sum;x=(str0*100+str1*10+str2); /得到“貨號”y=(str3*1000+str4*100+str5*10+str6); /得到“單價”值(3 位數) z=(str7
55、*100+str8*10+str9); /得到“數量”值(3 位數)25sum= y*z; /總價=單價*數量str10=sum/100000; /十萬位str11=(sum%100000)/10000; /萬位str12=(sum%100000)%10000)/1000; /千位str13=(sum%100000)%10000)%1000)/100; /百位str14=(sum%100000)%10000)%1000)%100)/10; /十位str15=(sum%100000)%10000)%1000)%100)%10; /個位/*菜單顯示*/在第一行顯示 NO. price amount
56、 sum(¥)void menu(void) inorder(0 x80); /光標指向 LCD 第二行首地址 indata(0 x4e); /NO. indata(0 x4f); indata(0 x20); /空格 indata(0 x44); /price indata(0 x4A); indata(0 x20); /空格 indata(0 x20); /空格 indata(0 x53); /amount indata(0 x4C); indata(0 x20); /空格 indata(0 x53); /Sum(¥) indata(0 x75); indata(0 x6D); indat
57、a(0 x28); indata(0 x5C); indata(0 x29); inorder(0 xc0);/光標指向 LCD 第二行首地址/*結束*/4、串行口程序代碼#define uchar unsigned charvoid initial();void sendd();void received();/*串行口初始化*/void initurat(void) TMOD=0 x20; TL1=0 xe8; TH1=0 xe8; SCON=0 x50;26 TR1=1; /*發(fā)送數據*/void sendd( ) uchar i;for(i=0;i16;i+) TI=0; SBUF=s
58、tri; while(TI=0); /*接收數據*/void received()uchar i; /while(i=SBUF)!=0 x01); / RI=0; while(RI=0);for(i=0;i16;i+) RI=0; stri=SBUF; while(RI=0); /*結束*/5、24C64 的讀寫程序代碼#include#define uchar unsigned char#define sda P3_6 /定義 SDA 口#define scl P3_7/定義 SCL 口/-void delay(uchar a)/24C64 和其他一些地方需要的延時函 uchar b,c;
59、for(b=0;ba;b+) for(c=0;c225;c+);/-void start(void) /開始總線的活動 sda=1; scl=1;27_nop_();_nop_(); _nop_(); _nop_(); sda=0; _nop_();_nop_();_nop_(); _nop_(); /- void stop(void) /停止總線活動,器件進入低功耗狀態(tài) sda=0; _nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_(); sda=1; _nop_();_nop_();_nop_();_
60、nop_(); /- void ack(void) /應答信號 sda=0; _nop_();_nop_();_nop_();_nop_(); scl=1;_nop_();_nop_();_nop_();_nop_(); scl=0; /允許從器件改變當前 SDA 的狀態(tài),以便于下一次的讀入 /- void noack(void)/無應答信號 sda=1; _nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_(); scl=0; /- void checkack(void) _nop_();_nop_();_
61、nop_();_nop_(); scl=1; if(sda) scl=0; else _nop_();_nop_();_nop_();_nop_(); scl=0;28 /- void send(uchar kk) /寫入一個字節(jié) uchar bitcounter=8; uchar temp; do temp=kk; scl=0; _nop_();_nop_();_nop_();_nop_(); if(temp&0 x80)=0 x80) /數據的發(fā)送為高位在前,低位在后 sda=1; elsesda=0; scl=1; temp=kk1; kk=temp; bitcounter-; whil
62、e(bitcounter); scl=0; uchar read(void) /讀出一個字節(jié) uchar temp=0; uchar temp1=0; uchar bitcounter=8; sda=1; do scl=0; _nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_(); if(sda) temp=temp|0 x01; /數據的讀入為高位在前,低位在后 else temp=temp&0 xfe; if(bitcounter-1) temp1=temp1; temp=temp1; bitcount
63、er- while(bitcounter); /讀入 8 位29 return temp;/發(fā)送命令和操作對象給 24c64void writenbyte(uchar *adata,uchar address) uchar bb; /定義寫字節(jié)數變量 bb for(bb=0;bb16;bb+) /寫入 16 個字節(jié) start(); /器件地址 send(0 xa0);checkack(); send(0 x00); /從器件內部高地址 checkack(); send(address+bb); /從器件內部地址低位 checkack(); send(adatabb); checkack();
64、 stop(); delay(40); void readnbyte(uchar *adata,uchar address) uchar i; /定義讀字節(jié)數變量 i for(i=0;i16;i+) start();send(0 xa0);ack();send(0 x00); /從器件內部高地址ack();send(address+i); /從器件內部地址低位ack();start();send(0 xa1);ack(); adatai=read(); /讀取操作數scl=0;noack();stop(); /*結束*/30參考文獻1 余永權.ATMEL89 系列單片機應用技術.北京航空航天大學出版社2 何立民.單片機應用程序設計技術.北京航空航天大學出版社3 康光華.數字電路.華中科技大學出版社 4 康光華.模擬電路.華中科技大學出版社5 寧改娣,危建國.C51 程序設計.科學出版社6 譚浩強.C 語音程序設計(第二版).清華大學出版社
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。