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)
|