A/D轉換OLED顯示
單片機源程序如下:
- #include <reg52.h>
- #include "i2c.h"
- #include "delay.h"
- #include "oled.h"
- #define AddWr 0x90 //寫數據地址
- #define AddRd 0x91 //讀數據地址
- //sbit jdq=P0^1;
- extern bit ack;
- unsigned char ReadADC(unsigned char Chl);
- bit WriteDAC(unsigned char dat);
- /*------------------------------------------------
- 主程序
- ------------------------------------------------*/
- main()
- {
- unsigned char num=0;
- // jdq=0;
- OLED_Init();
- while (1) //主循環
- {
- num=ReadADC(0);
- // if(num>=100)
- // {
- // OLED_ShowCHinese(0,0,0);
- // OLED_ShowCHinese(18,0,1);
- // OLED_ShowCHinese(36,0,2);
- // OLED_ShowCHinese(0,2,3);
- // OLED_ShowCHinese(18,2,4);
- // OLED_ShowCHinese(36,2,5);
- // OLED_ShowCHinese(0,4,6);
- // OLED_ShowCHinese(18,4,7);
- // OLED_ShowCHinese(36,4,8);
- //// jdq=1;
- // OLED_ShowNum(50,0,0,3,16);
- // OLED_ShowNum(50,2,0,3,16);
- // OLED_ShowNum(50,4,0,3,16);
- // DelayMs(100);
- // }
- // else
- {
- OLED_ShowCHinese(0,0,0);
- OLED_ShowCHinese(18,0,1);
- OLED_ShowCHinese(36,0,2);
- OLED_ShowCHinese(0,2,3);
- OLED_ShowCHinese(18,2,4);
- OLED_ShowCHinese(36,2,5);
- OLED_ShowCHinese(0,4,6);
- OLED_ShowCHinese(18,4,7);
- OLED_ShowCHinese(36,4,8);
-
- OLED_ShowNum(50,0,num/7,3,16);
- OLED_ShowNum(50,2,num,3,16);
- OLED_ShowNum(50,4,num*num/7,4,16);
-
- }
- }
- }
- /*------------------------------------------------
- 讀AD轉值程序
- 輸入參數 Chl 表示需要轉換的通道,范圍從0-3
- 返回值范圍0-255
- ------------------------------------------------*/
- unsigned char ReadADC(unsigned char Chl)
- {
- unsigned char Val;
- Start_I2c(); //啟動總線
- SendByte(AddWr); //發送器件地址
- if(ack==0)return(0);
- SendByte(0x40|Chl); //發送器件子地址
- if(ack==0)return(0);
- Start_I2c();
- SendByte(AddWr+1);
- if(ack==0)return(0);
- Val=RcvByte();
- NoAck_I2c(); //發送非應位
- Stop_I2c(); //結束總線
- return(Val);
- }
復制代碼
所有資料51hei提供下載:
1路AD數碼管顯示.rar
(85.3 KB, 下載次數: 15)
2019-2-22 09:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|