久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
書到用時方恨少啊,輕觸開關沒有反應
[打印本頁]
作者:
娃娃哈
時間:
2024-8-17 21:32
標題:
書到用時方恨少啊,輕觸開關沒有反應
網上搜的,自己做了個板,可程序寫入,11,12腳接的輕觸開關沒有反應,大佬們給看看,指教一下。
bg3tcfpm.png
(165.96 KB, 下載次數: 11)
下載附件
2024-8-17 21:26 上傳
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1 = P3^0 ;
sbit key0 = P3^1 ;
sbit key2 = P3^2 ;
sbit key3 = P3^3 ;
uchar s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //共陰數碼管0~9
uchar hour = 10 , min = 10 , sec = 0 ,day = 25 , month = 1 , year = 20 ;
uchar a = 0 ,b = 0 , c = 0 , d = 0 , e = 0 ,f = 0 ;
uchar b_1 = 0 ,c_1 = 0 ;
void time0_server_() interrupt 1
{
TH0 = 0x4c ;
TL0 = 0x00 ;
a++;
e = 2000 + year ;
if(a == 20)
{
a = 0 ;
sec = sec + 1 ;
}
if(sec == 60)
{
min = min + 1 ;
sec = 0 ;
}
if(min == 60)
{
hour = hour + 1 ;
min = 0 ;
}
if(hour == 24)
{
day = day + 1 ;
hour = 0 ;
}
switch(month) //根據月份來控制天數
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:if(day == 32)
{
month = month + 1 ;
day = 1 ;
}
break ;
case 4:
case 6:
case 9:
case 11:if(day == 31)
{
month =month + 1;
day = 1 ;
}
break ;
case 2:if(e%400==0||e%4==0&&e%100!=0)
{
if(day == 30)
{
month = month + 1 ;
day = 1 ;
}
}
else if(day == 29)
{
month = month + 1 ;
day = 1 ;
}
break ;
}
if(month == 13)
{
year = year + 1 ;
month = 1 ;
}
}
void init_t0()
{
TMOD = 0x01 ;
TH0 = 0x4C ;
TL0 = 0x00 ;
EA = 1 ;
ET0 = 1 ;
TR0 = 1 ;
}
void delay(uint n) //延時函數 大約1ms
{
uint i,j;
for(i = 0 ; i < n ; i ++)
{
for(j = 0 ; j < 120 ; j ++);
}
}
void display1() //顯示 “時、分、秒”
{
uchar t0 = 0 ,t1 = 0 , t2 = 0 , t3 = 0 , t4 = 0 , t5 = 0 ;
t0 = hour / 10 ;
t1 = hour % 10 ;
t2 = min / 10 ;
t3 = min % 10 ;
t4 = sec / 10 ;
t5 = sec % 10 ;
/************* 74HC138譯碼器 輔助控制數碼管 ******/
// P2 = 0x1c ;
// P0 = s[t0] ;
// delay(2) ;
// P2 = 0x18 ;
// P0 = s[t1] ;
// delay(2) ;
// P2 = 0x14 ;
// P0 = 0x40 ;
// delay(2) ;
// P2 = 0x10 ;
// P0 = s[t2] ;
// delay(2) ;
// P2 = 0x0c ;
// P0 = s[t3] ;
// delay(2) ;
// P2 = 0x08 ;
// P0 = 0x40 ;
// delay(2) ;
// P2 = 0x04 ;
// P0 = s[t4] ;
// delay(2) ;
// P2 = 0x00 ;
// P0 = s[t5] ;
delay(2) ;
/*********** P2直接控制數碼管 *********/
P2 = 0x7f ;
P0 = s[t0] ;
delay(1) ;
P2 = 0xbf ;
P0 = s[t1] ;
delay(1) ;
P2 = 0xdf ;
P0 = 0x40 ;
delay(1) ;
P2 = 0xef ;
P0 = s[t2] ;
delay(1) ;
P2 = 0xf7 ;
P0 = s[t3] ;
delay(1) ;
P2 = 0xfb ;
P0 = 0x40 ;
delay(1) ;
P2 = 0xfd ;
P0 = s[t4] ;
delay(1) ;
P2 = 0xfe ;
P0 = s[t5] ;
delay(1) ;
}
void display2() //顯示 “年、月、日”
{
uchar t0 = 0 ,t1 = 0 , t2 = 0 , t3 = 0 , t4 = 0 , t5 = 0 ;
t0 = year / 10 ;
t1 = year % 10 ;
t2 = month / 10 ;
t3 = month % 10 ;
t4 = day / 10 ;
t5 = day % 10 ;
/************* 74HC138譯碼器 輔助控制數碼管 ******/
// P2 = 0x1c ;
// P0 = s[t0] ;
// delay(2) ;
// P2 = 0x18 ;
// P0 = s[t1] ;
// delay(2) ;
// P2 = 0x14 ;
// P0 = 0x40 ;
// delay(2) ;
// P2 = 0x10 ;
// P0 = s[t2] ;
// delay(2) ;
// P2 = 0x0c ;
// P0 = s[t3] ;
// delay(5) ;
// P2 = 0x08 ;
// P0 = 0x40 ;
// delay(2) ;
// P2 = 0x04 ;
// P0 = s[t4] ;
// delay(2) ;
// P2 = 0x00 ;
// P0 = s[t5] ;
// delay(2) ;
/*********** P2直接控制數碼管 *********/
P2 = 0x7f ;
P0 = s[t0] ;
delay(1) ;
P2 = 0xbf ;
P0 = s[t1] ;
delay(1) ;
P2 = 0xdf ;
P0 = 0x40 ;
delay(1) ;
P2 = 0xef ;
P0 = s[t2] ;
delay(1) ;
P2 = 0xf7 ;
P0 = s[t3] ;
delay(1) ;
P2 = 0xfb ;
P0 = 0x40 ;
delay(1) ;
P2 = 0xfd ;
P0 = s[t4] ;
delay(1) ;
P2 = 0xfe ;
P0 = s[t5] ;
delay(1) ;
}
void KEY0() //控制按鈕2的位移
{
if(key0 == 0 && c == 0)
{
c = 1 ;
}
if(key0 == 1 && c == 1)
{
c = 0 ;
c_1 = c_1 + 1 ;
}
if(c_1 == 4)
{
c_1 = 0 ;
}
}
void KEY1() //控制 "秒"、“分”、“時”、“天”、“月”、“年” 的加1
{
switch(c_1)
{
case 1: if(b_1 == 0)
{
if(key1 == 0 && d == 0)
{
d = 1 ;
}
if(key1 == 1 && d == 1)
{
d = 0 ;
sec = sec + 1 ;
}
}
else if(b_1 == 1)
{
if(key1 == 0 && d == 0)
{
d = 1 ;
}
if(key1 == 1 && d == 1)
{
d = 0 ;
day = day + 1 ;
}
}
break ;
case 2: if(b_1 == 0)
{
if(key1 == 0 && d == 0)
{
d = 1 ;
}
if(key1 == 1 && d == 1)
{
d = 0 ;
min = min + 1 ;
}
}
else if(b_1 == 1)
{
if(key1 == 0 && d == 0)
{
d = 1 ;
}
if(key1 == 1 && d == 1)
{
d = 0 ;
month = month + 1 ;
}
}
break ;
case 3: if(b_1 == 0)
{
if(key1 == 0 && d == 0)
{
d = 1 ;
}
if(key1 == 1 && d == 1)
{
d = 0 ;
hour = hour + 1 ;
}
}
else if(b_1 == 1)
{
if(key1 == 0 && d == 0)
{
d = 1 ;
}
if(key1 == 1 && d == 1)
{
d = 0 ;
year = year + 1 ;
}
}
break ;
}
}
void KEY2() //控制 "秒"、“分”、“時”、“天”、“月”、“年” 的減1
{
switch(c_1)
{
case 1: if(b_1 == 0)
{
if(key2 == 0 && f == 0)
{
f = 1 ;
}
if(key2 == 1 && f == 1)
{
f = 0 ;
sec = sec - 1 ;
if(sec == 255)
{
sec = 59 ;
}
}
}
else if(b_1 == 1)
{
if(key2 == 0 && f == 0)
{
f = 1 ;
}
if(key2 == 1 && f == 1)
{
f = 0 ;
day = day - 1 ;
if(day <= 1)
{
day = 1 ;
}
}
}
break ;
case 2: if(b_1 == 0)
{
if(key2 == 0 && f == 0)
{
f = 1 ;
}
if(key2 == 1 && f == 1)
{
f = 0 ;
min = min - 1 ;
if(min == 255)
{
min = 0 ;
}
}
}
else if(b_1 == 1)
{
if(key2 == 0 && f == 0)
{
f = 1 ;
}
if(key2 == 1 && f == 1)
{
f = 0 ;
month = month - 1 ;
if(month <= 1)
{
month = 1 ;
}
}
}
break ;
case 3: if(b_1 == 0)
{
if(key2 == 0 && f == 0)
{
f = 1 ;
}
if(key2 == 1 && f == 1)
{
f = 0 ;
hour = hour - 1 ;
if(hour == 255)
{
hour = 0 ;
}
}
}
else if(b_1 == 1)
{
if(key2 == 0 && f == 0)
{
f = 1 ;
}
if(key2 == 1 && f == 1)
{
f = 0 ;
year = year - 1 ;
if(year == 255)
{
year = 0 ;
}
}
}
break ;
}
}
void KEY3() //控制“時、分、秒”與“年、月、日”的轉換
{
if(key3 == 0 && b == 0)
{
b = 1 ;
}
if(key3 == 1 && b == 1)
{
b = 0 ;
b_1 = b_1 + 1;
}
if(b_1 == 2)
{
b_1 = 0 ;
}
switch(b_1)
{
case 0: display1() ;
break ;
case 1: display2() ;
break ;
}
}
void main()
{
init_t0();
while(1)
{
KEY0();
KEY1();
KEY2();
KEY3();
}
}
作者:
weianfu
時間:
2024-8-18 16:00
在PROTEUS 仿真中可以使用, 先按K3選擇 ( “秒”,“分”,“小時” 輪流切換),K2增加,K4減少。
作者:
a185980800
時間:
2024-8-18 16:07
89c52應該不能設置內部上拉你需要自己加上拉電阻。
作者:
chxelc
時間:
2024-8-19 11:20
定時器中斷里面代碼耗費太多時間了,可能還沒執行到按鍵掃描又進入中斷了。定時器里只做最基礎的運算如狀態字累加,其它放在while(1)循環里面執行。
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久国产99
|
日韩和的一区二区
|
久久久午夜
|
欧美二三区
|
在线播放国产精品
|
婷婷色av
|
男女裸体无遮挡做爰
|
亚洲一区亚洲二区
|
天天操天天操天天操
|
精品
|
日本一区二区不卡
|
国产999视频
|
91青青草
|
国产精品久久久一区二区三区
|
二区三区视频
|
四虎影视在线播放
|
一区在线播放
|
久久一级视频
|
谁有毛片网址
|
情侣av
|
国产午夜一区二区三区
|
国产乱码精品一区二区三
|
久久久久久久综合
|
亚洲视频在线观看免费
|
av网站在线播放
|
国产精品国产成人国产三级
|
国产一区在线视频
|
97视频在线观看免费
|
免费黄网站
|
羞羞在线
|
欧美久久精品
|
日韩a视频
|
国产精品一区二区三区四区五区
|
天天cao
|
欧美一区二区在线播放
|
色爱综合网
|
18成人免费观看网站
|
免费91网站
|
日韩a视频
|
成人在线小视频
|
国产日韩综合
|