历史上的今天
今天是:2025年05月07日(星期三)
2018年05月07日 | stm32控制共阳数码管以及共阴数码管
2018-05-07 来源:eefocus
共阳数码管
#include "stm32f10x.h"
u8table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};//共阳数码管0 1 2 3 4 5 6 7 8的编码
void delayms(u16 time)//延时函数 延时1ms
{
u16i=0;
while(time--)
{
i=12000;
while(i--);
}
}
void Init()
{
GPIO_InitTypeDefGPIO_InitStructure; //定义一个管脚初始化的结构体
//开启PA口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//配置PAO的模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
int main(void)
{
Init();
while(1)
{
inti;
for(i=0;i<9;i++)
{
GPIO_Write(GPIOA,table[i]);
delayms(200);
}
}
}
共阴数码管
#include"stm32f10x.h"
u8table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};//共阴数码管对应的编码
voiddelayms(u16 time)
{
u16 i=0;
while(time--)
{
i=12000;
while(i--);
}
}
voidInitStm32()
{
GPIO_InitTypeDefGPIO_InitStructure; //定义一个管脚初始化的结构体
//开启PA口时钟
GPIO_InitTypeDef DuanAndWeiMa;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
//配置PAO的模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
DuanAndWeiMa.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; //为什么要用一杠 0是段码,1是位码
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
DuanAndWeiMa.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
DuanAndWeiMa.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_Init(GPIOB,&DuanAndWeiMa);
}
intmain(void)
{
InitStm32();
while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_1);
GPIO_Write(GPIOA,0xfe); //问题是:第8个数码管控制不了,一直显示的是8
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO_Write(GPIOA,table[0]);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delayms(2);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
GPIO_Write(GPIOA,0xfd);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO_Write(GPIOA,table[1]);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delayms(2);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
GPIO_Write(GPIOA,0xfb);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO_Write(GPIOA,table[2]);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delayms(2);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
GPIO_Write(GPIOA,0xf7);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO_Write(GPIOA,table[2]);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delayms(2);
}
}
关于ODR和IDR的用法:
ODR类似于51的P0口:GPIO_A_ODR=0xff;和GPIO_Write(GPIOA,0xff);有一样的效果
IDR的用法: u8 value; value=GPIOA->IDR;
模式如果为输入,GPIO_Speed可以不赋值
下一篇:51单片机2个外部中断的应用
史海拾趣
|
关键字: 电子技术 安全接地 工作接地 防浪涌接地 防静电接地 接地是电路设计中最基础的内容,但又是几乎没人说得清的,几乎每次的培训和交流都会有人问到“老师,有没有一种通用的接地方法可以参考啊?”如果想知 ...… 查看全部问答> |
|
在公司里边,做算法实现、做程序优化以及做DSP系统配置,这几项工作是分开由不同人做的吗 我现在的课题是设计一个基于DSP的图像处理系统,老师有一个DSP的平台和工业摄像机,但是配置工作需要我自己做,这样我的工作就不光是算法问题了,还包含后期的部分移植代码的优化,我想问,我一个人怎么干得了这么多?公司里边这样一 ...… 查看全部问答> |
|
现在开发一个vxworks往web server发送一条http消息的功能,功能很简单, 发过去一条http消息,然后等待,接收server的响应http消息。 本人刚接触vxworks,只是对vxworks的socket通信有点了解,但是如何进行h ...… 查看全部问答> |
|
我在手册上看到采用间断模式,把ADC_CR1设置成6,就可以同步采集六路信号,是不是这个意识?还有ADC1和ADC2有没有对应通道啊?是不是0~8是adc1转换的通道,9~17是adc2转换的通道?还是不进行区分?… 查看全部问答> |
|
我在用2812c语言编译时头文件无法打开,错误如下: \\"pmsm.c\\", line 24: fatal error: could not open source file \\"DSP281x_Device.h\\" 1 fatal error detected in the compilation of \\"pmsm.c\\". 请高手帮忙指点一二。 ...… 查看全部问答> |
|
针对传统楼宇温控系统布线难的问题, 设计了以MS P 4 3 0 F 2 1 2 1 、 温度传感器等硬件为基础 , 用无线模块替代电缆传递信息的控制系统. 该系统定时采集的温度在本地显示的同时, 还将通过无线模块传给上位机. 上位机通过传递来的数据作出判断 ...… 查看全部问答> |




