电子电路和芯片中的各种xVDD和xVCC和xVss的具体的分析

电子电路和芯片中的各种xVDD和xVCC和xVss的具体的分析

在电路和芯片中,我们总是能看到各种VDD、VCC、VSS这些东西,所以对于开始学或者在设计PCB电路的时候,这些引脚的参数很容易迷惑我们,故在设计电路的时候需要我们明确这些在电路中的具体的指示名称。

  • VCC和VDD的区别和理解:
    VCC :一般代表输入电压,这里指的是整个系统的电压,非芯片电压
    VDD:代表的是单个芯片或者是单个器件的电压
    (注:一般情况下,VCC>VDD)

  • VSS和GND的联系
    VSS :代表的是公共接地端的电压
    GND;一般代表地线,这个对于电源来说就是电源的负极
    (注:一般来说,VSS和GND是同一个地,对于大地的那根地线我们一般是Ground,这个是在设备漏电时使用的低,和前面的两个“地”是不一样的,大地的目的是为了保护人身安全)

  • AVDD、CVDD、DVDD的区别和联系
    AVDD : 这个称之为芯片模拟电路的供电电压(Analog)
    DVDD : 这个称之为数字电路的供电电压(Digital)
    CVDD: C(Core)VDD是芯片内核的供电电压(注意:CVDD和VDD是不一样的,CVDD指的是芯片CPU内核的工作电压,VDD代表的是芯片整体的工作电压)

AVSS和ADVSS
AVSS: 代表模拟电路的地
ADVSS: 代表模拟数字地
VSS : 代表公共地

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基于C51单片机的温度补偿超声波测距系统的示例代码。在这个代码,我们使用一个DS18B20数字温度传感器来测量环境温度,并使用该温度值来进行超声波测距的温度补偿。同时,我们使用一个HC-SR04超声波传感器来进行距离测量,使用LC0612 OLED模块来显示测量结果。 ``` #include <REGX51.H> #include <intrins.h> #define DS18B20 DSPORT=P2^7 sbit DSPORT=P2^0; sbit TRIG=P2^1; sbit ECHO=P2^2; sbit SCL=P1^0; sbit SDA=P1^1; unsigned char temp; unsigned char TH,TL; unsigned int distance; unsigned char code ASCII[10][8]={ {0x7E,0x81,0x81,0x81,0x81,0x81,0x81,0x7E}, //0 {0x00,0x41,0xFF,0x01,0x00,0x00,0x00,0x00}, //1 {0x43,0x85,0x89,0x91,0x61,0x00,0x00,0x00}, //2 {0x42,0x81,0x91,0x91,0x6F,0x00,0x00,0x00}, //3 {0x0C,0x14,0x24,0x44,0xFF,0x04,0x04,0x00}, //4 {0xF1,0x91,0x91,0x91,0x8E,0x00,0x00,0x00}, //5 {0x3E,0x51,0x91,0x91,0x0E,0x00,0x00,0x00}, //6 {0x80,0x80,0x8F,0x90,0xA0,0xC0,0x00,0x00}, //7 {0x6E,0x91,0x91,0x91,0x6E,0x00,0x00,0x00}, //8 {0x70,0x89,0x89,0x8A,0x7C,0x00,0x00,0x00} //9 }; void delay_10us(unsigned char t); void delay_ms(unsigned int t); void I2CStart(); void I2CStop(); void I2CACK(bit ack); bit I2CWrite(unsigned char dat); unsigned char I2CRead(); bit Ds18b20Init(); void Ds18b20WriteByte(unsigned char dat); unsigned char Ds18b20ReadByte(); void Ds18b20ChangTemp(); unsigned int GetDistance(); void OLEDWriteCmd(unsigned char cmd); void OLEDWriteData(unsigned char dat); void OLEDInit(); void OLEDShowNum(unsigned char x,unsigned char y,unsigned int num); void main() { OLEDInit(); while(1) { TH0=0; TL0=0; TRIG=0; delay_10us(2); TRIG=1; delay_10us(10); TRIG=0; while(!ECHO); TH=TL0; while(ECHO); TH-=(unsigned char)110-temp; distance=TH*256+TL0; distance/=58; OLEDShowNum(0,0,distance); //显示距离 delay_ms(200); } } void delay_10us(unsigned char t) { while(t--) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } } void delay_ms(unsigned int t) { while(t--) delay_10us(100); } void I2CStart() { SDA=1; SCL=1; SDA=0; SCL=0; } void I2CStop() { SDA=0; SCL=1; SDA=1; } bit I2CWrite(unsigned char dat) { unsigned char i; bit ack; for(i=0;i<8;i++) { SDA=dat&0x80; SCL=1; _nop_(); _nop_(); SCL=0; dat<<=1; } SDA=1; SCL=1; ack=SDA; SCL=0; return ack; } unsigned char I2CRead() { unsigned char i,dat=0; SDA=1; for(i=0;i<8;i++) { SCL=1; dat<<=1; dat|=SDA; SCL=0; } return dat; } void I2CACK(bit ack) { SDA=!ack; SCL=1; _nop_(); _nop_(); SCL=0; SDA=1; } void Ds18b20WriteByte(unsigned char dat) { unsigned char i; for(i=0;i<8;i++) { DSPORT=0; _nop_(); _nop_(); DSPORT=dat&0x01; _nop_(); _nop_(); DSPORT=1; dat>>=1; } } unsigned char Ds18b20ReadByte() { unsigned char i,dat=0; for(i=0;i<8;i++) { DSPORT=0; _nop_(); _nop_(); dat>>=1; if(DSPORT) dat|=0x80; _nop_(); _nop_(); DSPORT=1; } return dat; } bit Ds18b20Init() { bit initflag=0; DSPORT=1; delay_10us(20); DSPORT=0; delay_10us(200); DSPORT=1; delay_10us(20); initflag=DSPORT; delay_10us(20); return initflag; } void Ds18b20ChangTemp() { Ds18b20Init(); Ds18b20WriteByte(0xcc); Ds18b20WriteByte(0x44); } unsigned int GetDistance() { unsigned int distance; TH0=0; TL0=0; TRIG=0; delay_10us(2); TRIG=1; delay_10us(10); TRIG=0; while(!ECHO); TH=TL0; while(ECHO); TH-=(unsigned char)110-temp; distance=TH*256+TL0; distance/=58; return distance; } void OLEDWriteCmd(unsigned char cmd) { I2CStart(); I2CWrite(0x78); I2CACK(1); I2CWrite(0x00); I2CACK(1); I2CWrite(cmd); I2CACK(1); I2CStop(); } void OLEDWriteData(unsigned char dat) { I2CStart(); I2CWrite(0x78); I2CACK(1); I2CWrite(0x40); I2CACK(1); I2CWrite(dat); I2CACK(1); I2CStop(); } void OLEDInit() { OLEDWriteCmd(0xAE);//display off OLEDWriteCmd(0x20);//Set Memory Addressing Mode OLEDWriteCmd(0x10);//00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid OLEDWriteCmd(0xb0);//Set Page Start Address for Page Addressing Mode,0-7 OLEDWriteCmd(0xc8);//Set COM Output Scan Direction OLEDWriteCmd(0x00);//---set low column address OLEDWriteCmd(0x10);//---set high column address OLEDWriteCmd(0x40);//--set start line address OLEDWriteCmd(0x81);//--set contrast control register OLEDWriteCmd(0xff); OLEDWriteCmd(0xa1);//--set segment re-map 0 to 127 OLEDWriteCmd(0xa6);//--set normal display OLEDWriteCmd(0xa8);//--set multiplex ratio(1 to 64) OLEDWriteCmd(0x3f);//--1/64 duty OLEDWriteCmd(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content OLEDWriteCmd(0xd3);//-set display offset OLEDWriteCmd(0x00);//-not offset OLEDWriteCmd(0xd5);//--set display clock divide ratio/oscillator frequency OLEDWriteCmd(0xf0);//--set divide ratio OLEDWriteCmd(0xd9);//--set pre-charge period OLEDWriteCmd(0x22); // OLEDWriteCmd(0xda);//--set com pins hardware configuration OLEDWriteCmd(0x12); OLEDWriteCmd(0xdb);//--set vcomh OLEDWriteCmd(0x20);//0x20,0.77xVcc OLEDWriteCmd(0x8d);//--set DC-DC enable OLEDWriteCmd(0x14); OLEDWriteCmd(0xaf);//--turn on oled panel } void OLEDShowNum(unsigned char x,unsigned char y,unsigned int num) { unsigned char i; for(i=0;i<5;i++) OLEDWriteData(ASCII[num/10000][i]); OLEDWriteData(0); for(i=0;i<5;i++) OLEDWriteData(ASCII[(num%10000)/1000][i]); OLEDWriteData(0); for(i=0;i<5;i++) OLEDWriteData(ASCII[(num%1000)/100][i]); OLEDWriteData(0); for(i=0;i<5;i++) OLEDWriteData(ASCII[(num%100)/10][i]); OLEDWriteData(0); for(i=0;i<5;i++) OLEDWriteData(ASCII[num%10][i]); OLEDWriteCmd(0xb0+y); OLEDWriteCmd(((x&0xf0)>>4)|0x10); OLEDWriteCmd((x&0x0f)|0x00); } ``` 请注意,这只是一个示例代码,并不能保证在所有情况下都能正确工作。在编写实际应用代码时,请根据具体情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值