-
为什么按下S5后定时器没有打开去掉nowshidu=dat_rd1*20就可以了
#include
#include"ds1302.h" #include"iic.h" sbit S7=P3^0; sbit S6=P3^1; sbit S5=P3^2; sbit S4=P3^3; unsigned char dat_rd2; unsigned char kaiguan=0; unsigned char shidu=50; //初始湿度 unsigned char nowshidu; //当前湿度 unsigned char code table[]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E,0xbf,0x7f}; unsigned char write[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; unsigned char read[]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; unsigned char Time[]={0x16,0x30,0x08,0x02,0x16,0x02,0x21}; void delayms(unsigned char x) { unsigned char i; while(x--) { for(i=0;i<113;i++); } } void select (unsigned char n) { switch(n) { case 4: P2=(P2&0x1f)|0x80; break; case 5: P2=(P2&0x1f)|0xa0; break; case 6: P2=(P2&0x1f)|0xc0; break; case 7: P2=(P2&0x1f)|0xe0; break; } } void guanbi() { select(5); P0=0x00; select(4); P0=0xff; } void DS1302_write() { unsigned char i; Ds1302_Single_Byte_Write(0x8e,0x00); for(i=0;i<7;i++) { Ds1302_Single_Byte_Write(write[i],Time[i]); } Ds1302_Single_Byte_Write(0x8e,0x80); } void DS1302_read() { unsigned char i; for(i=0;i<7;i++) { Time[i]=Ds1302_Single_Byte_Read(read[i]); } } void read_rd2() { IIC_Start(); IIC_SendByte(0x90); IIC_WaitAck(); IIC_SendByte(0x03); IIC_WaitAck(); IIC_Start(); IIC_SendByte(0x91); IIC_WaitAck(); dat_rd2=IIC_RecByte(); IIC_WaitAck(); IIC_Ack(0); IIC_Stop(); } void shuma(unsigned char pos,unsigned char date) { select(6); P0=0x01< shidu) { select(5); P0=0x40; } else if(nowshidu 2980浏览量 1回复量 关注量 -
求助,函数没写到主函数里,为什么能执行成功
void SMG_Play()该函数没写到主函数里,但是一个错误和警告都没有,而且该函数还执行成功了?为什么??求助 #include
#include unsigned char code SMG_Select_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x7f}; unsigned int temp=0; unsigned char c=0; unsigned char b=0; void SMG_Play(); void SCQ_Set(unsigned char a) { switch(a) { case 4:P2=(P2&0x1f)|0x80; break; case 5:P2=(P2&0x1f)|0xa0; break; case 6:P2=(P2&0x1f)|0xc0; break; case 7:P2=(P2&0x1f)|0xe0; break; case 0:P2=(P2&0x1f)|0x00; break; } } void Delay_1(unsigned int t) { while(t--); } void Delay_SMG(unsigned int t) { while(t--) { SMG_Play(); } } void SMG_Set(unsigned char num,unsigned char loc) { SCQ_Set(6); P0=0x01< >4); } void SMG_Play() { SMG_Set(SMG_Select_1[16],0); Delay_1(100);P0=0xff; SMG_Set(SMG_Select_1[0],1); Delay_1(100);P0=0xff; SMG_Set(SMG_Select_1[16],2); Delay_1(100);P0=0xff; SMG_Set(0xff,3); Delay_1(100);P0=0xff; SMG_Set(0xff,4); Delay_1(100);P0=0xff; SMG_Set(0xff,5); Delay_1(100);P0=0xff; SMG_Set(SMG_Select_1[temp/10],6); Delay_1(100);P0=0xff; SMG_Set(SMG_Select_1[temp%10],7); Delay_1(100);P0=0xff; } void main() { P2=0x80;P0=0xff; P2=0xa0;P0=0x00; //初始化 while(1) { DS18B20_Set(); } } 3836浏览量 3回复量 关注量 -
赛元单片机AD问题
/***************************************************** *函数名称:void Ntc_Init(void) *函数功能:ADC初始化 *入口参数:void *出口参数:void *****************************************************/ void Ntc_Init() { ADCCFG2=0x02; ADCCFG0=0x00;//设置AIN8为ADC输入 ADCCFG1=0x01;//设置AIN8为ADC输入 OPINX = 0xC2; OPREG &= 0x7f; //选择参考电压VDD,VDD=5V ADCCON=0x80;//开启 ADC 模块电源 } /***************************************************** *函数名称:void getad(uint ch) *函数功能:ADC运行 *入口参数:void *出口参数:Channel *****************************************************/ unsigned int getad(unsigned char ch) { unsigned int ADCValue=0; ADCCON&=0x80; ADCCON|=ch; ADCCON|=0X40;// 启动转换 while(!(ADCCON&0x20));//等待转换结束 ADCCON &= 0xdf; ADCValue = (ADCVH<<4)+(ADCVL>>4); return ADCValue;// } 程序一直停留在 while(!(ADCCON&0x20));//等待转换结束 上 不知道为什么AD转化启动后一直不结束。
1294浏览量 1回复量 关注量 -
请问1KHZ的方波怎么提取幅值
我有一个0--2V 1KHZ的方波请问我怎么用ADC芯片去测他的正幅值,需要用什么电路才能把方波的正幅值给提取出来 我adc读取得频率为16.7hz
3655浏览量 2回复量 关注量 -
4层以上板还需要分模拟地和数字地吗
有个产品主要就是STM32加485、232、CAN接口和ADC采集,因为空间很小要用四层板,第一次画四层板请教下大家: 四层板有一整层完整地,还有必要像两层板一样分模拟地和数字地再进行单点接地吗?如果非要分一般如何分?我想了两种方案分法不知道可不可行: 1、中间第2层走电源的GND,表层和底层除了信号线同时还走模拟地和数字地,然后模拟地和数字地通过过孔连到中间的电源GND层,也不需要通过电阻和磁珠再连接模拟和数字地了。 2、中间第2层也分割成模拟地和数字地,最后通过电源GND的端子引脚汇合到一起。 或者这两种都不对,一般大家都是如何除了多层板地的问题的?
2460浏览量 9回复量 关注量 -
【GD32的BUG】GD32F405 使用 USB HS 无法接收大于512字节的数据
[i=s] 本帖最后由 lewlew 于 2020-11-17 09:50 编辑 [/i] 单片机烧录的是 GD32F4xx_Firmware_Library_V2.1.1 固件库自带的CDC例程, 路径是: Examples\USB\USB_Device\cdc_acm 代码只修改了 GPIO 初始化部分, 以匹配我使用的 GD32F405RGT6 的 ULPI 引脚. 烧录后插上电脑, 串口助手能正常通信, 发送小于等于 512 字节的数据完全没问题, 但是超过 512 字节的数据就会丢失. 请问这是什么情况?
3624浏览量 19回复量 关注量 -
谁能帮我看看n76e003可调电源的程序
开机后oled上ADC电压值有变化,旋转编码器后,oled就显示一个值没有变化 #include
#include "N76E003.h" #include "Common.h" #include "Delay.h" #include "SFR_Macro.h" #include "Function_Define.h" #include "oled.h" #include "bmp.h" UINT8 temp=0xD7; UINT8 temp1=0x02; void ADC_ISR (void) interrupt 11 { if(ADCF) { clr_ADCF; set_ADCS; //printf ("\n Value = 0x%bx",ADCRH); } } void show() { uint16_t BandGap_H, BandGap_L,BandGap_v; uint16_t voltage = 0; char aa[10]; float v; BandGap_H = ADCRH; BandGap_L = ADCRL; BandGap_v = BandGap_H << 4 | BandGap_L; v=(float)BandGap_v*(3.3/4096); v*=10; sprintf(aa,"%5.2f",v); OLED_ShowString(0,0,aa); } void main (void) { // unsigned char t; // uint16_t BandGap_H, BandGap_L,BandGap_v,temp; // uint16_t voltage = 0; // // char aa[10]; // float v; Set_All_GPIO_Quasi_Mode; // Define in Function_define.h P17_Input_Mode; P30_Input_Mode; set_EPI; clr_PIPS1; set_PIPS0; Enable_BIT7_RasingEdge_Trig; Enable_ADC_AIN2; // Enable AIN0 P1.7 as ADC input set_EADC; // Enable ADC interrupt (if use interrupt) set_EPWM;//?? PWM_INT_PWM4; PWM_FALLING_INT; PWM4_P01_OUTPUT_ENABLE; clr_PWMTYP;//?????? clr_PWMMOD0;//????????? clr_PWMMOD1; PWM_CLOCK_DIV_8;//8???? PWMPH = 0x07; //Setting PWM value PWMPL = 0xCF; set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page 1 PWM4H = 0x02;//500(Dec) PWM4L = 0xD7; clr_SFRPAGE; set_LOAD; // PWM run set_PWMRUN; set_EA; set_ADCS; InitialUART0_Timer3(115200); set_CLOEN; OLED_Init(); //³õʼ»¯OLED // t=' '; while(1) { show(); Timer0_Delay1ms(300); } } void PWMISR() interrupt 13 { if(PWMF)//???????? { clr_LOAD;//???????? clr_PWMF;//??PWM????? set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page 1 PWM4H=temp1; PWM4L=temp; clr_SFRPAGE; set_LOAD;//????,???? clr_PWMF; } } void PinInterrupt (void) interrupt 7 { if(PIF==0x80&&P17) { Timer0_Delay1ms(1); if(P17) { if(P30) { temp+=30; if(temp<30) { if(temp1==7){temp=0xc0;}else{temp1+=1;}} //Timer0_Delay1ms(500); } else{ temp-=30; if(temp<30){ if(temp1==0){temp=0x30;}else{temp1-=1;temp=0xff;}} //Timer0_Delay1ms(500); } } } PIF=0; PWMF=1; } 896浏览量 4回复量 关注量 -
模拟电源该怎么处理
我有一个需要10V供电的运放,要求是低功耗 我看了下10V的线性电源功耗都比较大光是IQ就是ma级的 那我该怎么处理这个电源呢 在dc-dc后面加lc滤波 或直接加磁珠吗(开关电源频率是600Khz) 有什么方法能得到一个低功耗且干净的电源呢
1016浏览量 3回复量 关注量 -
求助大家这个GND连的两个有什么不同
[img]https://media.monolithicpower.cn/catalog/product/cache/image/700x700/e9c3970ab036de70892d86c6d221abfe/M/P/MPQ4560_161_1_2.jpg?_ga=2.180298082.772697911.1599118406-78389124.1599010120[/img] 选DC-DC降压芯片,看到这个,GND一个连着个三角,一个是地不太明白,求大神解释,多谢!
1003浏览量 3回复量 关注量 -
求助大家48V转5V1A的电路或芯片
需要48V转5V1A给单片机供电,之前只试过24V的,求助大家48V转的电路或者DC-DC芯片推荐,HLK-10D4805这种降压模块可以用吗,谢谢!
1111浏览量 1回复量 关注量