




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit rs=P30; sbit rw=P31; sbit lcden=P32; /液晶顯示屏相關(guān)位定義/sbit AD_OUT=P14;/sbit AD_IN=P15;/sbit AD_CS=P16;/sbit AD_CLOCK=P17;/sbit EOC=P33;sbit DSO=P14;sbit DSI=P15;sbit CS=P16;sbit CLK=P17;sbit DA_IN=P10;sbit DA_CK=P11;sbit DA_
2、CS=P12;unsigned long int value,value1;uchar set;uint a,b,z,temp1,temp_1;/DA輸出變量值float x,y,out=0;uint AD_DAstart;char iset6=0,0,0,0,0,0;uchar code table1="Are you sure "uchar code table2=" to set I? "void delay(uchar x) /延時(shí)子程序 uchar i,j; for(i=0;i<x;i+) for(j=0;j<120;j+); /延
3、時(shí)120秒 void delay1(uint t) /極短延時(shí) while(t-); void delayms(uint z) /延時(shí)函數(shù),參數(shù)為zuint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); /z=1測(cè)試為大約1微秒 void write_com(uchar com) /寫命令函數(shù)rs=0; /rs置0表示寫命令P0=com; /位聲明,按原理圖接P0口,輸入數(shù)據(jù)delayms(5); /時(shí)序圖中須有thd2時(shí)間延時(shí)lcden=1; /置高delayms(5); /時(shí)序圖中須有thd2時(shí)間延時(shí)lcden=0; /按時(shí)序圖置低void w
4、rite_date(uchar date) /寫數(shù)據(jù)函數(shù)rs=1; /rs置1表示寫數(shù)據(jù)lcden=0; P0=date; /將數(shù)據(jù)賦到P0口delayms(5); lcden=1; delayms(5); lcden=0; void led_init() /初始化函數(shù)lcden=0;rw=0;write_com(0x38); /顯示模式設(shè)置:16X2顯示,5X7點(diǎn)陣,8位數(shù)據(jù)write_com(0x0c); / 開顯示,關(guān)光標(biāo),光標(biāo)不閃爍write_com(0x06); / 寫一個(gè)數(shù)據(jù)后地址指針加一,光標(biāo)加一write_com(0x01); / 數(shù)據(jù)指針及數(shù)據(jù)清0write_com(0x80
5、); / 設(shè)置數(shù)據(jù)地址指針,第一行 write_date(0x53);write_date(0x30+iset1);write_date(0x30+iset2);write_date(0x2e);write_date(0x30+iset4);write_date(0x30+iset5);/uint read2543(uchar port) /AD轉(zhuǎn)換子程序/uint ad=0,j;/ AD_CLOCK=0;/ AD_CS=0;/EOC=1;/ port<<=4;/ delay1(50); / for(j=0;j<12;j+)/ / if(AD_OUT) / / ad|=0x0
6、1;/ / AD_IN=(bit)(port&0x80);/ AD_CLOCK=1;/ delay1(6);/ AD_CLOCK=0;/ delay1(3);/ port<<=1;/ ad<<=1;/ / AD_CS=1;/ ad>>=1;/ return(ad);/uint Read_TLC2543(uchar CHN)/TLC2543據(jù)轉(zhuǎn)換函數(shù)(方法二)/ uchar i,temp;/ uint read_ad_data = 0; /分別存放采集的數(shù)據(jù),先清0/ CHN=CHN<<4; /12位格式,選擇高位道導(dǎo)前,單極性/ CLK=
7、0;/ CS=1;/ CS=0; /下降沿,并保持低電平/ temp=CHN; /輸入要轉(zhuǎn)化的通道/ for(i=0;i<12;i+) /12位數(shù)據(jù)/ / read_ad_data=read_ad_data<<1; /轉(zhuǎn)換結(jié)果左移一位/ if(temp&0x80)!=0)DSI=1; /送方式、通道控制字 串行輸入/ elseDSI=0;/ if(DSO)read_ad_data=read_ad_data+1; /讀入轉(zhuǎn)換結(jié)果/ CLK =1;/ CLK =0;/ temp=temp<<1; /左移,準(zhǔn)備發(fā)送方式,通道控制字下一位/ / CS=1;/ re
8、ad_ad_data=read_ad_data&0x0fff; /屏蔽高四位,因?yàn)槭?2位的轉(zhuǎn)換結(jié)果/ return(read_ad_data);/ uint Read_TLC2543(uchar chanle)/TLC2543數(shù)據(jù)轉(zhuǎn)換函數(shù)(方法一)uchar i,dah=0,dal=0;uint date;CS=1;CS=0;CLK=0;chanle<<=4;/高低位交換for(i=0;i<4;i+) dah<<=1;if(DSO)dah+;/高四位數(shù)據(jù)DSI=chanle&0x80;/選擇轉(zhuǎn)換通道CLK=1;delay(1);CLK=0;cha
9、nle<<=1;DSI=0;/此部不能少!for(i=0;i<8;i+)/轉(zhuǎn)換的數(shù)據(jù)低8位 CLK=1;dal<<=1;if(DSO)dal+;CLK=0; CS=1;date=dah;/轉(zhuǎn)換的數(shù)據(jù)高四位date<<=8;date=date|dal;/合并12位數(shù)據(jù)return(date); void adzh() uint ge,shi,x1,x2; /電流檢測(cè)測(cè)出電流實(shí)際值 temp1=Read_TLC2543(0x00); y=temp1*5.0/4096; z=y*100; /輸出AD轉(zhuǎn)換后的電流值 shi=z/1000; ge=(z/100)
10、%10; x1=(z/10)%10; x2=z%10; write_com(0x80+0x40); /顯示電流值 write_date(0x54); write_date(0x30+shi); write_date(0x30+ge); write_date(0x2e); write_date(0x30+x1); write_date(0x30+x2); write_date(0x41);void adzh_1() /電壓檢測(cè)測(cè)出電壓實(shí)際值 uchar ge,shi,x1,x2; temp_1=Read_TLC2543(0x01); y=temp_1*5.0/4096; /輸出AD轉(zhuǎn)換后的電壓
11、y=y*4.0; z=y*100; shi=z/1000; ge=(z/100)%10; x1=(z/10)%10; x2=z%10; write_com(0x80+0x40); /顯示電壓值 write_date(0x54); write_date(0x30+shi); write_date(0x30+ge); write_date(0x2e); write_date(0x30+x1); write_date(0x30+x2); write_date(0x56); void Send1456(uint DACdat)uchar i=0;DA_CK=0;delay(2);DA_CS=0;del
12、ay(2);for(i=0;i<12;i+)DA_IN=(bit)(DACdat&0x800);DA_CK=1;DACdat<<=1;DA_CK=0;DA_CS=1;DA_CS=0; void keyscan() /矩陣鍵盤 uchar temp,keycount,num; / 定義局部變量P2=0xfe; / 檢測(cè)最上面一行各鍵是否有按鍵按下 temp=P2; / 將P2口的值賦給temp temp=temp&0xf0; / 位與 if(temp!=0xf0) delayms(100); temp=P2; temp=temp&0xf0; if(tem
13、p!=0xf0) /確認(rèn)被按下,防止抖動(dòng) temp=P2; switch(temp) case 0xee: /檢測(cè)到7被按下 if(keycount!=0&&keycount!=3) write_date(0x30+7); isetkeycount+=7; break; case 0xde: /檢測(cè)到8被按下 if(keycount!=0&&keycount!=3) write_date(0x30+8); isetkeycount+=8; break; case 0xbe: /檢測(cè)到9被按下 if(keycount!=0&&keycount!=3
14、) write_date(0x30+9); isetkeycount+=9; break;case 0x7e: /檢測(cè)到取消鍵被按下 write_com(0x01); / 數(shù)據(jù)指針及數(shù)據(jù)清0 write_com(0x0c); write_com(0x80); write_date(0x53); write_date(0x30+iset1); write_date(0x30+iset2); write_date(0x2e); write_date(0x30+iset4); write_date(0x30+iset5); AD_DAstart=1; while(temp!=0xf0) /松手檢測(cè)
15、temp=P2; temp=P2&0xf0; P2=0xfd; / 檢測(cè)最二行各鍵是否有按鍵按下 temp=P2; / 將P2口的值賦給temp temp=temp&0xf0; / 位與 if(temp!=0xf0) delayms(100); temp=P2; temp=temp&0xf0; if(temp!=0xf0) /確認(rèn)被按下,防止抖動(dòng) temp=P2; switch(temp) case 0xed: /檢測(cè)到4被按下 if(keycount!=0&&keycount!=3) write_date(0x30+4); isetkeycount+=
16、4; break; case 0xdd: /檢測(cè)到5被按下 if(keycount!=0&&keycount!=3) write_date(0x30+5); isetkeycount+=5; break; case 0xbd: /檢測(cè)到6被按下 if(keycount!=0&&keycount!=3) write_date(0x30+6); isetkeycount+=6; break;case 0x7d: / 選擇電流/write_com(0x86) ;/ write_date(0x41) ;/x=iset1*10+iset2+iset4*0.1+iset5*
17、0.01;/out=x*0.1;/value=1024*out;/tlc5615(value);/ adzh(); a=1; AD_DAstart=1; break; while(temp!=0xf0) /松手檢測(cè) temp=P2; temp=P2&0xf0; P2=0xfb; / 檢測(cè)第三行各鍵是否有按鍵按下 temp=P2; / 將P2口的值賦給temp temp=temp&0xf0; / 位與 if(temp!=0xf0) delayms(100); temp=P2; temp=temp&0xf0; if(temp!=0xf0) /確認(rèn)被按下,防止抖動(dòng) temp=
18、P2; switch(temp) case 0xeb: /檢測(cè)到1被按下 if(keycount!=0&&keycount!=3) write_date(0x30+1); isetkeycount+=1; break; case 0xdb: /檢測(cè)到2被按下 if(keycount!=0&&keycount!=3) write_date(0x30+2); isetkeycount+=2; break; case 0xbb: /檢測(cè)到3被按下 if(keycount!=0&&keycount!=3) write_date(0x30+3); iset
19、keycount+=3; break; case 0x7b: / 選擇電壓b=1;/ write_com(0x86) ;/ write_date(0x56);/x=iset1*10+iset2+iset4*0.1+iset5*0.01;/out=x*0.1;/value=1024*out;/ /tlc5615(value);/ adzh_1(); AD_DAstart=1; break; while(temp!=0xf0) /松手檢測(cè) temp=P2; temp=P2&0xf0; P2=0xf7; / 檢測(cè)第四行各鍵是否有按鍵按下 temp=P2; / 將P2口的值賦給temp tem
20、p=temp&0xf0; / 位與 if(temp!=0xf0) delayms(100); temp=P2; temp=temp&0xf0; if(temp!=0xf0) /確認(rèn)被按下,防止抖動(dòng) temp=P2; switch(temp) case 0xe7: /檢測(cè)到0被按下 if(keycount!=0&&keycount!=3) write_date(0x30); isetkeycount+=0; break; case 0xd7: /檢測(cè)到刪除鍵被按下if(keycount<6&&keycount>0) if(keycoun
21、t!=1) keycount-;write_com(0x80+keycount); break; case 0xb7: /檢測(cè)到確認(rèn)鍵被按下 if(set=1) write_com(0x01); / 數(shù)據(jù)指針及數(shù)據(jù)清0write_com(0x80);write_date(0x53);write_com(0x0f);write_com(0x80+1);set=0;keycount=1; break; case 0x77: write_com(0x01); / 數(shù)據(jù)指針及數(shù)據(jù)清0 write_com(0x80); / 設(shè)置數(shù)據(jù)地址指針,第一行 for(num=0;num<16;num+) write_date(table1num)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 有效管理時(shí)間的月度工作方案計(jì)劃
- 儀表知識(shí)溫度培訓(xùn)課件
- 第24課《唐詩(shī)三首》之《茅屋為秋風(fēng)所破歌》教學(xué)設(shè)計(jì) 2023-2024學(xué)年統(tǒng)編版語(yǔ)文八年級(jí)下冊(cè)
- 某婦產(chǎn)醫(yī)院品牌推廣部網(wǎng)絡(luò)推廣工作思路
- 2025年青海普通貨運(yùn)從業(yè)資格證模擬考試
- 2025年淮南駕駛資格證模擬考試
- 2025年杭州貨運(yùn)從業(yè)資格模擬考試
- 2025年上海貨運(yùn)從業(yè)資格證考試試題及答案
- 2025年德州c1貨運(yùn)從業(yè)資格證考試內(nèi)容
- 2025年陜西貨運(yùn)叢業(yè)資格證考試題目及答案
- 化工生產(chǎn)中的智能優(yōu)化
- 配電室安全規(guī)定樣本(3篇)
- 《西方經(jīng)濟(jì)學(xué)》(上冊(cè))課程教案
- 移動(dòng)政企部年終總結(jié)
- 施工合同協(xié)議書樣本
- 醫(yī)學(xué)綜合題庫(kù)(含答案)
- 人教版化學(xué)九年級(jí)下冊(cè)全冊(cè)綜合考試試題(九年級(jí)下學(xué)期期中考試化學(xué)試卷)
- 中考英語(yǔ)高頻語(yǔ)法小專題考點(diǎn)講練系列十五+spend+take+pay+cost+花費(fèi)系列
- 工會(huì)一函兩書模板
- 四年級(jí)語(yǔ)文下冊(cè)第六單元【集體備課】(教材解讀+教學(xué)設(shè)計(jì))
- 2024版義務(wù)教育小學(xué)科學(xué)課程標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論