熱門: 51單片機(jī) | 24小時必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
這是數(shù)碼管顯示的程序 |
#include<reg51.h> #include"SEGx8.H" #include"DELAY.H" #include"DS1302.H" #include"NONGLI.H" #define SEGx8_Port P0 //硬件端口定義 extern unsigned char dtime[7][2]; extern unsigned char ntime[3][2]; #define uchar unsigned char #define uint unsigned int sbit E1=P2^0; //定義數(shù)碼管使能引腳1 sbit E2=P2^1; //定義數(shù)碼管使能引腳2 sbit E3=P2^2; //定義數(shù)碼管使能引腳3 sbit E4=P2^3; //定義數(shù)碼管使能引腳4 sbit E5=P1^0; //定義數(shù)碼管使能引腳5 sbit E6=P1^1; //定義數(shù)碼管使能引腳6 unsigned char SEGx8_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char SEGx8_bits[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; /*--------------------------底層驅(qū)動-----------------------------*/ void SEGx8_WEI(unsigned char _Numb) //位選 { switch(_Numb) { case 0: P2=0X00;break; case 1: P2=0X01;break; case 2: P2=0X02;break; case 3: P2=0X03;break; case 4: P2=0X04;break; case 5: P2=0X05;break; case 6: P2=0X06;break; case 7: P2=0X07;break; case 8: P2=0X08;break; case 9: P2=0X09;break; case 10: P2=0X0A;break; case 11: P2=0X0B;break; case 12: P2=0X0C;break; case 13: P2=0X0D;break; case 14: P2=0X0E;break; case 15: P2=0X0F;break; case 16: P1=0X00;break; case 17: P1=0X01;break; case 18: P1=0X02;break; case 19: P1=0X03;break; default :break; } } void SEGx8_DUAN(unsigned char _Numb) //位選 { switch(_Numb) { case 0: SEGx8_Port=0X3f;break; case 1: SEGx8_Port=0X06;break; case 2: SEGx8_Port=0X5b;break; case 3: SEGx8_Port=0X4f;break; case 4: SEGx8_Port=0X66;break; case 5: SEGx8_Port=0X6d;break; case 6: SEGx8_Port=0X7d;break; case 7: SEGx8_Port=0X07;break; case 8: SEGx8_Port=0X7f;break; case 9: SEGx8_Port=0X6f;break; default :break; } } /*----------------------------實(shí)際應(yīng)用------------------------*/ void showtime(void) { unsigned char i,d1,d2,m1,m2; Conversion(0,YEAR,MONTH,DATE); m1=month_moon/10; m2=month_moon%10; d1=day_moon/10; d2=day_moon%10; for(i=0;i<10;i++) { SEGx8_WEI(0);SEGx8_Port=0X5b;delayms(1);//顯示年 SEGx8_WEI(1);SEGx8_Port=0X3f;delayms(1); SEGx8_WEI(2);SEGx8_DUAN(dtime[5][0]-0x30); delayms(1); SEGx8_WEI(3);SEGx8_DUAN(dtime[5][1]-0x30); delayms(1); SEGx8_WEI(4);SEGx8_DUAN(dtime[4][0]-0x30);delayms(1);//顯示月 SEGx8_WEI(5);SEGx8_DUAN(dtime[4][1]-0x30);delayms(1); SEGx8_WEI(6);SEGx8_DUAN(dtime[3][0]-0x30);delayms(1);//顯示日 SEGx8_WEI(7);SEGx8_DUAN(dtime[3][1]-0x30);delayms(1); SEGx8_WEI(8);SEGx8_DUAN(dtime[2][0]-0x30);delayms(1); //顯示時 SEGx8_WEI(9);SEGx8_DUAN(dtime[2][1]-0x30);delayms(1); SEGx8_WEI(10);SEGx8_DUAN(dtime[1][0]-0x30);delayms(1);//顯示分 SEGx8_WEI(11);SEGx8_DUAN(dtime[1][1]-0x30);delayms(1); SEGx8_WEI(12);SEGx8_DUAN(dtime[0][0]-0x30);delayms(1);//顯示秒 SEGx8_WEI(13);SEGx8_DUAN(dtime[0][1]-0x30);delayms(1); SEGx8_WEI(14);SEGx8_DUAN(dtime[6][0]-0x30);delayms(1);//顯示星期 SEGx8_WEI(15);SEGx8_DUAN(dtime[6][1]-0x30);delayms(1); SEGx8_WEI(16);SEGx8_DUAN(m1-0x30); delayms(1);//農(nóng)歷月 SEGx8_WEI(17);SEGx8_DUAN(m2-0x30); delayms(1); SEGx8_WEI(18);SEGx8_DUAN(d1-0x30); delayms(1);//農(nóng)歷日 SEGx8_WEI(19);SEGx8_DUAN(d2-0x30); delayms(1); } } |
本帖最后由 zl2168 于 2017-5-6 14:52 編輯 實(shí)例57 74LS139選通4位LED數(shù)碼管動態(tài)顯示 ![]() 先Proteus仿真一下,確認(rèn)有效。 ![]() 以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行。書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。 |
你還是先把程序和原理圖放出來吧 ,不然,我們也沒辦法幫你找問題 |
來個模擬圖·電路看看 是實(shí)物還是模擬? |
全部顯示8表明數(shù)碼管的abcdefg都被點(diǎn)亮,檢查一下程序 |
動態(tài)刷新 |
什么都沒有給|? |
就根據(jù)你的提問來大致說下:1找硬件問題,2找程序問題。3程序下載至硬件協(xié)議/通訊/。 |
圖發(fā)不上來啊 |
這問題問的,都不知如何幫你 |
最后一位顯示8,應(yīng)該是你沒消隱導(dǎo)致兩個數(shù)顯示重疊了,具體的還得看你的程序,能不能發(fā)一下你的程序好幫你解決 |
程序太多,分模塊寫的 |
應(yīng)該不會,要么都不對要么全對,要學(xué)好C51,先學(xué)會單步調(diào)試。試試單步調(diào)試排除軟件問題,軟件沒問題再檢查硬件是否正確。 |
程序呢,還有硬件圖 |
Powered by 單片機(jī)教程網(wǎng)