|
90家元
这样的灯板怎么进行电亮控制哇
两条单独的线,分别接红色和绿色的灯,使用STM32F103C8T6芯片,通过ULN2803进行驱动,共阴极的数码管
- #include "stm32f10x.h" // Device header
- #include "Delay.h"
- #define U4P1_PIN GPIO_Pin_0
- #define U4P1_High() GPIO_SetBits(GPIOB,U4P1_PIN)
- #define U4P1_Low() GPIO_ResetBits(GPIOB,U4P1_PIN)
- #define U4P2_PIN GPIO_Pin_1
- #define U4P2_High() GPIO_SetBits(GPIOB,U4P2_PIN)
- #define U4P2_Low() GPIO_ResetBits(GPIOB,U4P2_PIN)
- #define U4P3_PIN GPIO_Pin_3
- #define U4P3_High() GPIO_SetBits(GPIOB,U4P3_PIN)
- #define U4P3_Low() GPIO_ResetBits(GPIOB,U4P3_PIN)
- #define U4P4_PIN GPIO_Pin_4
- #define U4P4_High() GPIO_SetBits(GPIOB,U4P4_PIN)
- #define U4P4_Low() GPIO_ResetBits(GPIOB,U4P4_PIN)
- #define U4P5_PIN GPIO_Pin_5
- #define U4P5_High() GPIO_SetBits(GPIOB,U4P5_PIN)
- #define U4P5_Low() GPIO_ResetBits(GPIOB,U4P5_PIN)
- #define U4P6_PIN GPIO_Pin_6
- #define U4P6_High() GPIO_SetBits(GPIOB,U4P6_PIN)
- #define U4P6_Low() GPIO_ResetBits(GPIOB,U4P6_PIN)
- #define U4P7_PIN GPIO_Pin_7
- #define U4P7_High() GPIO_SetBits(GPIOB,U4P7_PIN)
- #define U4P7_Low() GPIO_ResetBits(GPIOB,U4P7_PIN)
- #define U6P1_PIN GPIO_Pin_8
- #define U6P1_High() GPIO_SetBits(GPIOB,U6P1_PIN)
- #define U6P1_Low() GPIO_ResetBits(GPIOB,U6P1_PIN)
- #define U6P2_PIN GPIO_Pin_9
- #define U6P2_High() GPIO_SetBits(GPIOB,U6P2_PIN)
- #define U6P2_Low() GPIO_ResetBits(GPIOB,U6P2_PIN)
- #define U6P3_PIN GPIO_Pin_10
- #define U6P3_High() GPIO_SetBits(GPIOB,U6P3_PIN)
- #define U6P3_Low() GPIO_ResetBits(GPIOB,U6P3_PIN)
- #define U6P4_PIN GPIO_Pin_11
- #define U6P4_High() GPIO_SetBits(GPIOB,U6P4_PIN)
- #define U6P4_Low() GPIO_ResetBits(GPIOB,U6P4_PIN)
- #define U6P5_PIN GPIO_Pin_12
- #define U6P5_High() GPIO_SetBits(GPIOB,U6P5_PIN)
- #define U6P5_Low() GPIO_ResetBits(GPIOB,U6P5_PIN)
- #define U6P6_PIN GPIO_Pin_13
- #define U6P6_High() GPIO_SetBits(GPIOB,U6P6_PIN)
- #define U6P6_Low() GPIO_ResetBits(GPIOB,U6P6_PIN)
- #define U6P7_PIN GPIO_Pin_14
- #define U6P7_High() GPIO_SetBits(GPIOB,U6P7_PIN)
- #define U6P7_Low() GPIO_ResetBits(GPIOB,U6P7_PIN)
- //red,green
- #define R_PIN GPIO_Pin_2
- #define R_High() GPIO_SetBits(GPIOA,R_PIN)
- #define R_Low() GPIO_ResetBits(GPIOA,R_PIN)
- #define G_PIN GPIO_Pin_3
- #define G_High() GPIO_SetBits(GPIOA,G_PIN)
- #define G_Low() GPIO_ResetBits(GPIOA,G_PIN)
- void SMG_Configuration(void)
- {
- GPIO_InitTypeDef SMG_PIN;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
- //U4
- SMG_PIN.GPIO_Mode = GPIO_Mode_Out_PP;
- SMG_PIN.GPIO_Pin = U4P1_PIN | U4P2_PIN | U4P3_PIN | U4P4_PIN | U4P5_PIN | U4P6_PIN | U4P7_PIN;
- SMG_PIN.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB,&SMG_PIN);
-
- //U6
- SMG_PIN.GPIO_Mode = GPIO_Mode_Out_PP;
- SMG_PIN.GPIO_Pin = U6P1_PIN | U6P2_PIN | U6P3_PIN | U6P4_PIN | U6P5_PIN | U6P6_PIN | U6P7_PIN;
- SMG_PIN.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB,&SMG_PIN);
-
- //RED,GREEN
- SMG_PIN.GPIO_Mode = GPIO_Mode_Out_OD;
- SMG_PIN.GPIO_Pin = R_PIN | G_PIN;
- SMG_PIN.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&SMG_PIN);
- R_Low();
- G_Low();
- }
- uint16_t table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uint16_t disp[2];
- uint16_t temp,i;
- void zxm_Init(void) //字形码函数
- {
-
- disp[1] = table[i/10]; //数码管显示十位数字的字形码
- disp[0] = table[i%10]; //数码管显示个位数字的字形码
- temp = (disp[1]<<8)|disp[0]; //十位数的字形码左移8位,然后与个位数的字形码合并
- GPIO_Write(GPIOB,temp);
- Delay_ms(300);
- }
- int main(void)
- {
- SMG_Configuration();
-
- while (1)
- {
- for(i=99;i>0;i--) //数码管从99开始自减,到0结束
- {
- if(i>=80)
- {
- zxm_Init();
- Delay_ms(300);
-
- R_High(); //红亮
- Delay_ms(200);
- G_Low(); //绿灭
- Delay_ms(200);
-
-
- }
-
- if(i<80)
- {
- zxm_Init();
- Delay_ms(300);
-
- G_High(); //绿亮
- Delay_ms(200);
- R_Low(); //红灭
- Delay_ms(200);
-
- }
- }
- }
- }
复制代码 为什么,我想对其进行80以上红灯亮,80以下绿灯亮,为什么我的这个全亮了,控制不了
并且个位数一直乱码,红绿灯全亮了
十位数是正常的,但是红绿灯全亮了
我检查了引脚是正常的,不知道哪里出错了
|
|