|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
數(shù)控步進(jìn)直流穩(wěn)壓電源(C版本) |
| 作者:njliu 欄目:單片機(jī) |
#include <pic.h> //此程序?qū)崿F(xiàn)"數(shù)控步進(jìn)直流穩(wěn)壓電源"的功能,調(diào)試時(shí)為了避免資源沖突,應(yīng)使實(shí)驗(yàn)板上的拔碼開關(guān)S8拔向高電平 //本程序設(shè)定S9鍵為增加鍵,當(dāng)按住S9鍵不松開時(shí),輸出Vout以0.1V連續(xù)步進(jìn), //直至鍵S9松開,當(dāng)以一定的時(shí)間間隔點(diǎn)動S9鍵時(shí),輸出Vout也為點(diǎn)動步進(jìn) //遞減鍵S11的功能與S9基本相同時(shí),輸出電壓的值顯示在3個(gè)LED上 unsigned CHAR R1,R2,R3,TXDATA,LEDF,BJF,COUNTW,data; unsigned int i; const CHAR table[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0xFF}; //不帶小數(shù)點(diǎn)的顯示段碼表 const CHAR table0[11]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10,0xFF}; //帶小數(shù)點(diǎn)的的顯示段碼表 unsigned CHAR s[4]; //定義一個(gè)顯示緩沖數(shù)組 //把需要顯示的數(shù)字裝入顯示緩沖數(shù)組 void sfz() { s[0]=R3; s[1]=R2; s[2]=R1; s[3]=0x0A; //最后一個(gè)LED顯示"DARK" } //系統(tǒng)各寄存器初始化子程序 void initial() { R1=0X00; R2=0X00; R3=0X00; sfz(); //把需要顯示的數(shù)字裝入顯示緩沖數(shù)組 TXDATA=0X00; LEDF=0X01; BJF=0X01; TRISB1=0; TRISB2=0; TRISB4=1; TRISB5=1; //設(shè)置與鍵盤相關(guān)的各口的輸入輸出方式 RB1=0; RB2=0; //設(shè)置掃描初始條件 } //spi方式顯示初始化子程序 void SPIINIT() { PIR1=0; SSPCON=0x30; SSPSTAT=0xC0; //設(shè)置SPI的控制方式,允許SSP方式,并且時(shí)鐘下降沿發(fā)送,與"74HC595,當(dāng)其 //SCLK從低到高跳變時(shí),串行輸入寄存器"的特點(diǎn)相對應(yīng) TRISC=0xD7; //SDO引腳為輸出,SCK引腳為輸出 TRISA5=0; //RA5引腳設(shè)置為輸出,以輸出顯示鎖存信號 } //I2C初始化子程序 void i2cint() { SSPCON = 0X08; //初始化SSPCON寄存器 TRISC3 =1; //設(shè)置SCL為輸入口 TRISC4 =1; //設(shè)置SDA為輸入口 TRISA4 = 0; SSPSTAT=0X80; //初始化SSPSTAT寄存器 SSPADD=0X02; //設(shè)定I2C時(shí)鐘頻率 SSPCON2=0X00; //初始化SSPCON2寄存器 di(); //關(guān)閉總中斷 SSPIF=0; //清SSP中斷標(biāo)志 RA4=0; //關(guān)掉74HC165的移位時(shí)鐘使能,以免74HC165 //移位數(shù)據(jù)輸出與I2C總線的數(shù)據(jù)線發(fā)生沖突 SSPEN=1; //SSP模塊使能 } //軟件延時(shí)子程序 void DELAY() { for(i = 3553; --i ;) continue; } //鍵服務(wù)子程序 void keyserve() { PORTB=0XFD ; if(RB5==0) BJF=0X01; //S9鍵按下,步進(jìn)加標(biāo)志置1 PORTB=0XFB ; if(RB5==0) BJF=0X00; //S11鍵按下,步進(jìn)加標(biāo)志清0 RB1=0; //恢復(fù)PORTB的值 RB2=0; } //鍵掃描子程序 void KEYSCAN() { while(1){ while(1) { if (RB5==0) break; } DELAY(); //若有鍵按下,則軟件延時(shí) if (RB5==0) break; //若還有鍵按下,則終止循環(huán)掃描,返回 } } //SPI傳送數(shù)據(jù)子程序 void SPILED(data) { SSPBUF=data; // 啟動發(fā)送 do { ; }while(SSPIF==0); SSPIF=0; } //顯示子程序 void DISPLAY() { SPIINIT(); //spi方式顯示初始化 RA5=0; //準(zhǔn)備鎖存 for(COUNTW=0;COUNTW<4;COUNTW++) { |
| 2樓: | >>參與討論 |
| 作者: w55706 于 2007/2/10 8:38:00 發(fā)布:
頂一下 頂一下 |
|
| 3樓: | >>參與討論 |
| 作者: ocon 于 2007/2/15 19:42:00 發(fā)布:
沒電路圖,看不懂。 |
|
| 4樓: | >>參與討論 |
| 作者: miky 于 2007/2/24 13:04:00 發(fā)布:
請貼原理圖,謝謝! |
|
| 5樓: | >>參與討論 |
| 作者: njliu 于 2007/4/6 21:26:00 發(fā)布:
我先在在混筆記 wind-solar.21ic.org 歡迎到我的新田地里討論新能源問題.里面我為大家準(zhǔn)備很多珍貴的資料. 希望大家支持啊 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |