|
程序包含靜態(tài)顯示 和 計數(shù) 消隱問題都在程序中解決(本程序是用共陽數(shù)碼管)一原理圖
1.1數(shù)碼管引腳圖
20.png (54.54 KB, 下載次數(shù): 60)
下載附件
2019-7-27 08:45 上傳
2.2關(guān)于共陽與共陰的區(qū)別
21.png (80.5 KB, 下載次數(shù): 52)
下載附件
2019-7-27 08:45 上傳
//共陽數(shù)碼管 段位全部接正極 段位數(shù)碼管 置零亮
2.3電路圖
23.png (121.82 KB, 下載次數(shù): 58)
下載附件
2019-7-27 08:47 上傳
程序使用的是共陽數(shù)碼管
二程序
主程序解釋:共陽數(shù)碼管,三極管控制,通過先關(guān)閉數(shù)碼管的位選,為什么要關(guān)閉位選呢?是因為要去消隱,因為數(shù)碼管利用的是余暉效應(yīng) 他們并不是同時顯示的而是一個接著一個顯示的,
例如 你打開一個數(shù)碼管 延時1ms,人眼是看不到的,所以看的時候是同時顯示的。
2.1延時函數(shù)
31.png (23.41 KB, 下載次數(shù): 48)
下載附件
2019-7-27 08:55 上傳
使用的是0us,防止數(shù)碼管過快
2.2數(shù)碼管程序
33.png (42.64 KB, 下載次數(shù): 55)
下載附件
2019-7-27 08:55 上傳
圖上有解釋
2.3主程序
30.png (78.58 KB, 下載次數(shù): 58)
下載附件
2019-7-27 08:54 上傳
利用的是定時器,在后面有程序源碼。
單片機源程序如下:
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code ddata[]={ //共陽數(shù)碼管 段位全部接正極 段位數(shù)碼管 置零亮
- 0xc0,//0
- 0xf9,//1
- 0xa4,//2
- 0xb0,//3
- 0x99,//4
- 0x92,//5 1001 0000
- 0x82,//6
- 0xf8,//7
- 0x80,//8
- 0x90,//9
- 0x88,//A 10
- 0x83,//b 11
- 0xc6,//C 12
- 0x86,//E 13
- 0x9c,//F 14
- 0x89,//H 15
- 0xc7,//L 16
- 0xab,//n 17
- 0xe3,//u 18
- 0x8c,//P 19
- 0xbf,//- 20
- 0xa3,//o 21
- 0xff,
- 0x00} ;
- uchar code wdata[]={ //位選 是讓第幾個數(shù)碼管亮 從左到右
- 0xfe,//0
- 0xfd,//1
- 0xfb,//2
- 0xf7,//3
- };
- int a = 5210,count0;
-
- void delay1(uint z) //延時函數(shù)
- {
- uint x,y;
- for(x = z;x > 0;x --)
- for(y = 12;y > 0;y --);
- }
- void time_ds() //定時器配置函數(shù)
- {
- TMOD = 0x01; //0x89 只能字節(jié) 定時器0 16模式定時器
- TH0 = 0x4b;//50ms
- TL0 = 0xfe;
- TR0 = 1; //打開定時器
- }
- void delay(void) //誤差 0us 數(shù)碼管延時專用
- {
- unsigned char a,b,c;
- for(c=1;c>0;c--)
- for(b=222;b>0;b--)
- for(a=5;a>0;a--);
- }
- void display(int a) //數(shù)碼管顯示函數(shù)
- {
- int g,s,b,q;
- g = a % 10; //取走形參的個位十位百位,千位
- s = a / 10 % 10;
- b = a / 100 % 10;
- q = a / 1000 % 10;
-
- P2 = 0xff; //關(guān)閉數(shù)碼管的位選 全部 防止產(chǎn)生重影
- P0 = ddata[g]; //為數(shù)碼管的段位賦值
- P2 = wdata[0]; // 接通數(shù)碼管的位選
- delay(); //延遲 延遲不要過大 防止重影
-
-
- P2 = 0xff;
- P0 = ddata[s];
- P2 = wdata[1];
- delay();
-
- P2 = 0xff;
- P0 = ddata[b];
- P2 = wdata[2];
- delay();
- P2 = 0xff;
- P0 = ddata[q];
- P2 = wdata[3];
- delay();
- }
- /*
- 共陽數(shù)碼管 ,三極管空 通過先關(guān)閉數(shù)碼管的位選
- 為什么要先關(guān)閉位選 ,是因為要去“消影”,因為數(shù)碼管利用余暉效應(yīng) 他們并不是同時顯示的而是一個接著一個顯示的
- 例如 你打開一個數(shù)碼管 延時1ms 人眼是看不到的 ,所以人看的時候是同時顯示的 。
- 不懂可以看 鎖存器控制 http://www.zg4o1577.cn/bbs/dpj-10971-1.html
- */
- void main()
- {
- time_ds();
- while(1)
- {
- display(a); //數(shù)碼管顯示函數(shù)
- // delay1(); //延遲 496+4 0.5秒
- if(TF0 ==1) // 溢出 則TF = 0
- {
- TF0 = 0;
- TH0 = (65535 - 46082)/256; //50ms 兩種書寫方法 一種十六進制 一種這個
- TL0 = (65535 - 46082)%256;
- count0++;
- }
- if(count0 == 20) //溢出等于0 50*20一秒走一次
- {
- count0 = 0;
- a--;
- }
- if(a == 0) //如果a減到0則 賦初值 5210
- a = 5210;
- }
-
- }
復(fù)制代碼
所有資料51hei提供下載:
數(shù)碼管.zip
(45.08 KB, 下載次數(shù): 19)
2019-7-27 08:58 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|