熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-12-14 19:58
正文摘要:#include<reg52.h> #define uint unsigned int #define uchar unsigned char Uint i,miao,fen,fen1,fen2,fen3,fen4,shi,shi1,shi2,shi3,shi4,flag1,flag2,flag3,flag4,flag5,aa,K1num,K2num,K3num,K4num,N; ... |
#include<reg52.h> #define uint unsigned int #define uchar unsigned char uint i,miao,fen,fen1,fen2,fen3,fen4,shi,shi1,shi2,shi3,shi4,flag1,flag2,flag3,flag4,flag5,aa,K1num,K2num,K3num,K4num,N; uchar code table[]=" H.I.T CHINA "; uchar code table2[]=" TIME "; uchar code Alarm_0[]=" GBDS "; uchar code Alarm_1[]=" SKDS "; uchar code Alarm_2[]=" XKDS "; uchar code Alarm_3[]=" DKDS "; uchar code Alarm_00[]=" GB "; uchar code Alarm_11[]=" SK "; uchar code Alarm_22[]=" XK "; uchar code Alarm_33[]=" DK "; uchar code deng[]=" LIGHTING "; sbit K1=P1^0; //四個(gè)按鍵 sbit K2=P1^1; sbit K3=P1^2; sbit K4=P1^3; sbit rs=P2^0; sbit rw=P2^1; //燈光控制端 sbit lcden=P2^2; sbit LED2=P2^3; //廣播控制端 sbit led=P2^4; ///發(fā)光二極管控制端 sbit beep=P2^5; //蜂鳴器控制端 void delay(uint z) //延時(shí)函數(shù) {uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--) ; } void write_com(uchar com)//液晶寫命令函數(shù) {rs=0; rw=0; lcden=0; P3=com; delay(5); lcden=1; delay(5); lcden=0; } void write_date(uchar date)//液晶寫數(shù)據(jù)函數(shù) { rs=1; rw=0; lcden=0; P3=date; delay(5); lcden=1; delay(5); lcden=0; } void write_sfm(uchar add,uchar date) //液晶寫時(shí)分秒函數(shù) {uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);} void init() //初始化函數(shù) {uint num; //寫液晶的循環(huán)控制變量 aa=0; //中斷次數(shù)標(biāo)志 K1num=0; //K1按鍵被按下的標(biāo)記變量 K2num=0; //K2按鍵被按下的標(biāo)記變量 K3num=0; //K3按鍵被按下的標(biāo)記變量 K4num=0; //K4按鍵被按下的標(biāo)記變量 flag1=1; //控制lcd屏刷新的變量 flag2=1;//控制鬧鐘響鬧開啟關(guān)閉的標(biāo)記 flag3=1;//控制鬧鐘響起時(shí),按下K4停止鬧鐘響鬧的標(biāo)記 flag4=1;//進(jìn)入鬧鐘設(shè)置時(shí)的標(biāo)記變量 flag5=1;//進(jìn)入時(shí)間設(shè)置時(shí)的標(biāo)記變量 led=1; //發(fā)光二極管初始化 LED2=0; //廣播初始化 rw=0; N=100; //系統(tǒng)啟動(dòng)時(shí),鬧鐘時(shí)間到發(fā)出的聲音為連續(xù)三次發(fā)出“嘩”的一聲 miao=0; //系統(tǒng)初始化時(shí)間 fen=0; shi=7; fen1=6; //初始化鬧鐘的時(shí)間 shi1=7; fen2=8; //初始化鬧鐘的時(shí)間 shi2=7; fen3=10; //初始化鬧鐘的時(shí)間 shi3=7; fen4=12; //初始化鬧鐘的時(shí)間 shi4=7; beep=0; //蜂鳴器初始化 lcden=0; //液晶使能端初始化 write_com(0x38); //1602液晶初始化,設(shè)置16*2顯示。5*7點(diǎn)陣,8位數(shù)據(jù)接口 write_com(0x0c);//設(shè)置開顯示,不顯示光 write_com(0x06); //寫一個(gè)字符后地址指針自動(dòng)加1 write_com(0x01);//顯示清0數(shù)據(jù)指針清0 write_com(0x80); //將數(shù)據(jù)指針定位到第一行,第一個(gè)字處 for(num=0;num<15;num++) //顯示鬧鐘標(biāo)示: H.I.T CHINA { write_date(table[num]);delay(10); } write_com(0x80+0x40+11);//寫出時(shí)間顯示部分的兩個(gè)冒號(hào) write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' '); write_sfm(12,fen); //送去液晶顯示秒分時(shí) write_sfm(9,shi); TMOD=0x01; //設(shè)置定時(shí)器0為工作方式1 TH0=(65536-50000)/256;//定時(shí)器裝初值 TL0=(65536-50000)%256; EA=1; //開總中斷 ET0=1; //開定時(shí)器0中斷 TR0=1; } void xianshi() //系統(tǒng)時(shí)間顯示 {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(table2[i]); write_com(0x80+0x40+11);//寫出時(shí)間顯示部分的兩個(gè)冒號(hào) write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' '); write_sfm(12,fen); //送去液晶顯示秒分時(shí) write_sfm(9,shi); } void time() //更改系統(tǒng)時(shí)間 {if( (K1num==0)&&(flag3==1) ) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(table2[i]); } if(K1==0)//判斷K1按下,則開始修改時(shí)間 {delay(5); flag5=1; if(K1==0&&K1num==0) {K1num=1; while(!K1) //判斷是否松開按鍵,后同 if(K1num==1) { TR0=0; //關(guān)閉計(jì)數(shù)器0 write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13);} } } if(K1==0&&K1num==1) //判斷K1按下,修改系統(tǒng)時(shí)間的小時(shí) { delay(5); if(K1==0) {write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K1num=1; //置K1num=1 while(!K1); shi++; //則調(diào)整時(shí)加1 if(shi==24) shi=0; //若滿24后將清零 write_sfm(9,shi); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+10);} } if(K2==0&&K1num==1) //判K2按下,修改系統(tǒng)時(shí)間的分鐘 {delay(5); if(K2==0) {write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K1num=1; while(!K2); fen++; //則調(diào)整分加1 if(fen==60) fen=0;//若滿60后將清零 write_sfm(12,fen); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+13); } } if(K1num==1) //當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 {delay(5); if(K3==0) { flag5=0; K1num=0; while(!K3); write_com(0x0c); //取消光標(biāo)閃 TR0=1; //啟動(dòng)定時(shí)器使時(shí)鐘開始走 flag1=1;//flag=1.則修改系統(tǒng)時(shí)間時(shí)液晶顯示的系統(tǒng)時(shí)間值,flag=0,則為修改鬧鐘時(shí)間時(shí),屏幕顯示的是修改鬧鐘時(shí)間的值 flag1=1; write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' '); } } }} void guangbo() //廣播定時(shí) {if(K3num==0) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_00[i]); } if(K3==0&&K3num==0) //判斷K3首次被按下,則設(shè)置鬧鐘 {delay(5); //延時(shí)消抖,后同 if(K3==0) { flag1=0; write_com(0x80+0x40+13); //第一次按下光標(biāo)定位到分鐘位置 while(!K3); K3num=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_0[i]); write_sfm(12,fen1); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi1); write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13); //顯示位置回到調(diào)節(jié)處 } } if(K2==0&&K3num==0) //K2被按下時(shí)顯示定時(shí)時(shí)間 { delay(5); if(K2==0) { write_sfm(12,fen1); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi1); while(!K2); write_sfm(12,fen); //K2松開顯示當(dāng)前時(shí)間 write_sfm(9,shi);} } if(K1==0&&K3num==1) //修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí) {delay(5); if(K1==0) { write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K3num=1; while(!K1); shi1++; //則調(diào)整定時(shí)的時(shí)加1 if(shi2==24) //若滿24后將清零 shi1=0; write_sfm(9,shi1); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+10); //顯示位置重新回到調(diào)節(jié)處 } } if(K2==0&&K3num==1)//按鍵2按下,修改鬧鐘時(shí)間的分鐘 { delay(5); if(K2==0) { write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K3num=1; while(!K2); fen1++; //則調(diào)整分加1 if(fen1==60) //若滿60后將清零 fen1=0; write_sfm(12,fen1);//每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+13); //顯示位置重新回到調(diào)節(jié)處 } } if(K3num==1) //當(dāng)設(shè)置鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 { delay(5); if(K3==0) { K1num=0; K3num=0; while(!K3); write_com(0x0c); //光標(biāo)停止閃爍 flag1=1; //flag=1.則修改系統(tǒng)時(shí)間時(shí)液晶顯示的系統(tǒng)時(shí)間值,flag=0,則為修改鬧鐘時(shí)間時(shí),屏幕顯示的是修改鬧鐘時(shí)間的值 write_sfm(12,fen);//送去液晶顯示分,時(shí) write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}} } } void shangke() //上課定時(shí) {if( K3num==0) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_11[i]); } if(K3==0&&K3num==0) //判斷K3首次被按下,則設(shè)置鬧鐘 { delay(5); //延時(shí)消抖,后同 if(K3==0) { flag1=0; write_com(0x80+0x40+13); //第一次按下光標(biāo)定位到分鐘位置 while(!K3); K3num=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_1[i]); write_sfm(12,fen2); //送去液晶顯示定 write_sfm(9,shi2); write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13); //顯示位置回到調(diào)節(jié)處 } } if(K2==0&&K3num==0) //K2被按下時(shí)顯示定時(shí)時(shí)間 { delay(5); if(K2==0) { write_sfm(12,fen2); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi2); while(!K2); write_sfm(12,fen); //K2松開顯示當(dāng)前時(shí)間 write_sfm(9,shi); } } if(K1==0&&K3num==1) //修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí) { delay(5); if(K1==0) { write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K3num=1; while(!K1); shi2++; //則調(diào)整定時(shí)的時(shí)加1 if(shi2==24) //若滿24后將清零 shi1=0; write_sfm(9,shi2); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+10); //顯示位置重新回到調(diào)節(jié)處 } } if(K2==0&&K3num==1) //按鍵2按下,修改鬧鐘時(shí)間的分鐘 { delay(5); if(K2==0) { write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K3num=1; while(!K2); fen2++; //則調(diào)整分加1 if(fen1==60) //若滿60后將清零 fen1=0; write_sfm(12,fen2); //每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+13); //顯示位置重新回到調(diào)節(jié)處 } } if(K3num==1) //當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 { delay(5); if(K3==0) { K1num=0; K3num=0; while(!K3); write_com(0x0c); //光標(biāo)停止閃爍 flag1=1; //flag=1.則修改系統(tǒng)時(shí)間時(shí)液晶顯示的系統(tǒng)時(shí)間值,flag=0,則為修改鬧鐘時(shí)間時(shí),屏幕顯示的是修改鬧鐘時(shí)間的值 write_sfm(12,fen);//送去液晶顯示分,時(shí) write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}}} } void xiake() //下課定時(shí) { if( K3num==0) { write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_22[i]); } if(K3==0&&K3num==0) //判斷K3首次被按下,則設(shè)置鬧鐘 {delay(5); //延時(shí)消抖,后同 if(K3==0) { flag1=0; write_com(0x80+0x40+13); //第一次按下光標(biāo)定位到分鐘位置 while(!K3); K3num=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_2[i]); write_sfm(12,fen3); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi3); write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13); //顯示位置回到調(diào)節(jié)處 }} if(K2==0&&K3num==0) //K2被按下時(shí)顯示定時(shí)時(shí)間 {delay(5); if(K2==0) { write_sfm(12,fen3); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi3); while(!K2); write_sfm(12,fen); //K2松開顯示當(dāng)前時(shí)間 write_sfm(9,shi);} } if(K1==0&&K3num==1) //修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí) { delay(5); if(K1==0) { write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K3num=1; while(!K1); shi3++; //則調(diào)整定時(shí)的時(shí)加1 if(shi3==24) //若滿24后將清零 shi1=0; write_sfm(9,shi3); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+10); //顯示位置重新回到調(diào)節(jié)處 } } if(K2==0&&K3num==1) //卸螷2按下,修改鬧鐘時(shí)間的分鐘 { delay(5); if(K2==0) { write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K3num=1; while(!K2); fen3++; //則調(diào)整分加1 if(fen1==60) //若滿60后將清零 fen1=0; write_sfm(12,fen3);//每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+13); } } if(K3num==1) //當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 { delay(5); if(K3==0) { K1num=0; K3num=0; while(!K3); write_com(0x0c); //光標(biāo)停止閃爍 flag1=1; write_sfm(12,fen);//送去液晶顯示分,時(shí) write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}}} } void dengkong() //燈光控制 {if(K3num==0) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_33[i]); } if(K3==0&&K3num==0) //判斷K3首次被按下,則設(shè)置鬧鐘 {delay(5); //延時(shí)消抖,后同 if(K3==0) {flag1=0; write_com(0x80+0x40+13); //第一次按下光標(biāo)定位到分鐘位置 while(!K3); K3num=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_3[i]); write_sfm(12,fen4); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi4); write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13); //顯示位置回到調(diào)節(jié)處 } } if(K2==0&&K3num==0) //K2被按下時(shí)顯示定時(shí)時(shí)間 {delay(5); if(K2==0) {write_sfm(12,fen4); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi4); while(!K2); write_sfm(12,fen); //K2松開顯示當(dāng)前時(shí)間 write_sfm(9,shi); } } if(K1==0&&K3num==1) //修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí) {delay(5); if(K1==0) {write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K3num=1; while(!K1); shi4++; //則調(diào)整定時(shí)的時(shí)加1 if(shi4==24) //若滿24后將清零 shi1=0; write_sfm(9,shi4); //每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+10); //顯示位置重新回到調(diào)節(jié)處 } } if(K2==0&&K3num==1) //按鍵2按下,修改鬧鐘時(shí)間的分鐘 { delay(5); if(K2==0) { write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K3num=1; while(!K2); fen4++; //則調(diào)整分加1 if(fen1==60) //若滿60后將清零 fen1=0; write_sfm(12,fen4); //每調(diào)節(jié)一次送液 write_com(0x80+0x40+13); //顯示位置重新回到調(diào)節(jié)處 } } if(K3num==1) //當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 { delay(5); if(K3==0) {K1num=0; K3num=0; while(!K3); write_com(0x0c); //光標(biāo)停止閃爍 flag1=1;//flag=1. write_sfm(12,fen);//送去液晶顯示分,時(shí) write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}} }} void clock()//任意鬧鐘時(shí)間到鬧鐘響 {if((((fen==fen1)&&(shi==shi1))||((fen==fen2)&&(shi==shi2))||((fen==fen3)&&(shi==shi3))||((fen==fen4)&&(shi==shi4)))&&(flag2==1)) //鬧鐘的響鬧控制 {beep=1; //此時(shí)鬧鐘響起,連續(xù)三次發(fā)出嘩的一聲 flag5=0; flag3=0; //置flag3=0,表示此時(shí)鬧鐘響起,按下K4鍵執(zhí)行停止鬧鐘響鬧語句 delay(100); //這些語句是為了使鬧鐘響起時(shí),發(fā)出連續(xù)三次嘩的聲音 beep=0; delay(100); beep=1; delay(100); beep=0; delay(100); beep=1; delay(100); beep=0; delay(300); } else {beep=0;} if(((fen!=fen1)&&(fen!=fen2)&&(fen!=fen3)&&(fen!=fen4))&&(flag4==0)&&(flag5==0) )//顯示時(shí)間 { xianshi(); } if((fen==fen1)&&(shi==shi1)&&(flag2==1)) {LED2=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_00[i]); write_sfm(12,fen1); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi1); } else {LED2=0;} if((((fen==fen1)&&(shi==shi1)&&(flag2==0))||((fen-1==fen1)&&(shi==shi1)))&&(flag4==0) ) { xianshi();} if((fen==fen2)&&(shi==shi2)&&(flag2==1)) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_11[i]); write_sfm(12,fen2); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi2); } if((((fen==fen2)&&(shi==shi2)&&(flag2==0))||((fen-1==fen2)&&(shi==shi2)))&&(flag4==0) ) { xianshi(); } if((fen==fen3)&&(shi==shi3)&&(flag2==1)) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_22[i]); write_sfm(12,fen3); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi3); } if((((fen==fen3)&&(shi==shi3)&&(flag2==0))||((fen-1==fen3)&&(shi==shi3)))&&(flag4==0)) {xianshi(); } if((fen==fen4)&&(shi==shi4)&&(flag2==1)) {write_com(0x80+0x40); for(i=0;i<15;i++) write_date(deng[i]); } if((((fen==fen4)&&(shi==shi4)&&(flag2==0))||((fen-1==fen4)&&(shi==shi4)))&&(flag4==0) ) { xianshi();} } void main() //主函數(shù) {init();//初始化子程序 while(1) { if((K4==0)&&(flag3==1)) { delay(200); K4num++; delay(100); if(K4num==5) K4num=0;} if(K4==0&&flag3==0) //當(dāng)鬧鐘響起時(shí),按下K4停止響鬧,當(dāng)鬧鐘響起時(shí)候flag3置為0 {delay(5); if(K4==0) {flag2=0; flag3=1;} delay(300);} if(K4num==0) {time(); flag4=0; } if(K4num==1) {guangbo(); flag4=1;} if(K4num==2) { shangke(); flag4=1; } if(K4num==3) { xiake(); flag4=1; } if(K4num==4) { dengkong(); flag4=1; } clock();}} void time0() interrupt 1 //定時(shí)器0中斷服務(wù)程序 {TH0=(65536-50000)/256; //定時(shí)器重新裝入數(shù)值 TL0=(65536-50000)%256; aa++; //中斷次數(shù)累加 if(aa==20) //20次50毫秒為1秒 { aa=0; miao++; led=~led; if(miao==60) {miao=0; fen++; flag2=1;//鬧鐘響起時(shí)按下K4鍵鬧鐘關(guān)閉,此處應(yīng)重置該變量,使下一次鬧鐘時(shí)間來到時(shí),鬧鐘仍然可以響起 if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } if(flag1==1) {write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}} if(flag1==1) {write_sfm(12,fen); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');} //分鐘發(fā)生變化則立即吸入屏幕顯示 } } } |
注意 :uint 與Uint “U”的大小寫 |
glinfei 發(fā)表于 2020-12-15 11:31 解決了謝謝 |
#define uint unsigned char #define uchar unsigned int Uint i,miao,fen 1、第三行 Uint 你大寫了U; 2、第二行 ,把uchar 定義成了 unsigned int,應(yīng)該第一和第二行寫反了,導(dǎo)致第五行的報(bào)錯(cuò)。 |
#include<reg52.h> #define uint unsigned char #define uchar unsigned int Uint i,miao,fen,fen1,fen2,fen3,fen4,shi,shi1,shi2,shi3,shi4,flag1,flag2,flag3,flag4,flag5,aa,K1num,K2num,K3num,K4num,N; uchar code table[]=" H.I.T CHINA "; uchar code table2[]=" TIME "; uchar code Alarm_0[]=" GBDS "; uchar code Alarm_1[]=" SKDS "; uchar code Alarm_2[]=" XKDS "; uchar code Alarm_3[]=" DKDS "; uchar code Alarm_00[]=" GB "; uchar code Alarm_11[]=" SK "; uchar code Alarm_22[]=" XK "; uchar code Alarm_33[]=" DK "; uchar code deng[]=" LIGHTING "; sbit K1=P1^0; //四個(gè)按鍵 sbit K2=P1^1; sbit K3=P1^2; sbit K4=P1^3; sbit rs=P2^0; sbit rw=P2^1; //燈光控制端 sbit lcden=P2^2; sbit LED2=P2^3; //廣播控制端 sbit led=P2^4; ///發(fā)光二極管控制端 sbit beep=P2^5; //蜂鳴器控制端 void delay(uint z) //延時(shí)函數(shù) {uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--) ; } void write_com(uchar com)//液晶寫命令函數(shù) {rs=0; rw=0; lcden=0; P3=com; delay(5); lcden=1; delay(5); lcden=0; } void write_date(uchar date)//液晶寫數(shù)據(jù)函數(shù) { rs=1; rw=0; lcden=0; P3=date; delay(5); lcden=1; delay(5); lcden=0; } void write_sfm(uchar add,uchar date) //液晶寫時(shí)分秒函數(shù) {uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);} void init() //初始化函數(shù) {uint num; //寫液晶的循環(huán)控制變量 aa=0; //中斷次數(shù)標(biāo)志 K1num=0; //K1按鍵被按下的標(biāo)記變量 K2num=0; //K2按鍵被按下的標(biāo)記變量 K3num=0; //K3按鍵被按下的標(biāo)記變量 K4num=0; //K4按鍵被按下的標(biāo)記變量 flag1=1; //控制lcd屏刷新的變量 flag2=1;//控制鬧鐘響鬧開啟關(guān)閉的標(biāo)記 flag3=1;//控制鬧鐘響起時(shí),按下K4停止鬧鐘響鬧的標(biāo)記 flag4=1;//進(jìn)入鬧鐘設(shè)置時(shí)的標(biāo)記變量 flag5=1;//進(jìn)入時(shí)間設(shè)置時(shí)的標(biāo)記變量 led=1; //發(fā)光二極管初始化 LED2=0; //廣播初始化 rw=0; N=100; //系統(tǒng)啟動(dòng)時(shí),鬧鐘時(shí)間到發(fā)出的聲音為連續(xù)三次發(fā)出“嘩”的一聲 miao=0; //系統(tǒng)初始化時(shí)間 fen=0; shi=7; fen1=6; //初始化鬧鐘的時(shí)間 shi1=7; fen2=8; //初始化鬧鐘的時(shí)間 shi2=7; fen3=10; //初始化鬧鐘的時(shí)間 shi3=7; fen4=12; //初始化鬧鐘的時(shí)間 shi4=7; beep=0; //蜂鳴器初始化 lcden=0; //液晶使能端初始化 write_com(0x38); //1602液晶初始化,設(shè)置16*2顯示。5*7點(diǎn)陣,8位數(shù)據(jù)接口 write_com(0x0c);//設(shè)置開顯示,不顯示光 write_com(0x06); //寫一個(gè)字符后地址指針自動(dòng)加1 write_com(0x01);//顯示清0數(shù)據(jù)指針清0 write_com(0x80); //將數(shù)據(jù)指針定位到第一行,第一個(gè)字處 for(num=0;num<15;num++) //顯示鬧鐘標(biāo)示: H.I.T CHINA { write_date(table[num]);delay(10); } write_com(0x80+0x40+11);//寫出時(shí)間顯示部分的兩個(gè)冒號(hào) write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' '); write_sfm(12,fen); //送去液晶顯示秒分時(shí) write_sfm(9,shi); TMOD=0x01; //設(shè)置定時(shí)器0為工作方式1 TH0=(65536-50000)/256;//定時(shí)器裝初值 TL0=(65536-50000)%256; EA=1; //開總中斷 ET0=1; //開定時(shí)器0中斷 TR0=1; } void xianshi() //系統(tǒng)時(shí)間顯示 {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(table2[i]); write_com(0x80+0x40+11);//寫出時(shí)間顯示部分的兩個(gè)冒號(hào) write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' '); write_sfm(12,fen); //送去液晶顯示秒分時(shí) write_sfm(9,shi); } void time() //更改系統(tǒng)時(shí)間 {if( (K1num==0)&&(flag3==1) ) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(table2[i]); } if(K1==0)//判斷K1按下,則開始修改時(shí)間 {delay(5); flag5=1; if(K1==0&&K1num==0) {K1num=1; while(!K1) //判斷是否松開按鍵,后同 if(K1num==1) { TR0=0; //關(guān)閉計(jì)數(shù)器0 write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13);} } } if(K1==0&&K1num==1) //判斷K1按下,修改系統(tǒng)時(shí)間的小時(shí) { delay(5); if(K1==0) {write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K1num=1; //置K1num=1 while(!K1); shi++; //則調(diào)整時(shí)加1 if(shi==24) shi=0; //若滿24后將清零 write_sfm(9,shi); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+10);} } if(K2==0&&K1num==1) //判K2按下,修改系統(tǒng)時(shí)間的分鐘 {delay(5); if(K2==0) {write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K1num=1; while(!K2); fen++; //則調(diào)整分加1 if(fen==60) fen=0;//若滿60后將清零 write_sfm(12,fen); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+13); } } if(K1num==1) //當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 {delay(5); if(K3==0) { flag5=0; K1num=0; while(!K3); write_com(0x0c); //取消光標(biāo)閃 TR0=1; //啟動(dòng)定時(shí)器使時(shí)鐘開始走 flag1=1;//flag=1.則修改系統(tǒng)時(shí)間時(shí)液晶顯示的系統(tǒng)時(shí)間值,flag=0,則為修改鬧鐘時(shí)間時(shí),屏幕顯示的是修改鬧鐘時(shí)間的值 flag1=1; write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' '); } } }} void guangbo() //廣播定時(shí) {if(K3num==0) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_00[i]); } if(K3==0&&K3num==0) //判斷K3首次被按下,則設(shè)置鬧鐘 {delay(5); //延時(shí)消抖,后同 if(K3==0) { flag1=0; write_com(0x80+0x40+13); //第一次按下光標(biāo)定位到分鐘位置 while(!K3); K3num=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_0[i]); write_sfm(12,fen1); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi1); write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13); //顯示位置回到調(diào)節(jié)處 } } if(K2==0&&K3num==0) //K2被按下時(shí)顯示定時(shí)時(shí)間 { delay(5); if(K2==0) { write_sfm(12,fen1); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi1); while(!K2); write_sfm(12,fen); //K2松開顯示當(dāng)前時(shí)間 write_sfm(9,shi);} } if(K1==0&&K3num==1) //修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí) {delay(5); if(K1==0) { write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K3num=1; while(!K1); shi1++; //則調(diào)整定時(shí)的時(shí)加1 if(shi2==24) //若滿24后將清零 shi1=0; write_sfm(9,shi1); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+10); //顯示位置重新回到調(diào)節(jié)處 } } if(K2==0&&K3num==1)//按鍵2按下,修改鬧鐘時(shí)間的分鐘 { delay(5); if(K2==0) { write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K3num=1; while(!K2); fen1++; //則調(diào)整分加1 if(fen1==60) //若滿60后將清零 fen1=0; write_sfm(12,fen1);//每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+13); //顯示位置重新回到調(diào)節(jié)處 } } if(K3num==1) //當(dāng)設(shè)置鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 { delay(5); if(K3==0) { K1num=0; K3num=0; while(!K3); write_com(0x0c); //光標(biāo)停止閃爍 flag1=1; //flag=1.則修改系統(tǒng)時(shí)間時(shí)液晶顯示的系統(tǒng)時(shí)間值,flag=0,則為修改鬧鐘時(shí)間時(shí),屏幕顯示的是修改鬧鐘時(shí)間的值 write_sfm(12,fen);//送去液晶顯示分,時(shí) write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}} } } void shangke() //上課定時(shí) {if( K3num==0) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_11[i]); } if(K3==0&&K3num==0) //判斷K3首次被按下,則設(shè)置鬧鐘 { delay(5); //延時(shí)消抖,后同 if(K3==0) { flag1=0; write_com(0x80+0x40+13); //第一次按下光標(biāo)定位到分鐘位置 while(!K3); K3num=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_1[i]); write_sfm(12,fen2); //送去液晶顯示定 write_sfm(9,shi2); write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13); //顯示位置回到調(diào)節(jié)處 } } if(K2==0&&K3num==0) //K2被按下時(shí)顯示定時(shí)時(shí)間 { delay(5); if(K2==0) { write_sfm(12,fen2); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi2); while(!K2); write_sfm(12,fen); //K2松開顯示當(dāng)前時(shí)間 write_sfm(9,shi); } } if(K1==0&&K3num==1) //修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí) { delay(5); if(K1==0) { write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K3num=1; while(!K1); shi2++; //則調(diào)整定時(shí)的時(shí)加1 if(shi2==24) //若滿24后將清零 shi1=0; write_sfm(9,shi2); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+10); //顯示位置重新回到調(diào)節(jié)處 } } if(K2==0&&K3num==1) //按鍵2按下,修改鬧鐘時(shí)間的分鐘 { delay(5); if(K2==0) { write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K3num=1; while(!K2); fen2++; //則調(diào)整分加1 if(fen1==60) //若滿60后將清零 fen1=0; write_sfm(12,fen2); //每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+13); //顯示位置重新回到調(diào)節(jié)處 } } if(K3num==1) //當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 { delay(5); if(K3==0) { K1num=0; K3num=0; while(!K3); write_com(0x0c); //光標(biāo)停止閃爍 flag1=1; //flag=1.則修改系統(tǒng)時(shí)間時(shí)液晶顯示的系統(tǒng)時(shí)間值,flag=0,則為修改鬧鐘時(shí)間時(shí),屏幕顯示的是修改鬧鐘時(shí)間的值 write_sfm(12,fen);//送去液晶顯示分,時(shí) write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}}} } void xiake() //下課定時(shí) { if( K3num==0) { write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_22[i]); } if(K3==0&&K3num==0) //判斷K3首次被按下,則設(shè)置鬧鐘 {delay(5); //延時(shí)消抖,后同 if(K3==0) { flag1=0; write_com(0x80+0x40+13); //第一次按下光標(biāo)定位到分鐘位置 while(!K3); K3num=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_2[i]); write_sfm(12,fen3); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi3); write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13); //顯示位置回到調(diào)節(jié)處 }} if(K2==0&&K3num==0) //K2被按下時(shí)顯示定時(shí)時(shí)間 {delay(5); if(K2==0) { write_sfm(12,fen3); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi3); while(!K2); write_sfm(12,fen); //K2松開顯示當(dāng)前時(shí)間 write_sfm(9,shi);} } if(K1==0&&K3num==1) //修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí) { delay(5); if(K1==0) { write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K3num=1; while(!K1); shi3++; //則調(diào)整定時(shí)的時(shí)加1 if(shi3==24) //若滿24后將清零 shi1=0; write_sfm(9,shi3); //每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+10); //顯示位置重新回到調(diào)節(jié)處 } } if(K2==0&&K3num==1) //卸螷2按下,修改鬧鐘時(shí)間的分鐘 { delay(5); if(K2==0) { write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K3num=1; while(!K2); fen3++; //則調(diào)整分加1 if(fen1==60) //若滿60后將清零 fen1=0; write_sfm(12,fen3);//每調(diào)節(jié)一次送液晶顯示 write_com(0x80+0x40+13); } } if(K3num==1) //當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 { delay(5); if(K3==0) { K1num=0; K3num=0; while(!K3); write_com(0x0c); //光標(biāo)停止閃爍 flag1=1; write_sfm(12,fen);//送去液晶顯示分,時(shí) write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}}} } void dengkong() //燈光控制 {if(K3num==0) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_33[i]); } if(K3==0&&K3num==0) //判斷K3首次被按下,則設(shè)置鬧鐘 {delay(5); //延時(shí)消抖,后同 if(K3==0) {flag1=0; write_com(0x80+0x40+13); //第一次按下光標(biāo)定位到分鐘位置 while(!K3); K3num=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_3[i]); write_sfm(12,fen4); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi4); write_com(0x0f); //光標(biāo)開始閃爍 write_com(0x80+0x40+13); //顯示位置回到調(diào)節(jié)處 } } if(K2==0&&K3num==0) //K2被按下時(shí)顯示定時(shí)時(shí)間 {delay(5); if(K2==0) {write_sfm(12,fen4); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi4); while(!K2); write_sfm(12,fen); //K2松開顯示當(dāng)前時(shí)間 write_sfm(9,shi); } } if(K1==0&&K3num==1) //修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí) {delay(5); if(K1==0) {write_com(0x80+0x40+10); //光標(biāo)定位到小時(shí)位置 K3num=1; while(!K1); shi4++; //則調(diào)整定時(shí)的時(shí)加1 if(shi4==24) //若滿24后將清零 shi1=0; write_sfm(9,shi4); //每調(diào)節(jié)一次送液晶顯示一下 write_com(0x80+0x40+10); //顯示位置重新回到調(diào)節(jié)處 } } if(K2==0&&K3num==1) //按鍵2按下,修改鬧鐘時(shí)間的分鐘 { delay(5); if(K2==0) { write_com(0x80+0x40+13); //光標(biāo)定位到分鐘位置 K3num=1; while(!K2); fen4++; //則調(diào)整分加1 if(fen1==60) //若滿60后將清零 fen1=0; write_sfm(12,fen4); //每調(diào)節(jié)一次送液 write_com(0x80+0x40+13); //顯示位置重新回到調(diào)節(jié)處 } } if(K3num==1) //當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。 { if(K3==0) //判斷K3按下 { delay(5); if(K3==0) {K1num=0; K3num=0; while(!K3); write_com(0x0c); //光標(biāo)停止閃爍 flag1=1;//flag=1. write_sfm(12,fen);//送去液晶顯示分,時(shí) write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}} }} void clock()//任意鬧鐘時(shí)間到鬧鐘響 {if((((fen==fen1)&&(shi==shi1))||((fen==fen2)&&(shi==shi2))||((fen==fen3)&&(shi==shi3))||((fen==fen4)&&(shi==shi4)))&&(flag2==1)) //鬧鐘的響鬧控制 {beep=1; //此時(shí)鬧鐘響起,連續(xù)三次發(fā)出嘩的一聲 flag5=0; flag3=0; //置flag3=0,表示此時(shí)鬧鐘響起,按下K4鍵執(zhí)行停止鬧鐘響鬧語句 delay(100); //這些語句是為了使鬧鐘響起時(shí),發(fā)出連續(xù)三次嘩的聲音 beep=0; delay(100); beep=1; delay(100); beep=0; delay(100); beep=1; delay(100); beep=0; delay(300); } else {beep=0;} if(((fen!=fen1)&&(fen!=fen2)&&(fen!=fen3)&&(fen!=fen4))&&(flag4==0)&&(flag5==0) )//顯示時(shí)間 { xianshi(); } if((fen==fen1)&&(shi==shi1)&&(flag2==1)) {LED2=1; write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_00[i]); write_sfm(12,fen1); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi1); } else {LED2=0;} if((((fen==fen1)&&(shi==shi1)&&(flag2==0))||((fen-1==fen1)&&(shi==shi1)))&&(flag4==0) ) { xianshi();} if((fen==fen2)&&(shi==shi2)&&(flag2==1)) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_11[i]); write_sfm(12,fen2); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi2); } if((((fen==fen2)&&(shi==shi2)&&(flag2==0))||((fen-1==fen2)&&(shi==shi2)))&&(flag4==0) ) { xianshi(); } if((fen==fen3)&&(shi==shi3)&&(flag2==1)) {write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_22[i]); write_sfm(12,fen3); //送去液晶顯示定時(shí)的分,時(shí) write_sfm(9,shi3); } if((((fen==fen3)&&(shi==shi3)&&(flag2==0))||((fen-1==fen3)&&(shi==shi3)))&&(flag4==0)) {xianshi(); } if((fen==fen4)&&(shi==shi4)&&(flag2==1)) {write_com(0x80+0x40); for(i=0;i<15;i++) write_date(deng[i]); } if((((fen==fen4)&&(shi==shi4)&&(flag2==0))||((fen-1==fen4)&&(shi==shi4)))&&(flag4==0) ) { xianshi();} } void main() //主函數(shù) {init();//初始化子程序 while(1) { if((K4==0)&&(flag3==1)) { delay(200); K4num++; delay(100); if(K4num==5) K4num=0;} if(K4==0&&flag3==0) //當(dāng)鬧鐘響起時(shí),按下K4停止響鬧,當(dāng)鬧鐘響起時(shí)候flag3置為0 {delay(5); if(K4==0) {flag2=0; flag3=1;} delay(300);} if(K4num==0) {time(); flag4=0; } if(K4num==1) {guangbo(); flag4=1;} if(K4num==2) { shangke(); flag4=1; } if(K4num==3) { xiake(); flag4=1; } if(K4num==4) { dengkong(); flag4=1; } clock();}} void time0() interrupt 1 //定時(shí)器0中斷服務(wù)程序 {TH0=(65536-50000)/256; //定時(shí)器重新裝入數(shù)值 TL0=(65536-50000)%256; aa++; //中斷次數(shù)累加 if(aa==20) //20次50毫秒為1秒 { aa=0; miao++; led=~led; if(miao==60) {miao=0; fen++; flag2=1;//鬧鐘響起時(shí)按下K4鍵鬧鐘關(guān)閉,此處應(yīng)重置該變量,使下一次鬧鐘時(shí)間來到時(shí),鬧鐘仍然可以響起 if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } if(flag1==1) {write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');}} if(flag1==1) {write_sfm(12,fen); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' ');} //分鐘發(fā)生變化則立即吸入屏幕顯示 } } } 原代碼附上 ![]() |
你定義了uint 為unsigned int,而你i前面的是大寫的Uint,把大寫U改成小寫u即可。 |
uint和i不能換行 加個(gè)空格 |
Powered by 單片機(jī)教程網(wǎng)