排序算法程序基礎工程設計說明書封面_第1頁
排序算法程序基礎工程設計說明書封面_第2頁
排序算法程序基礎工程設計說明書封面_第3頁
排序算法程序基礎工程設計說明書封面_第4頁
排序算法程序基礎工程設計說明書封面_第5頁
已閱讀5頁,還剩11頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機設計性實驗報告題 目: 排序算法程序 院 (系): 電子工程與自動化學院 專 業: 自動化 學生姓名: 謝周埔 學 號: 1100810130 指導教師: 龍超 2014年4月26日一、實驗目的 掌握嵌入式系統的設計原理、程序編寫與調試的開發過程。2、 實驗內容 用鍵盤輸入8個無符號正數,將其按升序排序,在數碼管或lcd1602上顯示最大值。在單片機實驗板上實現。三、實驗要求1、 根據給定題目設計proteus仿真原理圖;2、 根據給定題目設計有關的51匯編語言(或c語言)源程序,并編譯成可執行文件;3、 在proteus仿真界面下運行程序實現給定的功能4、 實驗設計(1) 實驗思路1.

2、1 4*4矩陣鍵盤概述鍵盤掃描流程圖:(2) 冒泡法排序 (三)lcd1602顯示部分 流程圖大致如下:(三)仿真電路圖一開始顯示提示輸入標志“come on baby:”,每次按下一個數就清除一次,按夠八個后按一下確定鍵即可從小到大逐次在第一行顯示八個數,然后在第二行顯示最大值,我設計的可排序正數范圍是032000左右的正數,仿真效果和硬件效果無二并且實驗室所有系統版均適用。(四)程序源代碼 #include #include #include #define uchar unsigned char#define uint unsigned int#define k p1 /矩陣鍵盤接口定義

3、uint sj=0,0,0,0,0,0,0,0,0;uchar key; /定義鍵值為全局變量uchar dis_buf; /顯示緩存uint max;sbit lcd_rs = p27; sbit lcd_rw = p26;sbit lcd_en = p25;void lcd_wcmd(uchar cmd);void lcd_wdat(uchar dat);void lcd_pstr(char *str);/* /延時*/void delay_xms(uint x) uint i,j; for(i=0;ix;i+) for(j=0;j112;j+); /* 鍵盤掃描程序 */void key

4、scan(void) uchar temp=0,key=0; k=0xf0; /高四位輸入 行為高電平 列為低電平 delay_xms(1); temp=k; /讀p1口 temp=temp&0xf0; /屏蔽低四位 if(temp=0xe0) / p1.4 被拉低 key=0; else if(temp=0xd0) / p1.5 被拉低 key=1; else if(temp=0xb0) / p1.6 被拉低 key=2; else if(temp=0x70) / p1.7 被拉低 key=3; else key=12; k=0x0f; /低四位輸入 列為高電平 行為低電平 delay_xm

5、s(1); temp=k; /讀p1口 temp=temp&0x0f; if(temp=0x0e)/p1.0 被拉低 key=key+0; else if(temp=0x0d) / p1.1 被拉低 key=key+4; else if(temp=0x0b) / p1.2 被拉低 key=key+8; else if(temp=0x07) / p1.3 被拉低 key=key+12; else key=12; if(key12) dis_buf = key; /鍵值入顯示緩存 k=0xf0;while(k!=0xf0); /檢測松開/* /把掃描的鍵值存入數組*/void congshu_xi

6、anshi(void) inti=0;uints=0; k=0xf0;while(1) if(k!=0xf0)/delay_xms(20);if(k!=0xf0)/去抖問題? keyscan(); if(dis_buf=10)sji= s;s=0; i+; lcd_wcmd(0x01);/寫命令到lcd? else if(dis_buf=11) sji=0;/lcd_pstr(end); /顯示出字符串?break; else lcd_wdat(48+dis_buf);/寫數據到lcd?s=s*10+dis_buf; /* /冒泡排序*/void sort() int i,j,t,n=8; f

7、or(j=0;jn-1;j+)for(i=0;isji+1) t=sji; sji=sji+1; sji+1=t; max=sjn-1; /* 延時函數*/void delay(uint ms)/延時函數 while( ms- );/* 延時函數1*/void delay1(int ms) unsigned char n; while(ms-) for(n = 0; n250; n+) _nop_(); _nop_(); _nop_(); _nop_(); /* *寫指令數據到lcd *rs=l,rw=l,e=高脈沖,d0-d7=指令碼。 * */void lcd_wcmd(uchar cmd

8、) / while(lcd_busy(); lcd_rs = 0; lcd_rw = 0; lcd_en = 0; _nop_(); _nop_(); p0 = cmd; delay(4); lcd_en = 1; delay(4); lcd_en = 0; delay(10);/* *寫顯示數據到lcd *rs=h,rw=l,e=高脈沖,d0-d7=數據。 * */void lcd_wdat(uchar dat) / while(lcd_busy(); lcd_rs = 1; lcd_rw = 0; lcd_en = 0; p0 = dat; delay(4); lcd_en = 1; de

9、lay(4); lcd_en = 0; delay(10);/* * lcd初始化設定 * */void lcd_init() delay1(15); lcd_wcmd(0x01); /清除lcd的顯示內容 lcd_wcmd(0x38); /16*2顯示,5*7點陣,8位數據 delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x0c); /開顯示,不顯示光標 delay1(5); lcd_wcmd(0x01); /清除lcd的顯示內容 delay1(5);/* * 設定顯示位置 * */void lcd_pos(uchar pos) lcd_wcm

10、d(pos | 0x80); /數據指針=80+地址變量void lcd_pstr(char *str)while(*str)lcd_wdat(*str);str+;/* 主函數*/main()uint i,j;uint a16,b5;lcd_init();sprintf(a,come on baby:); lcd_pstr(a); while(1) lcd_pos(0x40); congshu_xianshi();sort(); for(i=0;i8;i+) lcd_pos(0x00); b0=sji/10000%10;b1=sji/1000%10;b2=sji/100%10;b3=sji/

11、10%10;b4=sji/1%10;for(j=0;j5;j+) lcd_wdat(48+bj); delay_xms(0x0fff); lcd_pos(0x40); /設置顯示位置為第二行sprintf(a,the max:%d,max);lcd_pstr(a); 5、 心得體會通過本次單片機課程設計,我不僅加深了對單片機理論知識的理解,學會了學以致用的重要性;而且還學會了如何去加強鍛煉創新精神,同時也提高了自身的動手能力,讓我深刻的意識到理論與實際結合的重要性。在本次設計過程中,雖然設計的題目不是很難,但在實際操作過程當中也遇到了不少困難,通過遇到的困難也讓我不斷地去查找資料,不斷地區詢問

12、同學,不斷地去開動自己的腦子,從而也不斷地超越自我,讓自己的知識能夠得到不斷地完善;同時更重要的是,在這一設計過程當中,讓我懂得了在學習的道路上會遇到很多的阻礙,但關鍵的是能做到堅持不懈,不輕易放棄;最終達到自己想要的目標。單片機的學習對于我們專業來說非常的重要,通過本次設計也讓我更加清晰了對專業的了解,理論知識再豐富,沒有實際的操作經驗也是不行的;本次設計也運用到了keil和 proteus仿真軟件,由于之前沒有學過該仿真軟件,所以在操作的過程中遇到了很多困難,但慶幸的是通過不斷的學習,對keil和proteus軟件也有了很大的了解,也學會了一些簡單的操作,所以也讓我意識到,如果你想學好,通過自己的努力就一定會學好。當然在本次設計過程中,也遇到了很多的困難,比如很多關于單片機的基礎知識

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論