用定時器計時,並將實時秒數顯示到數碼管上面,本例僅支援0-99顯示
#include
#define uchar unsigned char
#define uint unsigned int
uint code a= ;
sbit we = p2^7;
sbit du = p2^6;
void delay(uint i);
void display(uchar i);
void delay(uint i) //普通延時函式
uint x,y;
for(x = 0;x < i;x++)
for(y = 0;y < 114;y++);
void display(uchar i)
uchar one,two;
one = i / 10; //十位數的數值
two = i % 10; //個位數的數值
p0 = 0xff; //防止重影,消影手段
we= 1; //位選開啟
p0 = 0xfe;
we = 0;
du = 1; //段選開啟
p0 = a[one];//第乙個數碼管顯示十位數
du = 0;
delay(5);
p0 = 0xff;
we = 1;
p0 = 0xfd;
we = 0;
du = 1;
p0 = a[two];//第二個數碼管顯示個位數
du = 0;
delay(5);
void main()
tr1= 1; //開啟定時計數器1
tmod = 0x10; //工作方式設定為定時器
th1 = 0x4b; //裝入初值,根據微控制器的晶振和你打算計算的時間有關
tl1 = 0xfc; //微控制器晶振為11.0592,計時50ms;裝入0x4bfc;
while(1){
uchar m,b;
if(tf1 == 1){ //檢測tf1位是否為1,是則說明定時器已裝滿一次
th1 = 0x4b; //重新裝入初值
tl1 = 0xfc;
tf1 = 0; //將tf1位重新置0
m++; //裝滿次數,即50ms的次數
if(m == 20){ //當20次裝滿50ms時,則過了1s
m = 0; //將次數置0,繼續計時下一秒
b++; //程式執行的總時間,總秒數
display(b);
定時器數碼管時鐘
mai.c handlebars include system.h include key.h extern uchar flag 1ms 在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。void main void 程式的主函式 在這裡插入 片key.c include key.h...
定時器控制數碼管2011 1 24
1.利用定時器 計數器t1產生定時時鐘,由p1口控制8個發光二極體,使8個指示燈依次一次一次閃動,閃動頻率為10次 秒,迴圈 2.用定時器以間隔500ms在6位數碼管依次顯示0,1,2,3,c,d,e,f,重複 include include define uchar unsigned char s...
51 定時器掃瞄矩陣鍵盤 數碼管顯示
大二的時候學完51寫的乙個綜合程式。用定時器中斷掃瞄行,即行已知 再在主程式中判斷列 得到的行列值帶入顯示函式display 按下鍵顯示,鬆開取消顯示。涉及原理理解,邏輯比較混亂,可讀性低。includeunsigned char i,j,l,r,add 0,temp 注意微控制器的行列對應的引腳 ...