|
單片機(jī)源程序如下:
- #include"reg52.h"
- #define uchar unsigned char
- #define uint unsigned int
- /*****數(shù)碼管位選****/
- sbit SMG_A = P2^2;
- sbit SMG_B = P2^3;
- sbit SMG_C = P2^4;
- /****數(shù)碼管碼表****/
- uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9
- /****函數(shù)聲明*****/
- void Delay(uchar x);
- void Display_SMG();
- void Init();
- uchar count = 0;//計(jì)數(shù)20,T = 20*50ms = 1s
- int number = 0;
- /*****主函數(shù)*****/
- void main()
- {
- Init();
- while(1)
- {
- Display_SMG();
- }
- }
- /******初始化函數(shù)********/
- void Init()
- {
- TMOD = 0x01;//定時(shí)器0,方式1
- TH0 = (65536 - 46080)/256;//裝初值,延時(shí)50ms
- TL0 = (65536 - 46080)%256;
- EA = 1;//開總中斷
- ET0 = 1;//開定時(shí)器中斷
- TR0 = 1;//啟動(dòng)定時(shí)器0
- }
- /********數(shù)碼管顯示函數(shù)***********/
- void Display_SMG()
- {
- uchar ge,shi,bai,qian;
- qian = number / 1000;
- bai = (number / 100)%10;
- shi = (number / 10)%10;
- ge = number % 10;
-
- //*****數(shù)碼管顯示個(gè)位******
- SMG_A = 0;
- SMG_B = 0;
- SMG_C = 0;
- P0 = table[ge];
- Delay(10);
- //*****數(shù)碼管顯示十位******
- SMG_A = 1;
- SMG_B = 0;
- SMG_C = 0;
- P0 = table[shi];
- Delay(10);
- //*****數(shù)碼管顯示百位******
- SMG_A = 0;
- SMG_B = 1;
- SMG_C = 0;
- P0 = table[bai];
- Delay(10);
- //*****數(shù)碼管顯示千位******
- SMG_A = 1;
- SMG_B = 1;
- SMG_C = 0;
- P0 = table[qian];
- Delay(10);
- }
- /********定時(shí)器中斷函數(shù)**********/
- void time0() interrupt 1
- {
- TH0 = (65536 - 46080)/256;//裝初值,延時(shí)50ms
- TL0 = (65536 - 46080)%256;
- count++;
- if(count == 20) //延時(shí)1s后
- {
- count = 0;
- number++;
- if(number == 9999)
- {
- number = 0;
- }
- }
- }
- /*********延時(shí)函數(shù)*********/
- void Delay(uchar x)
- {
- uchar y,z;
- for(y = 30;y > 0;y--)
- for(z = x;z > 0;z--);
- }
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|