單片機應用技術課程報告
實驗名稱 |
1602LCD液晶顯示屏的顯示 |
實驗時間 | |
學生姓名 |
實驗地點 |
釘釘群線上 | |
同組人員 |
專業班級 | ||
1、實驗目的 1、會使用單片機4個并行I/O端口連接外部設備并構建單片機最小應用系統。 2、能使用工具軟件繪制單片機硬件原理圖、能編寫簡LCD控制程序。 3、會使用LCD1602顯示指定的内容。 | |||
2、任務設計要求 采用STC89C52單片機構建最小系統,在I/O口外接1602,編程實現在1602字符型 LCD顯示:實現字符的靜态和動态顯示。顯示字符為第一行:“I am xx”,第二行:“Hou are you”。 | |||
3、總體設計方案 根據實驗任務要求,通過功能分析,設計的系統總體方案如圖所示。 并行接口 AT89C51單片機 電源 時鐘電路 複位電路 實現led顯示屏顯示 | |||
4、硬件電路設計
| |||
5、軟件程序設計 (1)、程序設計思路(流程圖繪制)
結束
結束
結束 (2)程序清單 #include<reg51.h> #include<intrins.h>//包含_nop_()空函數指令的頭文件 #define uchar unsigned char #define uint unsigned int #define out P0 sbit RS=P2^0;//位變量 sbit RW=P2^1;//位變量 sbit E=P2^2;//位變量 void lcd_ini();//LCD初始化函數 void check_busy();//檢查忙标志函數 void w_command(uchar com);//寫命令函數 void w_data(uchar dat);//寫數據函數 void string(uchar ad,uchar*s); void lcd_busy(void); void delay(uint); void lcd_ini(); void main(void)//主函數 { lcd_ini();//調用對LCD初始化函數 while(1) { string(0x80,"I am dujingjing");//顯示的第1行字符串 string(0xC2,"HOW are you");//顯示的第2行字符串 delay(100);//延時 w_command(0x01);//寫入清屏命令 delay(100);//延時 } } void delay(uint j)//1ms延時子程序 { uchar i=250; for(;j>0;j--) { while(--i); i=249; while(--i); i=250; } } void check_busy(void)//檢查忙标志函數函數檢測P0.7腳電平,即檢測忙 { uchar dt; do { dt=0xff; E=0; RS=0; RW=1; E=1; dt=out; } while(dt&0x80); E=0; } void w_command(uchar com)//寫命令函數 { check_busy(); E=0; RS=0; RW=0; out=com; E=1; _nop_(); E=0; delay(1); } void w_data(uchar dat)//寫數據函數 { check_busy(); E=0; RS=1; RW=0; out=dat; E=1; _nop_(); E=0; delay(1); } void lcd_ini()//液晶顯示器初始化函數 { w_command(0x38);//寫入命令0x38:8位兩行顯示,5×7點陣字符 w_command(0x0C);//寫入命令0x0C:開整體顯示,光标關,無黑塊 w_command(0x06);//寫入命令0x06:光标右移 w_command(0x01);//寫入命令0x01:清屏 delay(1); } void string(uchar ad,uchar*s)//輸出顯示字符串的函數 { w_command(ad); while(*s>0) { w_data(*s );//輸出字符串,且指針增1 delay(100); } } | |||
| |||
7、項目總結 本次實驗了解到1206液晶的儲存器結構以及其基本的操作時序。了解到在指令設置中如何顯示開、關及光标設置。地址設置:第一行地址從0x80開始,第二行地址從0xC0開始。知識要慢慢積累,實踐更為重要。在做實驗的過程中會慢慢發現不足之處,強化練習,以減少錯誤的出現,使實驗順利完成。 | |||
8、項目設計報告成績 指導教師簽字: 年 月 日 |
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!