freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于單片機的簡易計算器設計畢業(yè)設計(編輯修改稿)

2025-01-04 11:02 本頁面
 

【文章內容簡介】 : 本設計原理圖繪制采用的是 protues 完成的仿真電路。 Protues 軟件是英國 Labcenter electronics 公司出版的 EDA 工具軟件。它不僅具有其它 EDA 工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。 Proteus 是世界上著名的 EDA工具 (仿真軟件 ),從原理圖布圖、代碼調試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB 設計,真正實現了從概念到產品的完整設計。是目前世界上唯一將電路仿真 軟件、PCB 設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持 805 HC1PIC10/12/16/18/24/30/DsPIC3 AVR、 ARM、 8086 和 MSP430 等, 2020 年即將增加 Cortex和 DSP 系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持 IAR、Keil 和 MPLAB 等多種編譯 。 11 4 硬件電路設計 硬件電路主要包括單片機的時鐘電路,外圍電路有顯示電路和按鍵電路,通過各電路,詳細的介紹了電路的組成 。 時鐘電路 AT89C51 芯片內部有一個高增益反向放 大器,用于構成震蕩電路,反向放大器的輸入端為 XTAL1,輸出端為 XTAL2,兩端跨接石英體及兩個電容就可以構成穩(wěn)定的自激振蕩器,電容器 C1 和 C2 通常取用 30pf 左右,可穩(wěn)定頻率并對振蕩頻率有微調作用,振蕩脈沖頻率范圍為 0~24MHZ。時鐘接口電路如圖 41 所示: 圖 41晶振電路圖 圖 42LCD顯示電路圖 12 本設計采用 LCD1602 液晶顯示器來顯示數據,既可以兩行每行 16 個字符。 本設計通過 P0P7口引腳向 LCD 寫指令或者寫數據以使 LCD 實現不同的功能或者顯示相應的數據,其接口電路 如圖 42 所示 。 按鍵電路 計算機輸入數字和其他功能按鍵時要用很多的按鍵,在這種情況下,編程會很簡單,但是占用 I/O 口資源很多,因此在很多情況下都不采用常用的獨立按鍵方式,而是采用矩陣鍵盤的方式,矩陣鍵盤采用四條 I/O 線為行線,四挑 I/O 口為列線組成鍵盤,在行線和列線的每個交叉點設置一個按鍵,這樣鍵盤上按鍵的數量就是 4*4 個,這樣行列式鍵盤接口 能有效的提高但潘集的系統(tǒng)中 I/O 口的利用率。如圖 43 所示 。 圖 43按鍵輸入電路圖 13 5 軟件設計 本設計是硬件電路和軟件編程相結合的設計方案,選擇合適的 編程語言是一個重要的換件。在單片機的應用系統(tǒng)程序設計時,常用的是匯編和 C 語言,匯編語言程序可讀性和可移植性,還有開發(fā)周期都比較差。而 C 語言雖然執(zhí)行效率沒有匯編語言高,但是語言簡潔,使用方便,靈活,運算豐富,表達化類型多樣化,數據結構類型豐富,具有結構化的控制語句,程序設計自由度大,有很好的可重用性,可移植性好等特點。 由于現在單片機的發(fā)展已經達到了很高的水平,內部的各種資源相當的豐富, CPU的處理速度非??欤?C 語言來控制單片機無疑是一個理想的選擇。所以在本設計中采用 C 語言編寫軟件程序。 LCD1602 LCD1602 字符發(fā)生存儲器( CGROM) 表 51字符碼表 1602 液晶模塊內部的祖父發(fā)生存儲器( CGROM)已經存儲了 160 個不同的點陣字 14 符 。這些字符有:阿拉伯數字,英文字母的大小寫,常用的字符,和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母 ’ A’ 的代碼是 0100000( 41H),顯示時模塊把地址 41H 中的點陣字符圖形顯示出來,我們就是能看到字母 A。 顯示數據寄存器( DDRAM) 1.清屏指令 如表 52 所示 : 表 52清屏指令寄存器 功 能 。清除液晶顯示器,既清屏操作數為 0X01 如表 53 所示 : 表 53模式指令寄存器 功能:設定每次定人 1 位數據后光標的以為方向,并且設定每次寫入的一個字符是否移動。此設計規(guī)定光標右移,顯示屏不移動,及操作數 0X06。參數設定 的情況如下表 所示: 位名 設置 D 0=顯示功能關 1=顯示功能開 C 0=關 光標 1=有光標 B 0=光標閃爍 1=光標不閃爍 4 功能設定指令 如 54 表所示 : 表 54功能指令寄存器 15 功能:設定數據總線位數,顯示的行數及字型。 此設計規(guī)定數據總線為 8 位,顯示2 行,操作數為 0 先 : 位名 設置 DL 0=數據總線為 4 位 1=數據總線為 8 位 N 0=顯示 1 行 1=顯示 2 行 F 0=5*7 點陣 /每字符 1=5*10 點陣 /每字符 5 液晶屏顯示位置 如表 55 所示 : 表 55液晶顯示地址 功能: 0x31(數字 1 的代碼)并不能顯示 1 出來。原因就是如果你要想在 DDRAM的 00H 地址處顯示數據,則必須將 00H 加上 80H,既 80H,若要在 DDRAM 的 01H 處顯示處顯示 數據,則必須將 01H 加上 80H 即 80H+01H。依次類推。 計算器軟件設計 顯示生活中人們熟知的計算器,其功能如下: 1. 鍵盤輸入 2. 數值顯示 3. 加,減,乘,除四則運算 針對上述功能,計算器軟件程序要完成以下模塊的設計: 1. 鍵盤輸入檢測模塊 2. 算術運算模塊 3. LCD 顯示模塊 16 系統(tǒng)總流程圖 圖 51系統(tǒng)流程圖 算術運算程序設計 算數運算程序設計的過程為:先判斷輸入 的運算符號是 + * /中的哪一種,若是 /,則要先判斷除數是否小于被除數 ,來選擇 ,要不敗要在前面補零。 若是是減號,則要判斷被減數與減速的大小,來判斷是否需要加負號 ,如果都沒有被按下的話,那么就表示沒有按過運算鍵,那么就直接將第一個數 a 直接賦給 C,然后在將其顯示出來 。如一下程序 switch(fuhao){ case 1: c=a+b。 //39。+39。 初始化 開始 有鍵輸入 數字 讀取鍵值 運算符號 等號 查詢符號位 修改符號位 運算 LCD 顯示 17 break。 case 2: //39。39。 if(ab0) c=ab。 else c=ba。 break。 case 3: c=a*b。 //39。*39。 break。 case 4: c=(long)(((float)a/b)*1000)。i=0。 //39。/39。 break。 } } if(c == 0){ write_date(0x30)。 }else{ while(c!=0){ write_date(0x30+c%10)。 c=c/10。 if(fuhao == 4){ //做觸發(fā)顯示小數點后的 3 位 i++。 if(i==3) write_date(0x2e)。 //顯示小數點 } } } //當 ab 時前面補 0 if((fuhao == 4)amp。amp。(a b)){ for(。i3。i++){ write_date(0x30)。 } if(i== 3){ 18 write_date(0x2e)。 } write_date(0x30)。 }else if((fuhao == 2)amp。amp。(a b)){ write_date(0x2d)。 } write_date(0x3d)。 a=0。b=0。i=0。flag=0。fuhao=0。 這段函數的作用就是 在等號按下后先判斷符號位是什么,如果是沒有按過符號位,則顯示的就是第一個數,如果按下了在判斷是其中的哪一種,在根據符號的不同做不同的運算 a 和 b 得到 C,其中有 2 中比較特殊有多種情況的在上面已經說明了。 數值的組成 在數值的組成中,每一次按下一個鍵就會有一個數字顯示,但是要讓電腦知道這幾個數字是連續(xù)的則需要單獨用一個變量來存儲這個數;如下程序所示: void key789(void) { P3=0xfe。 //7,8,9/ if(P3 != 0Xfe){ delay(5)。//延時 20ms if(P3 != 0XFE){ temp = P3amp。0xf0。 switch(temp){ case 0xe0:num=0。 break。 case 0xd0:num=1。 break。 case 0xb0:num=2。 break。 case 0x70:num=3。 break。 19 } while(P3!=0xfe)。 if(num != 3){ //按下的不是‘ /’鍵 if(j!=0){ //如果等號被按下了過 write_(0x01)。 j=0。 } if(flag==0){ //沒有按過符號鍵 a=a*10+table[num]。 }else{ //如果按過符號鍵 b=b*10+table[num]。 } }else{ flag=1。 fuhao=4。//4 表示除號已按 } i=table1[num]。 write_date(0x30+i)。 } } } 該函數就是當鍵入 7, 8, 9 和 除號的函數。當一個按鍵按下時 先查詢 該輸入是數字還是運算字符。 如果是數字則會進行 a*10+鍵入的數,那么 a 就變成了我們人認識的連續(xù)的數。如果是除號 或者其他的運算字符()等號 除外 ,則表示第一個數已經完成,那么我們就需要在換一個數 b 來存儲第 2 個數。 LCD 的顯示方式 (一) LCD 的初始化 在前面我們已經講解了 LCD 的讀命令和讀數據的方式,同時還介紹了它的一些相關功能的初始化,在這里我們要做的初始化就是如下程序: void init() //初始化 20 { num=1。 lcden=1。 //使能信號為高電平 write_(0x38)。 //8 位, 2 行 write_(0x0c)。 //顯示開,光標關,不閃爍 */ write_(0x06)。 //增量方式不移位 顯示屏移。 writ
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1