ch452鍵盤掃描問(wèn)題???、

各位大蝦,我使用的是ch452來(lái)做鍵盤掃描和數(shù)碼管驅(qū)動(dòng),數(shù)碼管驅(qū)動(dòng)現(xiàn)在正常,但是鍵盤掃描確沒(méi)法正常工作,當(dāng)按下按鍵后數(shù)碼管上顯示的東西全部熄滅,也產(chǎn)生不了中斷信號(hào),請(qǐng)問(wèn)這是什么原因?是芯片問(wèn)題還是電路的問(wèn)題,我將SEG引腳上的電阻使用的是270的電阻,DIG引腳上的二極管沒(méi)有連接,不知道有沒(méi)有影響?? 懇請(qǐng)各位大俠指點(diǎn)一下。

我使用的系統(tǒng)設(shè)置,數(shù)碼管上顯示21 Send_Command(0x201); Send_Command(0x423); Send_Command(0x582); Send_Command(0x801); Send_Command(0x902);


建議你發(fā) Send_Command(0x403); Send_Command(0x580); Send_Command(0x801); Send_Command(0x902); 實(shí)驗(yàn)一下

建議你用我們的CH452例子程序運(yùn)行試一下。 建議參照我們的CH452PDF上的完整應(yīng)用例子接線圖接上防漏電二極管。 如果還有問(wèn)題的話,就請(qǐng)把你的電路連線圖發(fā)給我們看一下。


重新發(fā)送還是不行~每次進(jìn)入鍵盤中斷后,ch452芯片的DOUT腳還一直是低電平,一直到發(fā)送最后一個(gè)時(shí)鐘后DOUT腳才重新的升為高電平,我用的是4*5的鍵盤,我的單片機(jī)用的是8051F040,驅(qū)動(dòng)6個(gè)數(shù)碼管,請(qǐng)指教問(wèn)題出在什么地方了??


請(qǐng)確定CH452的VCC和GND間接200uF的濾波電容。 每個(gè)數(shù)碼管上都需要接一個(gè)防漏電二極管。 有按鍵產(chǎn)生后,CH452的DOUT腳會(huì)輸出低電平,讀取按鍵操作成功后,DOUT腳才會(huì)恢復(fù)高電平。


樓主,你的問(wèn)題其實(shí)很好處理,首先電路上就象我們同事AShin所說(shuō)的那樣,在我們芯片的VCC引腳與GND之間一定要接一個(gè)不小于200UF的電解電容以及104,具體您可以參考CH452的手冊(cè).為什么要讓你這樣接,這樣接可以防止電路中電壓突變的時(shí)候不會(huì)影響CH452的顯示,否則有可能造成您前面說(shuō)的黑屏的現(xiàn)象. 現(xiàn)在的問(wèn)題首先您要告訴我們按照我們給您提供的建議以后現(xiàn)象是什么 (1)會(huì)不會(huì)再黑屏? (2)DOUT引腳低是很正常的,因?yàn)楸硎居邪存I需要處理,不管您是中斷還是查詢,沒(méi)有任何關(guān)系,進(jìn)入中斷,您將中斷關(guān)閉就是了,不會(huì)影響什么,即使您不關(guān)閉中斷,也沒(méi)有關(guān)系,DOUT引腳的狀態(tài)取決于您是否發(fā)了讀鍵盤的命令,它會(huì)一直等您的命令,如果發(fā)了命令以后,DOUT會(huì)變成高電平,然后開(kāi)始輸出鍵值,否則一直是低電平,也就是說(shuō)一直會(huì)觸發(fā)中斷.


我在ATMEL的51單片機(jī)上測(cè)試時(shí)芯片工作正常,能夠?qū)崿F(xiàn)按鍵以及數(shù)碼管的顯示,但是在51F系列單片機(jī)上卻實(shí)現(xiàn)不了預(yù)定的功能,51F系列單片機(jī)是3.3V供電的,請(qǐng)問(wèn)各位大俠是不是供電的電壓的問(wèn)題啊!多謝了?。?!


我發(fā)現(xiàn)一個(gè)很奇怪的現(xiàn)象,當(dāng)直接運(yùn)行你們給出的測(cè)試程序時(shí)能夠正常運(yùn)行,但是當(dāng)進(jìn)行調(diào)試運(yùn)行時(shí)卻發(fā)現(xiàn)讀到的數(shù)據(jù)居然都是0,難道芯片的高低電平還有最大值不成?


V1版的CH452只可以在5V供電下工作,V2版的CH452在5V和3.3V下都可以工作。 CH452的批號(hào)最后3位除070,071,085以外的都是V1版。 建議你不要用仿真器來(lái)調(diào)試運(yùn)行,用單片機(jī)直接運(yùn)行。 51F的速度比普通51快,程序里面的延時(shí)時(shí)間可以加長(zhǎng)一些。


多謝指教,確實(shí)是和延時(shí)的時(shí)間有關(guān)系,在改變延時(shí)的時(shí)間后運(yùn)行你們給的測(cè)試程序時(shí)能夠?qū)崿F(xiàn)預(yù)定的功能,但是我想把程序改成中斷方式來(lái)讀取鍵盤的代碼,在中斷程序中關(guān)閉中斷,但是不知道為什么單片機(jī)讀到的全是0,我用示波器看到中斷程序中芯片也確實(shí)是發(fā)出了高電平的脈沖,難道單片機(jī)把端口配置成中斷后就不能實(shí)現(xiàn)數(shù)據(jù)的讀取了?還望能不吝賜教?。?!


中斷里面最好不要調(diào)用外部函數(shù),可能會(huì)出問(wèn)題。直接寫操作時(shí)序就可以了。

我們的451例子是這樣寫的。 //中斷子程序 使用中斷2,寄存器組1

void ch451_inter() interrupt 2 using 1 { unsigned char i; //定義循環(huán)變量 unsigned char command,keycode; //定義控制字寄存器,和中間變量定時(shí)器 command=0x07; //讀取鍵值命令的高4位0111B ch451_load=0; //命令開(kāi)始 for(i=0;i<4;i++){ ch451_din=command&1; //低位在前,高位在后 ch451_dclk=0; command>>=1; //右移一位 ch451_dclk=1; //產(chǎn)生時(shí)鐘上升沿鎖通知CH451輸入位數(shù)據(jù) } ch451_load=1; //產(chǎn)生加載上升沿通知CH451處理命令數(shù)據(jù) keycode=0; //清除keycode for(i=0;i<7;i++){ keycode<<=1; //數(shù)據(jù)作移一位,高位在前,低位在后 keycode|=ch451_dout; //從高到低讀入451的數(shù)據(jù) ch451_dclk=0; //產(chǎn)生時(shí)鐘下升沿通知CH451輸出下一位 ch451_dclk=1; } ch451_key=keycode; //保存上次的鍵值 IE1=0; //清中斷標(biāo)志 }


郁悶的是按照你們給的程序重新修改程序后,讀到的數(shù)據(jù)依然是0,我還以為是單片機(jī)的問(wèn)題,在實(shí)驗(yàn)室里又借了一塊ATMEL的51單片機(jī)還是不行,讀到的依然是0,都弄了一個(gè)星期了,郁悶??!


UploadImages/20094817225870.rar 這個(gè)程序在我板子上可以用,你試一下。


現(xiàn)在終于可以實(shí)現(xiàn)了功能了,我還有點(diǎn)疑問(wèn)的是你們給的單片機(jī)的中斷程序沒(méi)有在程序中將中斷關(guān)閉,這樣的話為什么在數(shù)據(jù)的傳輸期間肯定有高低電平的變化,但是為什么沒(méi)有再次的觸發(fā)中斷呢?但是若是將中斷關(guān)閉的話程序讀到的又都是0,望指教,,,


UploadImages/20094913171375.rar 我在程序里面關(guān)中斷也是一樣可以讀到按鍵的。 可能你那邊讀不出的現(xiàn)象不是由關(guān)中斷引起的。


哦!可能是程序中出現(xiàn)了問(wèn)題,多謝各位大俠的指教,在此謝過(guò)了。。。CH452的功能的確比較好用,就是芯片價(jià)格太貴了,我們這里一片要15塊,比普通的51單片機(jī)都要貴。。。。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频