基于80c51單片機(jī)的數(shù)據(jù)采集與顯示系統(tǒng)設(shè)計(jì)說(shuō)明_第1頁(yè)
基于80c51單片機(jī)的數(shù)據(jù)采集與顯示系統(tǒng)設(shè)計(jì)說(shuō)明_第2頁(yè)
基于80c51單片機(jī)的數(shù)據(jù)采集與顯示系統(tǒng)設(shè)計(jì)說(shuō)明_第3頁(yè)
基于80c51單片機(jī)的數(shù)據(jù)采集與顯示系統(tǒng)設(shè)計(jì)說(shuō)明_第4頁(yè)
基于80c51單片機(jī)的數(shù)據(jù)采集與顯示系統(tǒng)設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、. . . . 題目:數(shù)據(jù)采集與顯示系統(tǒng)設(shè)計(jì)設(shè)計(jì)基本功能:利用TLC549做A/D轉(zhuǎn)換器,外界提供模擬電壓輸入信號(hào),將模擬量轉(zhuǎn)化成數(shù)字量,在單片機(jī)控制下實(shí)現(xiàn)對(duì)外部輸入信號(hào)的數(shù)據(jù)采集,并將采集數(shù)據(jù)結(jié)果在LED數(shù)碼管上顯示,顯示結(jié)果為實(shí)際輸入電壓數(shù)值。 要求能夠?qū)崿F(xiàn)單次觸發(fā)存儲(chǔ)顯示方式,即每按動(dòng)一次“單次觸發(fā)”鍵,能對(duì)被測(cè)信號(hào)進(jìn)行一次采集與顯示。系統(tǒng)在不采集信號(hào)時(shí),顯示當(dāng)前時(shí)間。一、 硬件設(shè)計(jì)本方案分為三個(gè)模塊:?jiǎn)纹瑱C(jī)模塊、AD模塊、I2C模塊,其中I2C模塊有時(shí)鐘、鍵盤(pán)和LED三部分組成。1、 單片機(jī)模塊該模塊設(shè)計(jì)實(shí)現(xiàn)單片機(jī)最小系統(tǒng)和與其他模塊的接口。電路圖見(jiàn)圖一。圖一 2、 AD模塊該模塊是T

2、LC549的電路連接。見(jiàn)圖二。圖二 TLC5493、 I2C模塊本模塊是由時(shí)鐘芯片PCF8563和由ZLG7290連接的鍵盤(pán)、6位LED組成。實(shí)現(xiàn)時(shí)鐘設(shè)置、讀取,鍵盤(pán)識(shí)別,以與顯示功能。電路連接見(jiàn)圖三、四。圖三 ZLG7290圖四 PCF8563二、 軟件設(shè)計(jì)1、流程圖見(jiàn)圖五。按下2鍵按一下3鍵按 兩 下3鍵按 兩 下2鍵按下5鍵按下1鍵再次按1鍵第一次按下1鍵開(kāi)始時(shí)鐘、鍵盤(pán)初始化顯示年月日掃描鍵盤(pán)AD采樣顯示結(jié)果掃描鍵盤(pán)顯示時(shí)間掃描鍵盤(pán)時(shí)位閃爍按4鍵加1年份閃爍按4鍵加1月份閃爍按4鍵加1分位閃爍按4鍵加1日閃爍按4鍵加1按 三 下2鍵圖五 流程圖2程序#include <REG51.

3、h>#include <intrins.h>#include <absacc.h>#include "VIIC_C51.h"#include "ZLG7290.h"#definePCF85630xA2/定義器件地址#defineWRADDR0x00/定義寫(xiě)單元首地址#defineRDADDR0x02/定義讀單元首地址#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#defineZLG72900x70/定義器件地址/定

4、義TLC549串行總線操作端口sbitCLK=P10;sbitDAT=P11;sbitCS=P12;/定義I2C總線控制端口sbitSDA=P17;sbitSCL=P16;/顯示緩沖區(qū)初始化:DP-51PROunsigned char disp_buf8=0,0,0,0,0,0,0,0;/顯示緩存ucharbdata ADCdata;sbitADbit=ADCdata0;sbitKEY_INT=P32;sbitRST=P10;unsigned char KEY;/保存鍵值/*函數(shù)名稱:TLC549ADC()*函數(shù)功能:讀取上一次A/D轉(zhuǎn)換的數(shù)據(jù),啟動(dòng)下一次A/D轉(zhuǎn)換*/ucharTLC549A

5、DC(void)uchar i;CLK=0;DAT=1;CS=0;for(i=0;i<8;i+)CLK=1;_nop_();_nop_();ADCdata<<=1;ADbit=DAT;CLK=0;_nop_();return (ADCdata);/*函數(shù)名稱:delay()*函數(shù)功能:硬件延時(shí)程序*入口參數(shù):i*/unsigned char DelayNS(unsigned char no) unsigned char i,j;/延時(shí)參數(shù)for(; no>0; no-) for(i=0; i<100; i+) for(j=0; j<100; j+); ret

6、urn 0; /*A/D數(shù)據(jù)轉(zhuǎn)換處理和輸出顯示功能函數(shù)*/*函數(shù)名稱:display()*函數(shù)功能:處理A/D轉(zhuǎn)換后的數(shù)據(jù)并輸出顯示*/void display(uchar advalue) ulong ad_disp;ad_disp=(ulong)advalue)*500/255; disp_buf2 =(uchar)(ad_disp/100%10)+0x80; disp_buf1 =(uchar)(ad_disp/10%10); disp_buf0 =(uchar)(ad_disp/1%10);disp_buf3 = 31; disp_buf4 = 31; disp_buf5 = 31;

7、disp_buf6 = 31; disp_buf7 = 31;ZLG7290_SendBuf(disp_buf,8);unsigned char display_time(unsigned char *sd) sd0=sd0&0x7f;/秒屏蔽保留位sd1=sd1&0x7f;/分屏蔽保留位sd2=sd2&0x3f;/時(shí)屏蔽保留位 disp_buf0 =(sd0%16); disp_buf1 =(sd0/16); disp_buf2 = 31; disp_buf3 =(sd1%16); disp_buf4 =(sd1/16); disp_buf5 = 31; disp_b

8、uf6 =(sd2%16); disp_buf7 =(sd2/16); ZLG7290_SendBuf(disp_buf,8);return 0;unsigned char display_date(unsigned char *sd) sd0=sd0&0x3f;/日屏蔽保留位sd2=sd2&0x1f;/月屏蔽保留位disp_buf0 =(sd0%16); disp_buf1 =(sd0/16); disp_buf2 =(sd2%16)+0x80;/后面加小數(shù)點(diǎn) disp_buf3 =(sd2/16); disp_buf4 =(sd3%16)+0x80;/后面加小數(shù)點(diǎn) disp

9、_buf5 =(sd3/16); disp_buf6 =0; disp_buf7 =2; ZLG7290_SendBuf(disp_buf,8);return 0;voidmain()uchar ad_sample;uchar key1_count=0,key2_count=0,key3_count=0;unsigned char code td9=0x00,0x12,0x00,0x15,0x12,0x13,0x05,0x01,0x11;/定義初始化字unsigned char rd7;/定義接收緩沖區(qū)RST=0;DelayNS(1);RST=1;ISendStr(PCF8563,WRADDR

10、,td,0x5);/初始化PCF8563DelayNS(1);ISendStr(PCF8563,WRADDR+5,&td5,0x4);/初始化PCF8563ZLG7290_SendBuf(disp_buf,8);ZLG7290_SendData(0X15,0X02); disp_buf7 =0x1f; disp_buf6 =0x1f; disp_buf5 =0x1f; disp_buf4 =0x1f; disp_buf3 =0x1f;DelayNS(50);IRcvStr(PCF8563,RDADDR,rd,0x7);/讀現(xiàn)在的時(shí)、分、秒DelayNS(1);while(1)if(KE

11、Y_INT=0) KEY=ZLG7290_GetKey(); if(KEY=1) /顯示切換key1_count+;if(key1_count>2)key1_count=0;if(KEY=2)/調(diào)整日期 key2_count+;if(key2_count>3)key2_count=0; if(KEY=3)/調(diào)整時(shí)間 key3_count+;if(key3_count>2)key3_count=0; if(KEY=5)/采集電壓 ad_sample=TLC549ADC(); /*修改日期*/if(key2_count=1) /調(diào)整年disp_buf5 =31;disp_buf4

12、 =31; ZLG7290_SendBuf(disp_buf,8);DelayNS(2); if(KEY=4) rd6+;if(rd6&0x0f)>=0x0a)rd6&=0xf0;rd6+=0x10;else if(key2_count=2) /調(diào)整月 disp_buf3 =31;disp_buf2 =31; ZLG7290_SendBuf(disp_buf,8);DelayNS(2);if(KEY=4) rd5+;if(rd5&0x0f)>=0x0a)rd5&=0xf0;rd5+=0x10;if(rd5>=0x13)rd5=0x01;else

13、 if(key2_count=3)/調(diào)整日disp_buf1 =31;disp_buf0 =31; ZLG7290_SendBuf(disp_buf,8);DelayNS(2);if(KEY=4) rd3+;if(rd3&0x0f)>=0x0a)rd3&=0xf0;rd3+=0x10;if(rd3>=0x32)rd3=0x01;/*修改時(shí)間*/if(key3_count=1)/修改小時(shí)disp_buf6 =31;disp_buf7 =31; ZLG7290_SendBuf(disp_buf,8);DelayNS(2); if(KEY=4) rd2+;if(rd2&0x0f)>=0x0a)rd2&=0xf0;rd2+=0x10;if(rd2>=0x24)rd2=0x00;else if(key3_count=2) /修改分鐘disp_buf3 =31;disp_buf4 =31; ZLG7290_SendBuf(disp_buf,8);DelayNS(2);if(KEY=4) r

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論