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

正文內(nèi)容

基于linux平臺c語言的計算器設(shè)計(編輯修改稿)

2024-12-18 15:28 本頁面
 

【文章內(nèi)容簡介】 C56800uF/35VR210KVSC6 圖 36. 可擴流過壓保護 5V穩(wěn)壓電源 綜上所述,方案一電路簡單,而且已符合本次設(shè)計的要求,再加上第二種方案所用元件較多,性能價格比不高,所以我們選擇方案一,基于本次設(shè)計我們需要5V和 12V電源。 11 鍵盤設(shè)計 方案一:獨立鍵盤。獨立鍵盤為一端接地,另一端接 I/O 口,并且要接上拉電阻。這種鍵盤的硬件都很容易實現(xiàn),但 每一個按鍵就要用一個 I/O 口,非常的浪費單片機的 I/O 口資源,不適合本次設(shè)計。 方案二:通過 PS2 協(xié) 議 用鍵盤同單片機相接,從而實現(xiàn)單片機與鍵盤通信。其電路如圖 18 所示?,F(xiàn)在 PC 機廣泛采用的 PS/2 接口為 miniDIN 6 引腳的連接器。 1—數(shù)據(jù)線( DATA); —未用; 3—電源地( GND); 4—電源( +5 V); 5—時鐘( CLK); 6—未用。 圖 37. 鍵盤與單片機接口圖 由此圖可知 ,使用鍵盤硬件結(jié)構(gòu)比較簡單 ,但鍵盤的體積太大 ,所以此系統(tǒng)不采用此方案。 方案三 :自制編碼鍵盤。編碼鍵盤的電路如圖 19 所示,這種鍵盤有編程簡單,占用資源少,但其硬件比較復(fù)雜,要用很多的二極管,不是很理想。 圖 38. 自制編碼鍵盤電路圖 12 方案四: 4*4 矩陣式鍵盤。其電路圖如圖所示,這種鍵盤的硬件簡單,使用的I/O 口也不多,而且這種鍵盤的編程方法已很成熟。所以本次設(shè)計采用這種矩陣式鍵盤。其電路圖如圖 圖 39. 4*4 矩陣式鍵盤電路圖 顯示電路的設(shè)計 顯示電路目前市場上有以下方案選擇: 方案一:數(shù)碼管顯示方案。數(shù)碼管顯示使用兩個四位一體動態(tài)數(shù)碼管顯示方案,此設(shè)計電路如 圖 21 所示。采用動態(tài)數(shù)碼管顯示,具有程序簡單, 對外界環(huán)境要求低,易于維護,同時其精度比較高,精確可靠,操作簡單。顯示直觀的特點。但只能顯示數(shù)字和一些代碼,不能顯示漢字及一些常用的符號,且硬件設(shè)計 較復(fù)雜。 方案二:采用漢字圖形點陣液晶顯示器顯示方案。 RT12864M 漢字圖形點陣液晶顯示模塊,可顯示漢字及圖形。供電電源為 ~+5V(內(nèi)置升壓電路,無需負壓 ),能采用并行和串行兩種通信方式。并有光標顯示、畫面移位、自定義字符、睡眠模式等功能。 13 A11B7C4D2E1F10G5H3112283946JP2Q129012Q179012Q189012Q199012VCC VCC VCC VCCR49 10KR50 10KR51 10KR53 10KQ59012Q69012VCC VCC VCC VCCR42 10KR46 10KR47 10KR48 10KKBIT1KBIT2KBIT3KBIT4KBIT5KBIT6KBIT7KBIT8A11B7C4D2E1F10G5H3112293846R57Component_1Q39012Q49012D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 圖 14 4 軟件設(shè)計 本設(shè)計中采用 C 語言對單片機進行編程。采用的是自下而上的設(shè)計方式,先設(shè)計出每一個模塊(子程序),然后再慢慢擴大,最后組成整個系統(tǒng)。 液晶顯示設(shè)計 本次設(shè)計我采用液晶來作顯示模塊。對這種器件只要會看時序圖,那么所有的問題都會迎難而解。其時序圖如圖 圖 41 液晶讀時序圖 圖 42 液晶寫時序圖 15 由時序圖我們可以寫出液晶的初始化函數(shù)、功能設(shè)置函數(shù)、清屏函數(shù)、寫指令函數(shù)、寫數(shù)據(jù) 函數(shù)。 //LCD 初始化 // void lcd_int() { ret=0。 delay(10)。 ret=1。 _nop_()。 psb=1。 //將 PSB 置 1,通信方式為 8BIT 數(shù)據(jù)并口 // _nop_()。 } //LCD 功能設(shè)置 // void lcd_set() { mand=0x30。 //基本指令集 // write_mand(mand)。 mand=0x01。 write_mand(mand)。 mand=0x06。 write_mand(mand)。 mand=0x0c。 write_mand(mand)。 } //清屏程序 // void clear_lcd () { 16 mand=0x01。 write_mand(mand)。 mand=0x34。 write_mand(mand)。 mand=0x30。 write_mand(mand)。 } //寫指令程序 // void write_mand(uchar mand) { delay(5)。 rs=0。 rw=0。 P0=mand。 en=1。 _nop_()。 _nop_()。 en=0。 } //寫數(shù)據(jù)程序 // void write_data(uchar data0) { delay(5)。 rs=1。 rw=0。 P0=data0。 en=1。 _nop_()。 _nop_()。 17 en=0。 } 鍵盤輸入設(shè)計 這里我 先用 4*4 矩陣式鍵盤。鍵盤掃描函數(shù)如下: //鍵掃描程序 // uchar keyscan() {uchar scancode,tmpcode。 P1=0xf0。 // 行全為 0 if((P1amp。0xf0)!=0xf0) //有鍵按下 {delay(100)。 //延時去抖動 if((P1amp。0xf0)!=0xf0) //判是否真的有鍵按下 {scancode=0xfe。 //逐 行掃描 while((scancodeamp。0x10)!=0) {P1=scancode。 if((P1amp。0xf0)!=0xf0) //本行有鍵按下 {tmpcode=(P1amp。0xf0)|0x0f。 //返回特征字節(jié)碼 ,為 1 的位即對應(yīng)于行和列 return((~scancode)+(~tmpcode))。 } else scancode=(scancode1)|0x01。 //行掃描碼左移一位 } } } return(0)。 //無鍵按下 ,返回值為 0 } 計算器函數(shù)設(shè)計 計算器的設(shè)計是本次設(shè)計的重點。因為考慮到該硬件中只有 16 個按鍵,所以我采用了按鍵復(fù)用的方式來解決這一難題。這 16 個鍵分別是 0~9 十個數(shù)字鍵。四個運算符號鍵,一個小數(shù)點鍵,一個多功能鍵。這個多功能鍵單擊時為 “=”,雙擊時為 18 請零鍵,三擊時為運算類型選擇鍵。在待機時,該計算器顯示萬年歷,如果要進行計算則按任意鍵 即可進入計算界面。默認的計算是加減乘除,如果說要進行加減乘除以外的運算,那么就三鍵等號鍵,就可進入運算類型選擇模式。 程序流程圖 開 始液 晶 初 始 化 , 鬧 鐘 初 始 化 , 定 時 器 初 始 化1 鍵 按 下 ?否是是否開 定 時 器關(guān) 鬧 鐘0 鍵 按 下 ?調(diào) 鬧 鐘 鍵 掃 鍵處 理 程 序否否計 算 器 工 作 模 式初 始 化3 鍵 按 下 ?是“ = ” 連 續(xù) 按 下 四 次 ?調(diào) 計 算 器 鍵 掃鍵 處 理 程 序返 回 圖 43 主程序流程圖 19 顯 示 開 始L C D初 始 化相 應(yīng) 功 能設(shè) 置送 地 址送 數(shù) 據(jù)返 回顯 示 漢 字 或A C S I I 碼相 應(yīng) 功 能設(shè) 置送 行 地 址和 列 地 址送 數(shù) 據(jù)顯 示 圖 形是否是是否否是 否顯 示 完是 否顯 示 完是否 圖 44 顯示程序流程圖 20 圖 4 5 鍵掃程序流程圖 21 附 錄 C 語言程序 include include include include define uchar unsigned char define uint unsigned int define ulong unsigned long sbit rs=P2^0。 sbit rw=P2^1。 sbit en=P2^2。 sbit psb=P2^3。 sbit ret=P2^5。 sbit rd=P3^7。 sbit s=P1^0。 sbit s1=P1^4。 sbit s2=P1^5。 sbit s3=P1^6。 sbit s4=P1^7。 uchar count,s1num。 unsigned int nin,ss。 char yue,re,qi,shi,fen,miao。 uchar dshi,dfen,dmiao,ling,aa,t1,p。 uchar mand,data0,data1,data2,0,j,l。 unsigned char mand,data1,data2,0,bb,bb0,aa,cc,i,yun。// uchar lcdH,lcdL,key。 float ds,m,k。 ulong ds0。 22 bit flag,flag1,flag2,flag3,flag4。 uchar disbuf[9]={0}。 //定義顯示緩沖區(qū) // uchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e}。 uchar code table1[]={0xc8,0xd5,0xd2,0xbb,0xb6,0xfe,0xc8,0xfd,0xcb,0xc4,0xce,0xe5,0xc1,0xf9}。 //日 ~六 // uchar code table2[]={0x32,0x30,0x30,0x39,0xc4,0xea,0x30,0x35,
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦

基于單片機的簡易計算器設(shè)計-資料下載頁

【總結(jié)】電》