求大佬帮我看看,为何我的数码管理都不理我,设置io口为低电平竟然变成高电平
麻烦站内大佬帮我看看程序,是不是哪里出错了
#include "stm32f10x_gpio.h"
#include "stm32f10x.h"
#include "SMG.h"
#include "SysTickDelay.h"
void lcd_init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_ResetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5);
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
}
void Display(int n)
{
if (n<99)
{
int i;
for (i=0;i<2;i++)
{
switch(i)
{
case 0:
GPIO_ResetBits(GPIOC,GPIO_Pin_5);
break;
case 1:
GPIO_ResetBits(GPIOC,GPIO_Pin_4);
break;
}
switch(n%10)
{
case 0:
GPIO_ResetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
break;
case 1:
GPIO_ResetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14);
break;
case 2:
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_14|GPIO_Pin_15);
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_8);
break;
case 3:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_15);
break;
case 4:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13);
break;
case 5:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_15);
break;
case 6:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
break;
case 7:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
break;
case 8:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
break;
case 9:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_15);
break;
}
n=n/10;
delay_ms(10);
if(n==0)
break;
}
}
}
int main(void)
{
int count;
int timecheck;
lcd_init();
count=0;
timecheck=0;
while(1)
{
Display(count);
timecheck++;
delay_ms(20);
if (timecheck>100)
{
timecheck=0;
count++;
}
}
}

#include "stm32f10x_gpio.h"
#include "stm32f10x.h"
#include "SMG.h"
#include "SysTickDelay.h"
void lcd_init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_ResetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5);
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
}
void Display(int n)
{
if (n<99)
{
int i;
for (i=0;i<2;i++)
{
switch(i)
{
case 0:
GPIO_ResetBits(GPIOC,GPIO_Pin_5);
break;
case 1:
GPIO_ResetBits(GPIOC,GPIO_Pin_4);
break;
}
switch(n%10)
{
case 0:
GPIO_ResetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
break;
case 1:
GPIO_ResetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14);
break;
case 2:
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_14|GPIO_Pin_15);
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_8);
break;
case 3:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_15);
break;
case 4:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13);
break;
case 5:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_15);
break;
case 6:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
break;
case 7:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
break;
case 8:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
break;
case 9:
GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_15);
break;
}
n=n/10;
delay_ms(10);
if(n==0)
break;
}
}
}
int main(void)
{
int count;
int timecheck;
lcd_init();
count=0;
timecheck=0;
while(1)
{
Display(count);
timecheck++;
delay_ms(20);
if (timecheck>100)
{
timecheck=0;
count++;
}
}
}

...全文
相关推荐
shumaguan.rar_IO 数码管_shumaguan_数码管 io
数码管参考程序,直接对IO口进行操作。。
参考资料-单片机IO口分时复用在键盘和显示电路中的应用.zip
参考资料-单片机IO口分时复用在键盘和显示电路中的应用.zip
数码管60S计数显示_数码管_Vc_
51单片机数码管控制程序,C语言开发,数码管60S计数显示
51单片机教程(五):单片机动态扫描驱动数码管
上一讲介绍了单片机外接键盘的原理,并给出了应用实例。本讲将介绍单片机动态驱动段式数码管。通过该讲,读者可以掌握段式数码管的工作原理和如何通过动态驱动的方法设计电路以及程序。
74LS595驱动数码管
运用74LS595驱动数码管,实现数码管的静态显示.达到节省IO引脚的目的


单片机/工控
