|
本程序需要解決如下問題:
1:記錄按鍵次數(shù);
2:按鍵次數(shù)寫入AT24C02;
3:將按鍵次數(shù)從AT24C02中 讀出并用1602LCD顯示。
如果將問題放在一起考慮,會(huì)很亂,程序也不容易編寫,但是如果將AT24C02的讀寫程序?qū)懗梢粋(gè)模塊,將1602的顯示程序?qū)懗隽硗庖粋(gè)模塊,及時(shí)不熟練,呵呵,可以COPY,注意一下接口就行了,是不是很簡(jiǎn)單!
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
效果圖.png (33.32 KB, 下載次數(shù): 165)
下載附件
2017-6-12 16:50 上傳
0.png (54.4 KB, 下載次數(shù): 145)
下載附件
2017-6-12 16:53 上傳
單片機(jī)源程序如下:
- //實(shí)例86:將按鍵次數(shù)寫入AT24C02,再讀出并用1602LCD顯示
- #include<reg51.h> //包含單片機(jī)寄存器的頭文件
- #include<intrins.h> //包含_nop_()函數(shù)定義的頭文件
- #include "LCD1602.h"
- #include "AT24C02.h"
- sbit S=P1^4; //將S位定義為P1.4引腳
- unsigned char code digit[ ]={"0123456789"}; //定義字符數(shù)組顯示數(shù)字
- /***************************************************
- 函數(shù)功能:LCD1602顯示次數(shù)
- (具體的顯示要求,放在主程序之中)
- ***************************************************/
- void Display(unsigned char x)
- {
- unsigned char i,j;
- i=x/10; //取整運(yùn)算,求得十位數(shù)字
- j=x%10; //取余運(yùn)算,求得各位數(shù)字
- WriteAddress(0x44); //寫顯示地址,將十位數(shù)字顯示在第2行第5列
- WriteData(digit[i]); //將十位數(shù)字的字符常量寫入LCD
- WriteData(digit[j]); //將個(gè)位數(shù)字的字符常量寫入LCD
-
- }
- /*********************************************************************
- 函數(shù)功能:主函數(shù)
- ***********************************************************************/
- void main(void)
- {
- unsigned char sum; //儲(chǔ)存計(jì)數(shù)值
- unsigned char x; //儲(chǔ)存從AT24C02讀出的值
- LcdInitiate(); //調(diào)用LCD初始化函數(shù)
- sum=0; //將計(jì)數(shù)值初始化為0
- while(1) //無限循環(huán)
- {
- if(S==0) //如果該鍵被按下
- {
- delaynms(80); //軟件消抖,延時(shí)80ms
- if(S==0) //確實(shí)該鍵被按下
- sum++; //計(jì)件值加1
- if(sum==99) //如果計(jì)滿99
- sum=0; //清0,重新開始計(jì)數(shù)
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
將按鍵次數(shù)寫入AT24C02,再讀出并用1602LCD顯示(利用模塊化編程的很好例子).zip
(27.93 KB, 下載次數(shù): 421)
2017-6-12 16:50 上傳
點(diǎn)擊文件名下載附件
源文件 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|