-
51单片机按键控制数码管显示两格数字
void xuanjian(unsigned char i,unsigned char S) { unsigned char b=0; if(S == 0) { Delay10us(); if(S == 0) { b = 1; while(b == 1) { xuanwei(i/10,1); Delay1ms(); xuanwei(i%10,2); Delay1ms(); HC138(6); P0 = 0x03; HC138(7); P0 = 0xff; while(S == 0); Delay10ms(); if(S == 0) { Delay10us(); if(S == 0) { b = 0; while(S == 0); } } } } } } void jzjianpan1() { L1 = 0; L2 = 1;L3 = 1;L4 = 1; xuanjian(0,S1); xuanjian(1,S2); xuanjian(2,S3); xuanjian(3,S4); } void main() { while(1) { jzjianpan1(); } }
1696浏览量 2回复量 关注量 -
GD32E503硬件I2C问题
求大佬们帮忙看看[img]https://bbs.21ic.com/static/image/smiley/comcom/9.gif[/img]刚开始搞编程,最近在学习GD32E503-Start的开发板,按照官方提供的固件库使用指南操作在使用硬件I2C的时候发现ADDSEND位一直不置1,导致程序一直卡在 [color=#f00000]while(!i2c_flag_get(i2c_periph,I2C_FLAG_ADDSEND));[/color] 检查硬件连接也没啥问题,把程序下进去之后,疯狂按复位,发现有那么几次ADDSEND被置1了,真的搞不清楚什么情况,求各位帮忙看看,代码是按照官方提供的例程写的,使用的是I2C1,PB10,PB11引脚 void lmp_reg_write(uint32_t i2c_periph, uint32_t lmp_reg, uint8_t datatransmit) { while(i2c_flag_get(i2c_periph,I2C_FLAG_I2CBSY)); i2c_start_on_bus(i2c_periph); while(!i2c_flag_get(i2c_periph,I2C_FLAG_SBSEND)); i2c_master_addressing(i2c_periph,LMP_ADDR_WRITE,I2C_TRANSMITTER); [color=#f00000]while(!i2c_flag_get(i2c_periph,I2C_FLAG_ADDSEND));[/color] i2c_flag_clear(i2c_periph,I2C_FLAG_ADDSEND); while(!i2c_flag_get(i2c_periph,I2C_FLAG_TBE)); i2c_data_transmit(i2c_periph,lmp_reg); while(!i2c_flag_get(i2c_periph,I2C_FLAG_TBE)); i2c_data_transmit(i2c_periph,datatransmit); while(!i2c_flag_get(i2c_periph,I2C_FLAG_BTC)); i2c_stop_on_bus(i2c_periph); while(I2C_CTL0(i2c_periph)&0x0200); } 供电我是直接用usb线到电脑上,连的gd-link那个usb口,也方便烧录。
4901浏览量 4回复量 关注量 -
51单片机读取P1数据
51单片机读取P1数据 P1口数据有ad0804转换而来,P1口硬件没有上拉电阻,小白写的程序如下:while(1) { aa=0; read(); //AD转换 P1=0xff; aa=P1; if(aa>0x84) { fmq=0; } if(aa<0x84) { fmq=1; } 程序运行时,接P1的灯指示根据输入变化,而读取的值(程序中的aa)貌似一直不变,判断理由是蜂鸣器一直响(fmq=0),高人指导一下。
7918浏览量 10回复量 关注量 -
MM32F031f6p6 GPIO没电平输出
用 MM32F031f6p6 代替 stm32f030f4P6出现GPIO口电平没输出,我是直接用stm32f030f4p6工程来调试mmf031f6p6的。 void gpio_delay(int cnt) { while(cnt--); } void gpio_init(void) { GPIO_InitTypeDef out; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); out.GPIO_Pin = GPIO_Pin_7; out.GPIO_Mode = GPIO_Mode_OUT; out.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOA, &out); while(1) { GPIO_SetBits(GPIOA, GPIO_Pin_7); gpio_delay(60000); GPIO_ResetBits(GPIOA, GPIO_Pin_7); gpio_delay(60000); } } 用官网的代码,用st-link debug程序没点击keil的start按钮就直接运行,也会报错,这会是什么问题? 上传不了图片 官网工程路径:Boards_MM32F031xx_q\MBF031C6T_q_lib\EXTI\EXTI_KEY\KEIL_PRJ
10068浏览量 9回复量 关注量 -
GD32F103VC替换ST32F103VC后,SPI读出的数全是0xff
用ST芯片,SPI读取正常。换成GD芯片后,按照官方提供的GD和ST差异表,修改了程序,u8 SPI_FLASH_SendByte(u8 byte) 返回值全是0xff,有人遇到过这种情况吗? u8 SPI_FLASH_SendByte(u8 byte) // { /* Loop while DR register in not emplty */ while ((SPI1->SR & SPI_I2S_FLAG_TXE) == 0); /* Send byte through the SPI1 peripheral */ SPI1->DR =byte; /* Wait to receive a byte */ while ((SPI1->SR & SPI_I2S_FLAG_RXNE) == 0); /* Return the byte read from the SPI bus */ return SPI1->DR; }
2305浏览量 1回复量 关注量 -
我的ad0809模块EOC一直处于低电平 sos
[color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "]做学校的电子设计竞赛要做一个电压测量器,想使用ad0809模块去做,ad0809的IN0口外接了一个ne555信号发生器,单片机使用的是STC89C52RC,输入地址位使用模块上的跳线帽选择了IN0,设备的其余部分还没有加上去,但是测试的时候发现程序一直卡在“[/font][/backcolor][/color][color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]while(EOC==0)”这个地方无法继续运行,想请求各位大佬看看可能是什么问题,万分感谢![/font][/backcolor][/color][font=Tahoma, Microsoft Yahei, Simsun][color=#252525] [/color][/font][color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]#include
[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]#define uint unsigned int[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]#define uchar unsigned char[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]uint volt=0; //电压值测定值[/font][/backcolor][/color] [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "]sbit CLK=P2^7; //时钟信号[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]sbit START=P2^4; //转换启动开关[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]sbit EOC=P2^5; //转换结束标志[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]sbit OE=P2^6;//定义ADC0809各脚[/font][/backcolor][/color] [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "]void delay(uint x)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]{[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] uchar y,z;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] for(y=x;y>0;y--)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] for(z=250;z>0;z--);[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] }[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]void ADC()[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]{[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] EA=1;//开中断[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] OE=0;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] //确保进入正常AD转换状态[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] START=0;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] delay(10);[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] START=1;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]delay(10);[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] START=0;//ad开始转换 [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] while(EOC==0);[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][/backcolor][/color][color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "] OE=1;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] EA=0;//关中断[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] volt=P0;//获取转换值保存到volt中,(P0为转换后数据)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] volt=volt*196;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] OE=0;//输出转换结束 (要在获取转换值之后)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]}[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]void timer() interrupt 1[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]{[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] TH0=(65536-2)/256; //重装计数初值[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]TL0=(65536-2)%256; //重装计数初值[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]CLK=!CLK; //取反[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]}[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]void main()[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]{[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] TMOD=0X01; [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]CLK=0; [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]TH0=(65536-2)/256; [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]TL0=(65536-2)%256;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] ET0=1;//开定时器0中断[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] TR0=1;//开启定时器0*/[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] while(1)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] {[/font][/backcolor][/color] [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "] ADC();//调用模数转换程序 [/font][/backcolor][/color] [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "]}[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]}[/font][/backcolor][/color] 2029浏览量 0回复量 关注量