數碼管為二位共陽數碼管,我對引腳的排列方式和一般的有些不同,目的是在PCB上的頂層線更少。另外還算了一下這種接法的段碼,在代碼里大家可以看下
仿真文件和c源碼:
30秒倒計時.zip
(67.42 KB, 售價: 2 E幣)
2021-4-17 01:24 上傳
點擊文件名下載附件
售價: 2 E幣 [記錄]
[ 購買]
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1.png (42.78 KB)
下載附件
2021-4-17 01:22 上傳
單片機源程序如下:
- #include <reg51.h>
- unsigned char count=0;
- sbit LED_B1=P3^6;
- sbit LED_A1=P3^7;
- unsigned char NSF=30;
- void Init(void)
- {
- TMOD=0x01;
- TH0=(65536-10000)/256;
- TL0=(65536-10000)%256;
- TR0=1;
- ET0=1;
- EA=1;
- }
- void timer0(void) interrupt 1
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TR0=1;
- ET0=1;
- EA=1;
- count++;
- if(count>19)
- {
- count=0;
- NSF--;
- }
- }
-
- void delayms(unsigned int xms)
- {
- unsigned int i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);}
- unsigned char table[]={0x3,0xcf,0x2a,0x4a,0xc6,0x52,0x12,0xcb,0x2,0x42};
- void display1(unsigned char num1,unsigned char num2)
- {
- LED_A1=1;
- P0=table[num1];
-
- delayms(10);
- LED_A1=0;
-
- LED_B1=1;
- P0=table[num2];
-
- delayms(10);
- LED_B1=0;
- }
- void main()
- {
- while(1)
- {
- EA=1;
- Init();
- while(NSF!=0)
- {
- display1(NSF/10,NSF%10);
- delayms(10);
- }
- while(NSF==0)
- {
- NSF=30;
- display1(NSF/10,NSF%10);
- delayms(10);
- }
- }
- }
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|