|
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]; //数码管显示个位数字的字形码
- 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以下绿灯亮,为什么我的这个全亮了,控制不了
并且个位数一直乱码,红绿灯全亮了
十位数是正常的,但是红绿灯全亮了
我检查了引脚是正常的,不知道哪里出错了
|
|