為什么這樣顯示數碼管亮度不夠,為啥顯示函數里不要加延時了,加了延時不能實現功能!
單片機源程序如下:
- #include <reg52.h>
- #define dataport P0
- #define uint unsigned int
- #define uchar unsigned char
- sbit duanch_1 = P2^2;
- sbit weich_2 = P2^3;
- sbit key_1 = P3^3;
- sbit key_2 = P3^4;
- uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6};
- uchar weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar tempdata[8];
- void delayms(uchar t);
- void display(uchar firstbit,uchar Num);
- void init();
- void main()
- {
- uchar num;
- key_1 = 1;
- key_2 = 1;
- init();
- while(1)
- {
- if(!key_1)
- {
- delayms(10);
- if(!key_1)
- {
- while(!key_1);
- {
- if(num<99)
- num++;
- }
- }
- }
- if(!key_2)
- {
- delayms(10);
- if(!key_2)
- {
- while(!key_2);
- {
- if(num>0)
- num--;
- }
- }
- }
- tempdata[0] = duanma[num/10];
- tempdata[1] = duanma[num%10];
- }
- }
- void delayms(uchar t)
- {
- uchar i,j;
- for(i=0;i<120;i++)
- for(j=0;j<t;j++);
- }
- void display(uchar firstbit,uchar Num)
- {
- uchar i;
- for(i=0;i<Num;i++)
- {
- dataport = 0;
- duanch_1 = 1;
- duanch_1 = 0;
-
- dataport = weima[i+firstbit];
- weich_2 = 1;
- weich_2 = 0;
-
- dataport = tempdata[i];
- duanch_1 = 1;
- duanch_1 = 0;
- }
- }
- void init()
- {
- TMOD|=0x01;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- void time_0 ()interrupt 1
- {
- TH0 = (65536-2000)/256;
- TL0 = (65536-2000)%256;
-
- display(0,3);
- }
復制代碼
|