標(biāo)題: 怎么讓開(kāi)關(guān)機(jī)時(shí)數(shù)碼管不顯示數(shù)字,按下開(kāi)關(guān)后才顯示數(shù)字 [打印本頁(yè)]
作者: 陌路狂花 時(shí)間: 2017-10-31 22:29
標(biāo)題: 怎么讓開(kāi)關(guān)機(jī)時(shí)數(shù)碼管不顯示數(shù)字,按下開(kāi)關(guān)后才顯示數(shù)字
按下16個(gè)矩陣鍵盤依次在數(shù)碼管上顯示1-16的平方。如按下第一個(gè)顯示1,第二個(gè)顯示4--- , 怎么改 怎么讓開(kāi)關(guān)機(jī)時(shí)數(shù)碼管不顯示數(shù)字,按下開(kāi)關(guān)后才顯示數(shù)字。# include <reg52.h>
# define uint unsigned int
# define uchar unsigned char
sbit P_HC595_SER = P2^7; //pin 14 SER data input
sbit P_HC595_RCLK = P2^5; //pin 12 RCLk store (latch) clock
sbit P_HC595_SRCLK = P2^6; //pin 11 SRCLK Shift data clock
uchar code t_display[]={
// 0 1 2 3 4 5 6 7 8 9 A B C D E F //
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71, 0x76, 0x79, 0x38, 0x3f, 0}; // ¶ÎÂë
uchar code wei[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
uchar temp;
uint num, num1;
void Send_595(uchar);
void delay(uint);
uint dage();
void display(uchar);
void we(uchar, uchar, uchar);
void main()
{
Send_595(0xff);
Send_595(0xff);
P_HC595_RCLK = 0;
P_HC595_RCLK = 1;
while(1)
{
num1 = dage();
we(num1/100, num1%100/10, num1%10);
}
}
void Send_595(uchar dat)
{
uint i;
for(i=0; i<8; i++)
{
if(dat & 0x80) P_HC595_SER = 1;
else P_HC595_SER = 0;
P_HC595_SRCLK = 0;
P_HC595_SRCLK = 1;
dat = dat << 1;
}
}
void delay(uint z)
{
uint x, y;
for(x=z; x>0; x--)
for(y=110; y>0; y--);
}
uint dage()
{
P3 = 0xfe;
temp = P3;
temp = temp&0xf0;
while( temp != 0xf0)
{
delay(5);
temp = P3;
temp = temp&0xf0;
while( temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xee : num = 1;
break;
case 0xde : num = 4;
break;
case 0xbe : num = 9;
break;
case 0x7e : num = 16;
break;
}
while( temp != 0xf0)
{
temp = P3;
temp = temp&0xf0;
}
}
}
P3 = 0xfd;
temp = P3;
temp = temp&0xf0;
while( temp != 0xf0)
{
delay(5);
temp = P3;
temp = temp&0xf0;
while( temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xed : num = 25;
break;
case 0xdd : num = 36;
break;
case 0xbd : num = 49;
break;
case 0x7d : num = 64;
break;
}
while( temp != 0xf0)
{
temp = P3;
temp = temp&0xf0;
}
}
}
P3 = 0xfb;
temp = P3;
temp = temp&0xf0;
while( temp != 0xf0)
{
delay(5);
temp = P3;
temp = temp&0xf0;
while( temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xeb : num = 81;
break;
case 0xdb : num = 100;
break;
case 0xbb : num = 121;
break;
case 0x7b : num = 144;
break;
}
while( temp != 0xf0)
{
temp = P3;
temp = temp&0xf0;
}
}
}
P3 = 0xf7;
temp = P3;
temp = temp&0xf0;
while( temp != 0xf0)
{
delay(5);
temp = P3;
temp = temp&0xf0;
while( temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xe7 : num = 169;
break;
case 0xd7 : num = 196;
break;
case 0xb7 : num = 225;
break;
case 0x77 : num = 256;
break;
}
while( temp != 0xf0)
{
temp = P3;
temp = temp&0xf0;
}
}
}
return num;
}
void we(uchar aa, uchar bb, uchar cc)
{
Send_595(0xfe);
Send_595(t_display[aa]);
P_HC595_RCLK = 0;
P_HC595_RCLK = 1;
Send_595(0xfd);
Send_595(t_display[bb]);
P_HC595_RCLK = 0;
P_HC595_RCLK = 1;
Send_595(0xfb);
Send_595(t_display[cc]);
P_HC595_RCLK = 0;
P_HC595_RCLK = 1;
}
-
-
JW-51開(kāi)發(fā)板.pdf
2017-10-31 22:25 上傳
點(diǎn)擊文件名下載附件
99.63 KB, 下載次數(shù): 4
作者: cjjcjj1 時(shí)間: 2017-11-1 06:10
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: 陌路狂花 時(shí)間: 2017-11-1 18:02
如果在后面加一個(gè)延遲函數(shù)后, 為什么還會(huì)出現(xiàn)000 ? 初學(xué)者,多多指教
作者: zl2168 時(shí)間: 2017-11-1 18:44
本帖最后由 zl2168 于 2017-11-1 18:47 編輯
你的問(wèn)題在下例中找到答案
實(shí)例5 4種不同方式鍵控信號(hào)燈
按鍵按能否鎖定可分為有鎖按鍵和無(wú)鎖按鍵。有鎖按鍵是按下即能鎖定閉合狀態(tài),只有再次按一下才能解除閉合狀態(tài),回歸斷開(kāi)狀態(tài)。無(wú)鎖按鍵不能鎖定閉合狀態(tài),除非按住鍵不予釋放,典型的例子就是電腦鍵盤上的按鍵。
單片機(jī)應(yīng)用系統(tǒng)中,根據(jù)按鍵閉合和釋放狀態(tài),有多種不同的鍵控方式,可編寫不同的程序予以實(shí)現(xiàn)。本例要求按以下4種不同方式分別鍵控VD0~ VD3。
① 無(wú)鎖按鍵:S0按下,VD0亮;S0釋放,VD0暗;
② 無(wú)鎖按鍵(前沿有效):S1按下,VD1亮;S1釋放,VD1延時(shí)2s后暗。
③ 無(wú)鎖按鍵(后沿有效):S2按下,VD2不亮;S2釋放,VD2亮,并延時(shí)2s后暗。
④ 模擬有鎖按鍵:S3按第一次,VD3亮,并繼續(xù)保持;按第二次,VD3才暗。
先
Proteus仿真一下,確認(rèn)有效。
實(shí)例5 不同方式鍵控?zé)?rar
(31.72 KB, 下載次數(shù): 6)
2017-11-1 18:47 上傳
點(diǎn)擊文件名下載附件
4種不同方式鍵控信號(hào)燈.jpg (161.52 KB, 下載次數(shù): 39)
下載附件
2017-11-1 18:47 上傳
以上摘自張志良編著《
80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。
作者: 陌路狂花 時(shí)間: 2017-11-1 21:11
怎么改, 能不能寫詳細(xì)點(diǎn)
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |