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, 下载次数: 14)
|