使用STC15單片機驅動12位DAC MCP4726芯片的測試程序,實機測試通過,proteus元件庫沒有這個元件,所以沒做仿真
單片機源程序如下:
- #include"mcp.h"
- #include"lcd.h"
- char *num="0123456789ABCDEF";
- extern uchar vh,vl,eph,epl;
- sbit k=P1^0;
- uint n=0;
- //測試使用的單片機型號:STC15F2K16S2,頻率選擇5.5296MHz,理論上STC15系列單片機通用
- //必要的話請自行修改改引腳定義
- //測試加入了LCD1602和按鍵功能來顯示調整部分參數用于調試,實際使用時可以去掉
- //代碼通過實機測試
- //MCP4726的VOUT腳串接一個LED和102電阻,用于粗略顯示電壓
- void delayms()
- {
- uchar a,b,c;
- for(c=1;c;c--)
- for(b=38;b;b--)
- for(a=130;a;a--);
- }
- void vup()
- {
- if(k==0)
- {
- delayms();
- if(k==0)
- {
- uchar m=0;
- n+=100;
- while(k==0&&m<200)
- {
- delayms();
- ++m;
- }
- }
- }
- }
- void main()
- {
- uchar count=0;
- uchar temp=0;
- while(!(temp&0x40))
- temp=mcpread();
- lcdinit();
- //mcpwriteall(2400); //這個函數測試時沒用到
- while(1)
- {
-
- temp=mcpread();
- vup();
- if(n>4095)
- n=0;
- mcpwrite(n);
- writecom(0x80);
- writedata(num[temp/100]);
- writedata(num[temp%100/10]);
- writedata(num[temp%10]);
- writedata(' ');
- writedata(num[count/100]);
- writedata(num[count%100/10]);
- writedata(num[count%10]);
- ++count;
- writedata(' ');
- writedata(num[vh/100]);
- writedata(num[vh%100/10]);
- writedata(num[vh%10]);
- writedata(' ');
- writedata(num[vl/100]);
- writedata(num[vl%100/10]);
- writedata(num[vl%10]);
- writecom(0xc0);
- writedata(num[eph/100]);
- writedata(num[eph%100/10]);
- writedata(num[eph%10]);
- writedata(' ');
- writedata(num[epl/100]);
- writedata(num[epl%100/10]);
- writedata(num[epl%10]);
- }
- }
復制代碼- #include"mcp.h"
- uchar vh,vl,eph,epl;
- void mcpwrite(uint dat)
- {
- uchar datl,dath;
- datl=dat&0x00ff;
- dath=((dat&0x0f00)>>8);
- i2cstart();
- i2cwrite(0xc0,1);
- i2cwrite(dath,1);
- i2cwrite(datl,1);
- i2cstop();
- }
- void mcpwriteall(uint dat)
- {
- uchar datl,dath;
- datl=dat&0x00ff;
- dath=(dat&0xff00)>>8;
- i2cstart();
- i2cwrite(0xc0,1);
- i2cwrite(0x61,1);
- i2cwrite(dath,1);
- i2cwrite(datl,1);
- i2cstop();
- }
- uchar mcpread()
- {
- uchar temp,config;
- i2cstart();
- i2cwrite(0xc1,1);
- config=i2cread(0);
- vh=i2cread(0);
- vl=i2cread(0);
- temp=i2cread(0);
- eph=i2cread(0);
- epl=i2cread(0);
- i2cstop();
- return config;
- }
復制代碼
所有資料51hei提供下載:
MCP4726.zip
(43.46 KB, 下載次數: 105)
2019-7-9 14:56 上傳
點擊文件名下載附件
測試程序 下載積分: 黑幣 -5
|