|
今天學習51的第二天,剛剛學了定時器,仿照例程寫了一個定時器計時控制LED燈的程序,一次性通過然后直接上數碼管
效果還不錯
聲明:板子不是金沙灘工作室的,在數碼管顯示可能和別的板子有很大的區別
先上圖
可惜的是不能上傳自己的視頻。。
下面貼代碼
定時器控制LED亮滅
- #include <reg52.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit LED = P1^0;
- void main ()
- {
- uint count = 0;
- LED = 0;
- TMOD = 0X01;//設置T0為工作模式1
- TH0 = 0XB8; //裝初值
- TL0 = 0X00;
- TR0 = 1;//啟動T0
- while (1)
- {
- if (TF0 == 1) //判斷T0是否溢出
- {
- TF0 = 0;//T0溢出后,清零
- TH0 = 0XB8;//重新裝初值
- TL0 = 0X00;
- count ++;
- if (count == 10) //判斷T0是否溢出達到10次,即計時200ms
- {
- count = 0;
- LED = ~LED;
- }
- }
- }
- }
復制代碼
定時器控制數碼管
- #include <reg52.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define SHUMAGUAN P0
- sbit dula = P2^6;
- sbit wela = P2^7;
- uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //數碼管顯示編碼(1-F)
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- void show_shumaguan ( i )
- {
- dula = 0; //開段選
- SHUMAGUAN = table[i];//送數據
- dula = 1;
- dula = 0;
- wela = 0; //開位選
- SHUMAGUAN = 0x00;
- wela = 1;
- wela = 0;
- }
- void main()
- {
- uint count = 0;
- uint i = 0;
- TMOD = 0X01;//選擇工作方式為1
- TH0 = 0XB8;//裝初值,定時20ms
- TL0 = 0X00;
- TR0 = 1;//啟動T0
- while (1)
- {
- if (TF0 == 1)//判斷T0是否溢出
- {
- TF0 = 0;//重裝初值
- TH0 = 0XB8;
- TL0 = 0X00;
- count ++;
- if (count == 10)//判斷計時到達500ms
- {
- show_shumaguan(i);
- i ++;
- if ( i == 16 )
- i = 0;
- count = 0;
- }
- }
- }
- }
復制代碼
大神路過別笑!畢竟新手!還望鼓勵!謝謝!
|
|