|
在學(xué)校沒(méi)有好好學(xué)習(xí),所以很多地方都不懂,過(guò)來(lái)請(qǐng)教一下。有沒(méi)有大佬愿意提供一下思路,意見(jiàn),萬(wàn)分感謝!控制板是SAB80c537,存儲(chǔ)芯片M27C512。目的是能通過(guò)串口通信在電腦上檢測(cè)一塊控制板有沒(méi)有故障,順便采集電壓并顯示大小。
控制板有電壓輸出和采集,但是采集口較少,需要38譯碼器繪制PCB但是不太懂(電壓采集 電壓量的大小如何檢測(cè),是在要設(shè)計(jì)的PCB板上加一些東西嘛?)
串口調(diào)試方面,是不是只要能夠?qū)崿F(xiàn)通訊這個(gè)功能就可以,對(duì)程序有沒(méi)有要求
如果我要對(duì)采集的IO數(shù)據(jù)編輯處理,設(shè)置面板那種電腦上按鍵控制后面直接顯示某個(gè)電壓值難度高嘛?是在繪制PCB的時(shí)候通過(guò)硬件電路就能直接處理,還是在采集完信號(hào)之后通過(guò)燒錄的程序處理?
附上目前的單片機(jī)程序:
串口的:- #include "reg52.h" //包函8051 內(nèi)部資源的定義
- unsigned char dat; //用于存儲(chǔ)單片機(jī)接收發(fā)送緩沖寄存器SBUF里面的內(nèi)容
- sbit gewei=P2^4; //個(gè)位選通定義
- sbit shiwei=P2^5; //十位選通定義
- sbit baiwei=P2^6; //百位選通定義
- unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //1~10
- void Delay(unsigned int tc) //延時(shí)程序
- {
- while( tc != 0 )
- {unsigned int i;
- for(i=0; i<100; i++);
- tc--;}
- }
- void LED() //LED顯示接收到的數(shù)據(jù)(十進(jìn)制)
- {
- gewei=0; P0=table[dat%10]; Delay(10); gewei=1;
- shiwei=0; P0=table[dat/10]; Delay(10); shiwei=1;
- baiwei=0; P0=table[dat/100]; Delay(10); baiwei=1;
- }
- ///////功能:串口初始化,波特率9600,方式1/////////
- void Init_Com(void)
- {
- TMOD = 0x20;
- PCON = 0x00;
- SCON = 0x50;
- TH1 = 0xFd;
- TL1 = 0xFd;
- TR1 = 1;
- }
- /////主程序功能:實(shí)現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去///////
- void main()
- {
- Init_Com();//串口初始化
- while(1)
- {
- if ( RI ) //掃描判斷是否接收到數(shù)據(jù),
- {
- dat = SBUF; //接收數(shù)據(jù)SBUF賦與dat
- RI=0; //RI 清零。
- SBUF = dat; //在原樣把數(shù)據(jù)發(fā)送回去(接收數(shù)據(jù)為發(fā)送數(shù)據(jù)的ASCII碼,如發(fā)送q顯示為113)
- }
- LED(); //顯示接收到的數(shù)據(jù)
- }
- }
復(fù)制代碼
|
|