熱門: 51單片機(jī) | 24小時必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時間: 2021-7-31 11:42
正文摘要:使用164芯片時,仿真能完全實(shí)現(xiàn),但是實(shí)際電路上會出現(xiàn)顯示不全現(xiàn)象,求指導(dǎo)為什么會出現(xiàn)在這情況? |
我沒有看到你對n的定義啊,那你的Switch函數(shù)有何用處呢,n初始值為0,也就是說只會執(zhí)行switch(0),這樣寫的話,顯示肯定會出問題的 |
數(shù)碼管型號腳位是否一樣? |
zqz1345444061 發(fā)表于 2021-7-31 15:39 仿真圖或接線圖? 定時中斷中的Switch有什么意義?不可以一起做嗎? 段選接口呢? |
lkc8210 發(fā)表于 2021-7-31 15:05 應(yīng)該沒有加,用164芯片驅(qū)動的數(shù)碼管動態(tài)顯示消隱我不清楚如何加 |
我的程序如下,放到仿真上 是可以正常運(yùn)行的 #include<regx51.h> typedef unsigned char u8; typedef unsigned int u16; u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰數(shù)碼管 //u8 code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽數(shù)碼管 u8 smgbuff[]={0x00,0x00,0x00,0x00,0x00,0x00}; u16 i,j,k,m,s,f,n,num; sbit DAT=P3^0; sbit CLK=P3^1; void delay(u16 i) { while(i--); } void Timer0Init() { TMOD=0x01; TL0=0x67; TH0=0xFC; //定時1ms EA=1; TR0=1; ET0=1; } void main() { Timer0Init(); while(1) { for(i=0;i<8;i++) { num=smgbuff[i]; for(j=0;j<8;j++) { CLK=0; DAT=num&0x01; CLK=1; num>>=1; } } delay(50000); } } void Timer0() interrupt 1 { TL0=0x67; TH0=0xFC; k++; if(k>=1000) { k=0; if(m<60) { m++; } if(m>=60) { m=0; f++; } if(f>=60) { s++; f=0; } } switch(n) { case(0): smgbuff[0]=smgduan[m%10];n++;break; case(1): smgbuff[1]=smgduan[m/10%10];n++;break; case(2): smgbuff[2]=smgduan[f%10];n++;break; case(3): smgbuff[3]=smgduan[f/10%10];n++;break; case(4): smgbuff[4]=smgduan[s%10];n++;break; case(5): smgbuff[5]=smgduan[s/10%10];n=0;break; default:break; } } |
有沒有加消隱? |
Powered by 單片機(jī)教程網(wǎng)