标题:
STM32按键控制数码管 计数 翻转的程序源码
[打印本页]
作者:
1234567892
时间:
2018-11-7 17:39
标题:
STM32按键控制数码管 计数 翻转的程序源码
stm32单片机源程序如下:
/*******************************************************************************
--------------------------------------------------------------------------------
* 实 验 名 : 使用库函数点亮一个LED
* 实验说明 :
* 连接方式 :
* 注 意 : LED驱动文件在led.c内
*******************************************************************************/
#include "stm32f10x.h"
#include "led.h"
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
unsigned char shumaguan_Tab[] = {
0xc0, // 显示 0
0xf9, // 显示 1
0xa4, // 显示 2
0xb0, // 显示 3
0x99, // 显示 4
0x92, // 显示 5
0x82, // 显示 6
0xf8, // 显示 7
0x80, // 显示 8
0x98, // 显示 9
}; // 数码管显示字符表
//unsigned char shumaguan1_Tab[] = {
// 0x98, // 显示 9
// 0x80, // 显示 8
// 0xf8, // 显示 7
// 0x82, // 显示 6
// 0x92, // 显示 5
// 0x99, // 显示 4
// 0xb0, // 显示 3
// 0xa4, // 显示 2
// 0xf9, // 显示 1
// 0xc0, // 显示 0
// };
void delay(unsigned int xms) // 延时xms
{
unsigned int x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
int main()
{
int i1=0,i2=0,a ,cnt=0,i3=0,i4=0,cnt1,b,c=1,d=0,i5=0,i6=0,i7=0,kcnt=0;
// Init
key_Init(); //按键初始化
BUZ_Init(); //蜂鸣器初始化
LED_Init(); //LED初始化
while(1)
{
{//
delay(1);
i1++;
i2++;
i3++;
i4++;
i5++;
i6++;
i7++;
//TimerBase_TaskA++;
}
// Tasks
// Task 每次按下按键次数
if(i5>20&& KEY1_DOWN==0 )
{ i5=0;
// beep = ~beep;
delay(5);
if( KEY1_DOWN==0)
{
kcnt=kcnt+1;
}
// Task 判断按键按下的奇偶
if( kcnt%2==0 )
{i6=0;
a=1; //传递给数码管 使之反向计数
b=1; // 传递给蜂鸣器 使蜂鸣器发出声音
c=1; // 将数码管正向计数程序 锁死
cnt1 = cnt ; //读取cnt的值
cnt=0; //清除正向计数的值
}
else
{ i6=0;
a=0; // 将数码管反向计数程序 锁死
b=0; //传递给蜂鸣器 使蜂鸣器没有声音
c=0; //传递给数码管 使之正向计数
cnt=0;
cnt1=0; //清除反向计数的值
}
while(KEY1_DOWN==0);
}
// Task 数码管正向计数
if((i1 > 50000) && (c==0))
{
i1=0;
if(cnt > 9) // 产生从cnt 0~9循环
{
cnt =0;
// a=0; // 将数码管反向计数程序 锁死
// b=1; //传递给蜂鸣器 使蜂鸣器有声音
}
GPIO_Write(GPIOC, shumaguan_Tab[cnt]);
cnt++;
}
// Task 数码管反向计数
if(i3 > 50000&&a==1)
{
i3=0;
if(cnt1 <0) // 产生从cnt1 0~9循环
{
//
// b=1; // 传递给蜂鸣器 发出声音
// c=0; // 开始正向计数
cnt1=0;
}
GPIO_Write(GPIOC, shumaguan_Tab[cnt1]);
cnt1--;
//b=0;
}
// Task 翻转时蜂鸣器发出声音
if(i2 > 10 )
{i2=0;
if( b==1)
{
c=1;
a=1; //反向计数
d=1;
beep = ~beep;// 产生固定频率
}
}
//清零蜂鸣器
if(i7 > 50000&& d==1 )
{
i7=0;
b=0;
}
// Task D
/* if(i4 > 10)
{i4=0;
if(d==1)
{
a=0;
c=0;
beep = ~beep; // 产生固定频率
cnt =0;
d=0;
}
}*/
}
}
复制代码
所有资料51hei提供下载:
第三次数码管 立即反转.rar
(264.71 KB, 下载次数: 57)
2018-11-7 17:41 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2018-11-7 17:42
补全原理图或者详细说明一下电路连接即可获得100+黑币
作者:
1234567892
时间:
2018-11-7 17:47
admin 发表于 2018-11-7 17:42
补全原理图或者详细说明一下电路连接即可获得100+黑币
在哪补全..
作者:
admin
时间:
2018-11-7 17:57
回帖框右侧的高级模式可以上图
作者:
1234567892
时间:
2018-11-13 23:06
原理图.doc
(335.5 KB, 下载次数: 23)
2018-11-13 23:05 上传
点击文件名下载附件
下载积分: 黑币 -5
原理图.doc
(335.5 KB, 下载次数: 9)
2018-11-12 20:50 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1