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 上傳
點擊文件名下載附件
|