包含程序及仿真,pcf8951驅動程序,不僅可以檢測電壓,還能檢測光照強度以及溫度,很適合小白
51hei.jpg (116.5 KB, 下載次數: 42)
下載附件
PCF8951模塊
2023-4-17 17:13 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (110.68 KB, 下載次數: 35)
下載附件
2023-4-17 17:12 上傳
屏幕截圖 2023-04-17 164007.png (157.84 KB, 下載次數: 26)
下載附件
protues仿真圖
2023-4-17 16:47 上傳
屏幕截圖 2023-04-17 163759.png (226 KB, 下載次數: 30)
下載附件
程序部分截圖
2023-4-17 16:47 上傳
單片機源程序如下:
-
- #include <reg52.h>
- #include <I2C.H>
- #define uchar unsigned char
- #define uint unsigned int
- #define PCF8591 0x90 //PCF8591 地址
- unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f};
- unsigned char code graph[11][8]={
- {0x0,0x18,0x24,0x24,0x24,0x24,0x24,0x18},//0
- {0x0,0x8,0x18,0x8,0x8,0x8,0x8,0x8},//1
- {0x0,0x18,0x24,0x24,0x8,0x10,0x20,0x3C},//2
- {0x0,0x18,0x24,0x4,0x8,0x24,0x24,0x18},//3
- {0x0,0x8,0x8,0x18,0x28,0x3C,0x8,0x8},//4
- {0x0,0x3C,0x20,0x38,0x4,0x4,0x24,0x18},//5
- {0x0,0x18,0x24,0x20,0x38,0x24,0x24,0x18},//6
- {0x0,0x3C,0x24,0x4,0x8,0x10,0x10,0x10},//7
- {0x0,0x18,0x24,0x24,0x18,0x24,0x24,0x18},//8
- {0x0,0x18,0x24,0x24,0x1C,0x4,0x24,0x18},//9
- {0x4C,0xD2,0x52,0x52,0x52,0x52,0x52,0xEC},//10
- };
- unsigned char count;
- unsigned char cnta;
- unsigned char AD_CHANNEL;
- unsigned int D[4];
- void delay11(unsigned int cnt)
- {
- while(--cnt);
- }
-
- /*******************************************************************
- ADC發送字節[命令]數據函數
- *******************************************************************/
- bit ISendByte(unsigned char sla,unsigned char c)
- {
- Start_I2c(); //啟動總線
- SendByte(sla); //發送器件地址
- if(ack==0)return(0);
- SendByte(c); //發送數據
- if(ack==0)return(0);
- Stop_I2c(); //結束總線
- return(1);
- }
- /*******************************************************************
- ADC讀字節數據函數
- *******************************************************************/
- unsigned char IRcvByte(unsigned char sla)
- { unsigned char c;
- Start_I2c(); //啟動總線
- SendByte(sla+1); //發送器件地址
- if(ack==0)return(0);
- c=RcvByte(); //讀取數據0
- Ack_I2c(1); //發送非就答位
- Stop_I2c(); //結束總線
- return(c);
- }
- //******************************************************************/
- main()
- { unsigned char jj,kk,ll,bb,cc,dd;
- double Data; //
- double V; //轉化成的電壓值
- while(1)
- {
- ISendByte(PCF8591,0x40);
- Data=IRcvByte(PCF8591); //ADC0 模數轉換1
- V=Data*5/256;
- D[0]=V*100;
- for(bb=0;bb<10;bb++){
- for(jj=0;jj<8;jj++) //共要掃描八行
- {
- P1=graph[D[0]/100][jj]; //送字模數據
- P2=tab[jj];
- delay11(200); //選中第一行
- P2=0xff;
- delay11(500);
- }
- delay11(500);}
- for(bb=0;bb<10;bb++){
- for(jj=0;jj<8;jj++) //共要掃描八行
- {
- P1=0x06;
- P2=0x7f;
- delay11(500);
- P2=0xbf;
- delay11(500);
- }
- delay11(500);}
- for(cc=0;cc<10;cc++){
- for(kk=0;kk<8;kk++) //共要掃描八行
- {
- P1=graph[D[0]%100/10][kk]; //送字模數據
- P2=tab[kk];
- delay11(200); //選中第一行
- P2=0xff;
- delay11(500);
- }
- delay11(500);}
- for(dd=0;dd<10;dd++)
- {
- for(ll=0;ll<8;ll++) //共要掃描八行
- {
- P1=graph[D[0]%10][ll]; //送字模數據
- P2=tab[ll];
- delay11(200); //選中第一行
- P2=0xff;
- delay11(500);
- }
- delay11(500);}
-
- }
- }
復制代碼 注意現在用的8*8一次只能顯示一個字符 所以需要翻頁顯示 不太直觀 大家可以改為數碼管或者 多點陣顯示
Keil代碼與Proteus8.13仿真下載:
仿真程序.7z
(79.42 KB, 下載次數: 23)
2023-4-17 17:13 上傳
點擊文件名下載附件
程序及仿真壓縮包 下載積分: 黑幣 -5
|