具體實現(xiàn)功能:
利用51單片機流水燈和LCD1602實現(xiàn)表白功能。
設計介紹
51單片機簡介
51單片是一種低功耗、高性能CMOS-8位微控制器,具有8K可編程Flash存儲器,使得其為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。
51系列單片機具有以下標準功能:
8k字節(jié)Flash,512字節(jié)RAM,
內置4KB EEPROM,
MAX810復位電路,
三個16位定時器/計數(shù)器,
一個6向量2級中斷結構,
全雙工串行口。
另外, 51系列在空閑模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機停止工作,直到下一個中斷或硬件復位為止。本設計所使用的芯片可兼容以下所有的51系列單片機(包括AT系列和STC系列)。
設計思路
文獻研究法:搜集整理相關研究資料,閱讀文獻,為研究做準備;
調查研究法:通過調查、分析、具體實驗等方法,發(fā)現(xiàn)相關存在問題和解決辦法;
比較分析法:比較不同設計的具體原理,以及同一類傳感器性能的區(qū)別,分析系統(tǒng)的研究現(xiàn)狀與發(fā)展前景;
軟硬件設計法:通過軟硬件設計實現(xiàn)硬件,最后測試各項功能是否滿足要求。
單片機類設計論文參考模板:
畢設無憂|單片機類畢設論文模板
設計內容
仿真圖(protues8.7)
本設計利用protues8.7軟件實現(xiàn)仿真設計,具體如圖。
注:免費分享,請按照下圖自行繪制仿真??!
protues8.7軟件資料及仿真解決辦法:
proteus8.7安裝及破解教程(內附安裝包)
protues仿真常見問題解決方案
Protues8.7簡易教程
程序(Keil5)
本設計利用KEIL5軟件實現(xiàn)程序設計。
注:全部代碼免費分享,請自行建立工程??!
本設計由C語言編寫,全部代碼如下:
#include//包含頭文件 #include #define uchar unsigned char #define uint unsigned int #define SPEED 10 //流水燈的速度 sbit RS = P2^2;//命令數(shù)據(jù)選擇腳 sbit RW = P2^3;//讀寫操作腳 sbit E = P2^4;//使能腳 低電平有效 /****延時****/ void delay(uint i) { uint j=1000; while(i--) { j=1000; while(j--); } } void delayms(uint z) //毫秒 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } uchar LED_WATER1() { static uchar temp1=0x01,temp2=0x80; P1=~temp1; temp1=_crol_(temp1,1); P3=~temp2; temp2=_cror_(temp2,1); delay(SPEED); if(temp1==0x01)//循環(huán)了一圈 {return 1;} else return 0; } void write_command(uchar command)//寫指令函數(shù) { RW = 0;//寫 RS = 0;//指令 E = 1;//拉高電平 P0 = command;//送指令 delay(20);//延時 E = 0;//拉低電平 輸出有效 RW = 1;//拉高電平 } void write_data(uchar date)// { RW = 0;//寫 RS = 1;//數(shù)據(jù) E = 1;//拉高電平 P0 = date;//送數(shù)據(jù) delay(20);//延時 E = 0;//使能腳 低電平寫入有效 RW = 1;//拉高電平 } void display_string(uchar *p)//顯示地址函數(shù) { while(*p)//循環(huán)這個p { write_data(*p);//送數(shù)據(jù) 為p p++;//每次p自加一 } } void gotoxy(unsigned y,unsigned x)//地址位置定義 { if(y == 1) // 如果y等于1 write_command(0x80+x);//地址就是0x80加上x else if(y == 2) //如果y等于1 write_command(0x80+0x40+x);//地址就是0x80+0x40(第二行)加上x } void F1602_init(void)//初始化函數(shù) { write_command(0x38);//兩行,每行16字符,每個字符5*7點陣 write_command(0x0C);//開光標及進入光標設置 write_command(0x06C);//設置光標和地址自動加一 } void F1602_clear()//清屏 { write_command(0x01);//寫指令 0x01 清屏 write_command(0x02);//寫指令 0x02 光標回歸原點 但內容不變 } uchar LED_WATER2() { static uchar temp1=0x01,temp2=0x01; P1=~temp1; temp1=_crol_(temp1,1); P3=~temp2; temp2=_crol_(temp2,1); delay(SPEED); if(temp1==0x01) {return 1;} else return 0; } uchar LED_WATER3() { static uchar temp1=0x07,temp2=0x07; P1=~temp1; temp1=_crol_(temp1,1); P3=~temp2; temp2=_crol_(temp2,1); delay(SPEED); if(temp1==0x07) {return 1;} else return 0; } uchar LED_WATER4() { static uchar temp1=0x07,temp2=0xe0; P1=~temp1; temp1=_crol_(temp1,1); P3=~temp2; temp2=_cror_(temp2,1); delay(SPEED); if(temp1==0x07)//循環(huán)了一圈 {return 1;} else return 0; } //主函數(shù) void main() { F1602_init();//初始化1602 F1602_clear();//清屏 LED_WATER1(); delayms(500); LED_WATER2(); delayms(500); LED_WATER3(); delayms(500); LED_WATER4(); display_string(" I LOVE YOU ");//執(zhí)行顯示地址函數(shù) gotoxy(2,0);//設定地址 display_string(" MY GIRL "); while(1) { LED_WATER1(); delayms(500); LED_WATER2(); delayms(500); LED_WATER3(); delayms(500); LED_WATER4(); } }
運行結果如圖:
電子工程師成長日記
-
微控制器
+關注
關注
48文章
7658瀏覽量
152154 -
單片機
+關注
關注
6043文章
44623瀏覽量
638749 -
51單片機
+關注
關注
274文章
5705瀏覽量
124350 -
流水燈
+關注
關注
21文章
433瀏覽量
59838 -
LCD1602
+關注
關注
14文章
607瀏覽量
52725
原文標題:設計分享|單片機流水燈表白
文章出處:【微信號:電子工程師成長日記,微信公眾號:電子工程師成長日記】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
使用51單片機實現(xiàn)LCD1602液晶顯示實驗的程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>LCD1602</b>液晶顯示實驗的程序免費下載](https://file.elecfans.com/web1/M00/A6/DD/o4YBAF2B872ARUgcAAiS37VGGOs884.png)
使用51單片機實現(xiàn)LCD1602靜態(tài)顯示的程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>LCD1602</b>靜態(tài)顯示的程序免費下載](https://file.elecfans.com/web1/M00/A5/65/pIYBAF1s482ASi3FAAPd77N_YEM381.png)
使用51單片機利用循環(huán)指令實現(xiàn)流水燈的程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>利用</b>循環(huán)指令<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>流水燈</b>的程序免費下載](https://file.elecfans.com/web1/M00/98/45/o4YBAF0UgK6AA-FBAAXjgpOHkBY310.png)
使用51單片機用LCD1602實現(xiàn)電子時鐘的程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>用<b class='flag-5'>LCD1602</b><b class='flag-5'>實現(xiàn)</b>電子時鐘的程序免費下載](https://file.elecfans.com/web1/M00/98/2F/o4YBAF0UYiaAGe7QAAiOdjmPTwE209.png)
使用51單片機實現(xiàn)LCD1602顯示屏顯示的仿真文件免費下載
51單片機驅動LCD1602顯示原理及例程
![<b class='flag-5'>51</b><b class='flag-5'>單片機</b>驅動<b class='flag-5'>LCD1602</b>顯示原理及例程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
51單片機LCD1602顯示實驗
![<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>LCD1602</b>顯示實驗](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
51單片機與LCD1602接口電路與程序
![<b class='flag-5'>51</b><b class='flag-5'>單片機</b>與<b class='flag-5'>LCD1602</b>接口電路與程序](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
51單片機怎么顯示當前時間_(記錄)51單片機——LCD1602液晶顯示模塊
![<b class='flag-5'>51</b><b class='flag-5'>單片機</b>怎么顯示當前時間_(記錄)<b class='flag-5'>51</b><b class='flag-5'>單片機</b>——<b class='flag-5'>LCD1602</b>液晶顯示模塊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
51單片機驅動——LCD1602
![<b class='flag-5'>51</b><b class='flag-5'>單片機</b>驅動——<b class='flag-5'>LCD1602</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
51單片機如何跳出wile循環(huán)_51單片機(九)匯編指令
![<b class='flag-5'>51</b><b class='flag-5'>單片機</b>如何跳出wile循環(huán)_<b class='flag-5'>51</b><b class='flag-5'>單片機</b>(九)匯編指令](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論