版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第01篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#in clude<reg51.h>#define uchar un sig ned char#define uint un sig ned intsbit LED=P1A0;/延时void DelayMS(ui nt x)uchar i;while(x-) for(i=0;i<120;i+);/主程序void mai n()while(1)LED=LED; DelayMS(150);閔AL1XJAL2RST ;r-j<E etPHD P1.1PI 2P1.3PI .4PI
2、.5 PI &Pl.7IFO.lVftDDPDI/ADIFOi/ftDZ PQ 3/AD3 F1。勒VD斗 P0.UA35 HD SWEi IPO 7/M)7Fi.DeP2.1ABF2JJA1DP?t3.iA11 =2-412 P21A13F3J8M14P2 7W5P3.OrR':DP.3 i 竺L i. n 3.3Jih?1TP3.4JHpa.am pj帥亟 p汕而ATB3CE102从左到右的流水灯/*名称:从左到右的流水灯说明:接在P0 口的8个LED 从左到右循环依次点亮, 产生走 马灯效果*/#in clude<reg51.h>#in clude< i
3、ntrin s.h>#define uchar un sig ned char#define uint un sig ned int/延时void DelayMS(ui nt x)uchar i;ClHIT越I1 C2II XI-l>11L_亠士土土亠 KTiHLlR0 1W 旳那DZHU TMA切呻RfilRzdoirp; SM11P2 3I 丁pj ?jarPI QPI nPI ZF3SJM1QPI 3P5 51-JTIPI 4Pi £KJAipgPI Tfirri>rMwhile(x-) for(i=0;i<120;i+);II主程序void mai n
4、()P0=0xfe;while(1)P0=_crol_(P0,1); IIP0 的值向左循环移动 DelayMS(150);03 8只LED左右来回点亮I* 名称:8只LED左右来回点亮说明:程序利用循环移位函数crol和cror形成来回滚动的效果*/#in clude<reg51.h>#in clude< intrin s.h>#define uchar un sig ned char#define uint un sig ned int/延时void DelayMS(ui nt x)uchar i;while(x-)for(i=0;i<120;i+);II主程
5、序void mai n()uchar i;P2=0x01;while(1)r-曲虫畑:曲厲斗诡熄CnF2 afil'Si PJ&A1KPI VM rrntPI ?PI 2FJJtlltPI fl鼻学*何Pt PitJTrPI i沖的Pi TPi '(Tfor(i=0;i<7;i+) P2=_crol_(P2,1); IIP2的值向左循环移动DelayMS(150);for(i=0;i<7;i+)P2=_cror_(P2,1); P2的值向右循环移动DelayMS(150);04 单只数码管循环显示 09/* 名称:单只数码管循环显示09说明:主程序中的循环语
6、句反复将09的段码送至P0 口,使数字09循环显示*/#in clude<reg51.h>#in clude< intrin s.h>#define uchar un sig ned char#define uint un sig ned intuchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/延时void DelayMS(ui nt x)uchar t;while(x-)for(t=0;t<120;t+);/主程序void mai n()uchar i=0;P0
7、=0x00;while(1) /*P2-j«£P2.1X4!t 中 4*1: H2W卫XIE 竝42 "J? JU帖 ; i;r'i L 厂IP03I5.3T4?Ffor(;i<11;i+) PO=DSY_CODEi; DelayMS(300); / PO=DSY_CODEi;i=(i+1)%10;DelayMS(300);注:另一万案*/f-3L 二:Wr s=rotuMX WJW&T P02JAD2 POEQ ti -I M K.15-JUIS H>&<05 8只数码管滚动显示单个数字/* 名称:8只数码管滚动显示单个
8、数 字说明:数码管从左到右依次滚动显 示07,程序通过每次仅循环选通一只 数码管*/#in clude<reg51.h>#in clude< intrin s.h>#defi ne uchar un sig ned char#defi ne uint un sig ned int ucharcode3Vn:-u3T*um3-HiDSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/延时 void DelayMS(ui nt x)uchar t;while(x-) for(t=0;t<120;t+);
9、/主程序void mai n()uchar i,wei=0x80;while(1)for(i=0;i<8;i+)P2=0xff;/ 关闭显示wei=_crol_(wei,1);PO=DSY_CODEi; / 发送数字段码 P2=wei;/ 发送位码DelayMS(300); 06 8只数码管动态显示多个不同字符电路如上图 /* 名称:8只数码管动态显示多个不同字符说明:数码管动态扫描显示07。*/ #in clude<reg51.h>#in clude< intrin s.h>#defi ne uchar un sig ned char#defi ne uint
10、un sig ned intuchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/延时void DelayMS(ui nt x)uchar t;while(x-) for(t=0;t<120;t+);/主程序void mai n()uchar i,wei=0x80;while(1)for(i=0;i<8;i+)P2=0xff;PO=DSY_CODEi; / 发送段码wei=_crol_(wei,1);P2=wei;/发送位码DelayMS (2);7 K1-K4按键状态显示 /* 名称:K1-K
11、4按键状态显示说明:K1、K2按下时LED点亮,松开时熄灭,K3、K4按下并释放时LED点亮,再次按下并释放时熄灭;*/fcXTALlP06W&0 FOIJACHKI2WE12印報羽fntdWEit印敬巧RETPC '帕PJJCIMLBP23狎PJ.SjcahAl!P? 4X412E4P2.MI3疋刖IM耐曲15PhD叭硕pi.iFUimmP1JPi,3旳 NTlpf.4PIS町的HRPi .7t>3 7r=-klK2C3IDlFJT 口立I Ml 133Q#in clude<reg51.h>#defi ne ucharun sig nedchar#defi
12、ne uint un sig ned intsbit LED仁POP;sbit LED2=P0A1;sbit LED3=P0A2;sbit LED4=P0A3;sbit K仁 P1A0;sbit K2=P1A1;sbit K3=P1A2;sbit K4=P1A3;/延时void DelayMS(ui nt x)uchar i;while(x-) for(i=0;i<120;i+);II主程序void mai n() P0=0xff;P仁 Oxff; while(1)LED 1=K1; LED2=K2;if(K3=0)while(K3=0);LED3=LED3;if(K4=0)while(
13、K4=0); LED4=LED4;DelayMS(IO);8 开关控制LEDI* 名称:开关控制 LED说明:开关S1和S2分别控 _L制 LED1 和 LED2'*/#in clude<reg51.h>sbit S仁 P1A0;sbit S2=P1A1;sbit LED1=P0A0;sbit LED2=P0A1;/主程序void mai n()while(1)LED1=S1;LED2=S2;厂:;R1U1j£Tai_2u_Pl 611.7ffl.jtAM) n.iuMP0.2 '工Hi aj m 4FAM1 ra.oAifiFfl "AZPSi
14、O/J PSn/-aF2衣蜀g 咗納 P3.-UA12 工:.-v JP2 £JA1<P2 Md 若P3.1JJWS电四_P34H0啤Mip.3 2 丽PSTffimm -9按键发音/*名称:按键发音说明:按下不同的按键会是 SOUNDE发出不同频率的声音。 本例使用延时函数实现不同频 率的声音输出,以后也可使用定 时器*/#in clude<reg51.h>#define uchar un sig ned char #define uint un sig ned intsbit BEEP=P3A7;sbit K仁 P"4;sbit K2=P1A5;sbi
15、t K3=P"6;sbit K4=P1A7;/延时void DelayMS(ui nt x)uchar t;while(x-) for(t=0;t<120;t+); /按周期t发音void Play(uchar t)uchar i;for(i=0;i<100;i+)BEEP=BEEP; DelayMS(t);BEEP=0;void mai n()P仁 Oxff;BEEP=0;while(1)if(K1=0)Play(1);if(K2=0)Play (2);if(K3=0)Play(3);1車C1 口 X-1L卍(Y 11 仙0318CUFPSE« ALZ 臣KI
16、 J=Li<1 oF0引心 FD枷5 冈沁北PO 7/AD7P2 wa1陆如忖陀丽13P2j5脚卫 昭加件FMfiXD P3 1TOD_ P3-24KT1J rjwKT厂P3 4A0R3S/T1的J6隹J1丄 clJ-Axd 7SLUl_»=hif(K4=0) Play(4);10 INT0中断计数/* 名称:INTO中断计数说明:每次按下计数键时触发INTO中断,中断程序累加计数,计数值显示在3只数码管上,按下清 零键时数码管清零*/#in clude<reg51.h>#define uchar un sig ned charKM叫 砂昨pitnZFifi*盂亠I
17、Mn益亠a/亠士皿亠#define uint un sig ned int09的段码Riff"ftuchar code DSY_C0DE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/计数值分解后各个待显示的数位uchar DSY_Buffer=0,0,0;uchar Coun t=0;sbit Clear_Key=P3A6;/数码管上显示计数值void Show_Co un t_ON_DSY()DSY_Buffer2=Count/1OO;/ 获取 3 个数DSY_Buffer1=Cou nt%100/10;DSY_B
18、ufferO=Cou nt%10;if(DSY_Buffer2=0) /高位为 0 时不显示DSY_Buffer2=0x0a;if(DSY_Buffer1=O) / 高位为0,若第二位为 0同样不显示DSY_Buffer1=0x0a;P0=DSY_CODEDSY_Buffer0;P1=DSY_CODEDSY_Buffer1;P2=DSY_CODEDSY_Buffer2;/主程序void mai n()P0=0x00;P仁0 x00;/允许INT0中断P2=0x00;IE=0x81;IT0=1;/下降沿触发while(1)if(Clear_Key=O) Count=O;/ 清 0Show_Co
19、unt_O N_DSY();/INT0中断函数 void EX_INT0() in terrupt 0Count+;/计数值递增=POir«ii tPO:PD盹.湎1iSPB闵吐P刃IF2JSAfl.-11EAK4JJ112IP2SA15IR27M1SM DPI 1pg.iJTXDPI 2pi iF3 TWT1pi.aP34JT(IPI-5肉阿Pl -GP3 -ofrtFP|7J:-iP11UFC1TU 空.-d_11 外部INT0中断控制LED/*名称:外部INT0中断控制LED说明:每次按键都会触发 INT0中 断,中断发生时将LED状态取反,产生 LED状态由按键控制的效果*/
20、#in clude<reg51.h>#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit LED=P0A0;/主程序void mai n()LED=1;EA=1;EX0=1;IT0=1;while(1);/INT0中断函数void EX_INT0() in terrupt 0LED=LED; / 控制 LED亮灭12定时器控制单只LED/*名称:定时器控制单只LED说明:LED在定时器的中断例程控制下不断闪 烁。*/#include<reg51 .h>>NIALfKTJiLJPS-1K lVa
21、Du M卅心 FTPC柯回 pa Mot闯"ACMFJJlWhHpdvnra?rMtF: 如SAP2&MF4P?JUP?PIF1.1Pj IJTMliPI ?P >JrJp-j iifirrPM門MEMJru祕帆翳Pl .7ra.rfiDUi#define uchar un sig ned char#define uint un sig ned int sbit LED=P0A0;uchar T_Coun t=0;/主程序void mai n()TMOD=0x00;/定时器0工作方式0/允许TO中断TH0=(8192-5000)/32; /5ms 定时 TL0=(819
22、2-5000)%32;IE=0x82;TR0=1;while(1);中断函数/T0恢复初值/0.5s 开关一次 LEDvoid LED_Flash() in terrupt 1 TH0=(8192-5000)/32; /TL0=(8192-5000)%32;if(+T_Cou nt=100)LED=LED;T_Cou nt=O;13定时器控制4个LED滚动闪烁/*名称:定时器控制 4个LED滚动闪烁 说明:4只LED在定时器控制下滚动闪烁。*/#in clude<reg51.h>#define ucharun sig nedchar#define uint un sig ned i
23、nt sbit B仁 P0A0;sbit G仁 P0A1;sbit R仁 P0A2;u丄3丄丑y- -、 u. -F=Fsbit 丫仁 P0A3;uint i,j,k;/主程序void mai n()i=j=k=0;P0=0xff;TMOD=0x02;/定时器0工作方式2唧AL1RJ JJAL'U2HT.JUL2RL1WIPO2JAEI2 KI轴們应一rastii: P0 伽 06P2.1IKBALE1式P25/A13門0pai/M5PSiUTIKDMlP3JHWPl 2円吕F3 3JIN1IPi iP1 5PM阳Pl 6P3 ©EP1 T1> ! 1T > 20
24、0us定时TH0=256-200;TL0=256-200;IE=0x82;TR0=1;/启动定时器while(1);/TO中断函数void LED_Flash_a nd_Scroll() in terrupt 1if(+k<35) return; /定时中断若干次后执行闪烁k=0;switch(i)case 0: B1= B1;break;case 1: G1=G1;break;case 2: R1=R1;break;case 3: Y1=Y1;break; default:i=O;if(+j<300) return; /每次闪烁持续一段时间j=0;PO=Oxff; / 关闭显示i
25、+;/ 切换到下一个 LED14 10s 的秒表/* 名称:10s的秒表再次按键暂停,第三次按键清零。L R4r=EirIIHjDMi FlR IMHI .-常刮心P5 W:IP M uljft pg jjnr呻沖F?T.丽说明:首次按键计时开始,uVr.1 :8 冊yn门Picnaii PM曲F*/ #in clude<reg51.h>#define uchar un sig ned char#define uint un sig ned int sbit K仁 P3A7;uchar i,Sec on d_Co un ts,Key_Flag_Idx;bit Key_State;u
26、char DSY_C0DE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/延时void DelayMS(ui nt ms)uchar t;while(ms-) for(t=0;t<120;t+);/处理按键事件void Key_Eve nt_Ha ndle()if(Key_State=0)Key_Flag_I dx=(Key_Flagdx+1)%3;switch(Key_Flagdx)case 1: EA=1;ET0=1;TR0=1;break;case 2: EA=0;ET0=0;TR0=0;break;case 0: P0=0x
27、3f;P2=0x3f;i=0;Seco nd_Cou nts=O; /主程序void mai n()P0=0x3f;P2=0x3f;i=0;Secon d_Co un ts=0;Key_Flagdx=0;Key_State=1;TMOD=0x01;/显示00TH0=(65536-50000)/256;TL0=(65536-50000)%256; while(1)/按键次数(取值 0, 1, 2, 3)/按键状态/定时器0方式1/定时器0: 15ms if(Key_State!=K1)DelayMS(10); Key_State=K1;Key_Eve nt_Ha ndle(); /T0中断函数v
28、oid DSY_Refresh() in terrupt 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256; if(+i=2)/恢复定时器0初值50ms*2=0.1s 转换状态i=0;Secon d_Co un ts+;PO=DSY_CODESeco nd_Cou nts/1O;P2=DSY_CODESeco nd_Cou nts%10;if(Second_Counts=1OO) Second_Counts=O; /满 100 (10s)后显示 00 15用计数器中断实现100以的按键计数/* 名称:用计数器中断实现100以的按键计数说明:本例用T0计
29、数器中断实现按键技术,由于计数寄存器初值为1,因此P3.4引脚的每次负跳变都会触发T0中断,实现计数值累加。计数器的清零用外部中断 0控制。*/#in clude<reg51.h>#define uchar un sig ned char#define uint un sig ned int/段码ucharcodeC3rr<iiPOVOitq二匸 n j尸匸jPDd.AEd I -PdX龙IP11.5叱.;谄缚P23i iiPi"话-i-F】I u- iiI - i/计数器T0方式2/计数值为1/允许T0中断/允许INT0中断/允许CPU中断/设置优先级,T0高于I
30、NT0/INT0中断触发方式为下降沿触发/启动T0DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;uchar Coun t=0;/主程序void mai n()P0=0x00;P2=0x00;TMOD=0x06; TH0=TL0=256-1;ET0=1;EX0=1;EA=1;IP=0x02;IT0=1;TR0=1;while(1)巾血1 皿JRST;yPl A N J PI J Pl.J Pl.*N .5 PI A Fj.TRPIr> 71 卩刊匚忑満试运讦吝卑7 師炉P1I&打间- - «
31、W " L闻 R>AM 叭曲I 啟ijwa W3*c FC.4M 闿凱M 阳且 加恥四1“尤.r-iLP3MT0(100*50ms)切换PO=DSY_CODECou nt/10;P2=DSY_CODECou nt%10;/TO计数器中断函数void Key_C oun ter() in terrupt 1Count=(Count+1)%100;/因为只有两位数码管,计数控制在100以(0099)/INTO中断函数void Clear_Co un ter() in terrupt 0Cou nt=O;16定时器控制交通指示灯/*名称:定时器控制交通指示灯说明:东西向绿灯亮 5s后
32、,黄灯闪烁,闪烁 5次亮红灯,红灯亮后,南北向由红灯变成绿灯,5s后南北向黄灯闪烁,闪烁5次后亮红灯,东西向绿灯亮,如此往复。*/#in clude<reg51.h>#define uchar un sig ned char#define uint un sig ned intsbit RED_A=P0A0; /东西向指示灯sbit YELLOW_A=POA1;sbit GREEN_A=P0A2;sbit RED_B=P0A3; / 南北向指示灯sbit YELLOW_B=P0A4;sbit GREEN B=P0A5;/延时倍数,闪烁次数,操作类型变量uchar Time_Co u
33、n t=0,Flash_Co un t=O,Operati on _Type=1;/定时器0中断函数void T0_INT() in terrupt 1TL0=-50000/256;TH0=-50000%256;switch(Operati on _Type)case 1: /东西向绿灯与南北向红灯亮5sRED_A=0;YELL0W_A=0;GREEN_A=1;RED_B=1;YELL0W_B=0;GREEN_B=0;if(+Time_Cou nt!=100) return; /5sTime_Co un t=0;Operati on _Type=2; break;case 2: / 东西向黄灯
34、开始闪烁,绿灯关闭if(+Time_Co un t!=8) retur n;Time_Co un t=0;YELLOW_A=YELLOW_A;GREEN_A=0; if(+Flash_Count!=10) return;/ 闪烁Flash_Cou nt=0;Operati on _Type=3;break;case 3: / 东西向红灯与南北向绿灯亮5sRED_A=1;YELL0W_A=0;GREEN_A=0;RED_B=0;YELL0W_B=0;GREEN_B=1; if(+Time_Cou nt!=100) return; /5s( 100*50ms)切换Time_Co un t=0;Op
35、erati on _Type=4;break;case 4: / 南北向黄灯开始闪烁,绿灯关闭if(+Time_Co un t!=8) retur n;Time_Co un t=0;YELLOW_B=YELLOW_B;GREEN_A=0; if(+Flash Count!=10) return;/ 闪烁Flash_Cou nt=O;Operati on _Type=1; break;/主程序void mai n()TMOD=0x01;/TO 方式 1IE=0x82;TR0=1;while(1);17单片机之间双向通信/* 名称:甲机串口程序说明:甲机向乙机发送控制命令字符, 甲机同时接收乙机发
36、送的数字,并显示在 数码管上。*/巧 2a -D *94仆 耐40k订Pi?iFi-frf-|£) Pil I FIJIIhd 2 IE 吋mflir#in clude<reg51.h>#define uchar un sig ned charitA- & h- 1-#defi ne uint un sig ned intsbit LED仁P1A0;sbit LED2=P"3;sbit K仁 P1A7;uchar Operation_No=0; / 操作代码/数码管代码uchar code DSY_CODE=Ox3f,OxO6,Ox5b,Ox4f,Ox6
37、6,Ox6d,Ox7d,OxO7,Ox7f,Ox6f;/延时 void DelayMS(ui nt ms)uchar i;while(ms-) for(i=0;i<120;i+);/向串口发送字符 void Putc_to_SerialPort(uchar c) SBUF=c;while(TI=0);TI=0;/主程序 void mai n()LED仁 LED2=1;P0=0x00;/串口模式1,允许接收/T1工作模式2/波特率不倍增SCON=0x50;TMOD=0x20;PCON=OxOO;TH1=0xfd;TL1=0xfd;TI=RI=0;TR1=1;IE=0x90;/允许串口中断w
38、hile(1)DelayMS(100);if(K1=0)/按下K1时选择操作代码0, 1, 2, 3while(K1=0);Operation_No=(Operation_No+1)%4;switch(Operation_No)/根据操作代码发送 A/B/C或停止发送case 0: Putc_to_SerialPort( X);LED1=LED2=1;break;case 1: Putc_to_SerialPort('A'); LED1=LED1;LED2=1; break;case 2: Putc_to_SerialPort('B'); LED2=LED2;L
39、ED1=1; break;case 3: Putc_to_SerialPort(C); LED1=LED1;LED2=LED1; break;/甲机串口接收中断函数void SerialNT() interrupt 4if(RI)RI=0;if(SBUF>=0&&SBUF<=9) PO=DSY_CODESBUF; else P0=0x00;/*名称:乙机程序接收甲机发送字符并完成相应动作LED完成不同闪烁动作。说明:乙机接收到甲机发送的信号后,根据相应信号控制*/#in clude<reg51.h>#defi ne uchar un sig ned ch
40、ar#defi ne uint un sig ned intsbit LED仁 P1A0;sbit LED2=P1A3;sbit K2=P"7;uchar NumX=-1;/延时void DelayMS(ui nt ms)uchar i; while(ms-) for(i=0;i<120;i+);/主程序void mai n()LED1=LED2=1;SCON=0x50;/串口模式1,允许接收TMOD=0x20;/T1 工作模式 2TH1=0xfd;/ 波特率 9600TL1=0xfd;PCON=0x00;/波特率不倍增RI=TI=0;TR1=1;IE=0x90;while(1
41、)DelayMS(100);if(K2=0)while(K2=0);NumX=+NumX%11; /产生010围的数字,其中 10表示关闭 SBUF=NumX;while(TI=0);TI=0;void Serial_INT() in terrupt 4if(RI) /如收到则LED则动作RI=0;switch(SBUF) /根据所收到的不同命令字符完成不同动作case X:LED仁LED2=1;break;/全灭case 'A':LED1=0;LED2=1;break;/LED1亮case 'B':LED2=0;LED1=1;break;/LED2亮case
42、C:LED1=LED2=0;/全亮第02篇硬件应用01 24C04与数码管/* 名称:24C04与数码管说明:每次运行时,程序将 24C04芯片的计数字节值递增并显示在数码管 上,反复运行,实现计数。*/#in clude<reg51.h>#in clude< intrin s.h>C1丄w口it#define uchar un sig ned char#define uint un sig ned int#defineDelay4us()assaaaaU1ITjU-I'T*l»inqcrxi闭丄51 IIIKpl 闭PC ADI他i 闻伽FttM*
43、F3HMHtP2Jfl.1tFlratnp nr td n iwipEMTD_nop_();_n op_();_ no p_();_ nop_(); sbit SCL=P1A0;sbit SDA=P1A1;/数码管段码uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/三位数显示缓冲uchar DISP_Buffer=0,0,0;uchar Coun t=0;/延时void DelayMS(ui nt ms)uchar i;while(ms-) for(i=0;i<120;i+);/IIC
44、 启动void Start()SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;/IIC 停止void Stop()SDA=0;SCL=0;Delay4us();SCL=1;Delay4us();SDA=1;/读取应答void RACK()SDA=1;Delay4us();SCL=1;Delay4us();SCL=0;/发送非应答信号void NO_ACK()SDA=1;SCL=1;Delay4us();SCL=0;SDA=0;/向24C04中写一个字节数据void Write_A_Byte(uchar byte)uchar i;for(i=0;i&l
45、t;8;i+)byte<<=1;SDA=CY;_ no p_();SCL=1;Delay4us();SCL=0;RACK();/向指定地址写数据void Write_Ra ndom_Adress_Byte(uchar addr,uchar dat)Start();Write_A_Byte(OxaO);Write_A_Byte(addr);Write_A_Byte(dat);Stop();DelayMS(10);/从24C04中读一个字节数据uchar Read_A_Byte()uchar i,b;for(i=0;i<8;i+)SCL=1;b<<=1;b|=SDA;
46、SCL=0;return b;/从当前地址读取数据uchar Read_Curre nt_Address_Data()uchar dat;Start();Write_A_Byte(Oxa1);dat=Read_A_Byte();NO_ACK();Stop();return dat;/从任意地址读取数据 uchar Ran dom_Read(uchar addr)Start();Write_A_Byte(OxaO);Write_A_Byte(addr);Stop();return Read_Curre nt_Address_Data();/数据转换与显示void Con vert_A nd_Di
47、splay()DISP_Buffer2=Cou nt/100;DISP_Buffer1=Cou nt%100/10;DISP_Buffer0=Cou nt%100%10;if(DISP_Buffer2=0)DISP_Buffer2=10;if(DISP_Buffer1=0)DISP_Buffer1=10;/高位为高位为0不显示0,次高位为0也不显示P0=0xff;P2=0x80;P0=DSY_CODEDISP_Buffer0;DelayMS(2);P0=0xff;P2=0x40;P0=DSY_CODEDISP_Buffer1;DelayMS(2);P0=0xff;P2=0x20;P0=DSY_CODEDISP_Buffer2;DelayMS(2);/个位十位百位/Cou nt=Ra ndom_Read(0x00)+1;Write_Ra ndom_Adress_Byte(0x00,Cou nt); while(1) Con vert_A nd_Display();/从24C04的0x00地址读取数据并递增将递增后的计数值写入 24C04 转换并持续刷新数码管显示主程序void mai n()02 1602液晶显示时钟XTC1U1R1CRYSTALPU LLADUKTAL2P0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 飞鸟集读后感范文
- 招生实践报告
- 心理健康教育工作总结15篇
- 关于美德演讲稿范文800字(32篇)
- 暑假护士见习报告(3篇)
- 浙江省丽水市(2024年-2025年小学五年级语文)统编版质量测试(上学期)试卷及答案
- 湖北省黄冈市(2024年-2025年小学五年级语文)人教版质量测试((上下)学期)试卷及答案
- 市政道路路基土方、石方施工规范征求意见稿
- 上海市市辖区(2024年-2025年小学五年级语文)统编版期中考试(上学期)试卷及答案
- 上海市县(2024年-2025年小学五年级语文)统编版开学考试((上下)学期)试卷及答案
- 金属挤压共(有色挤压工)中级复习资料练习卷含答案
- 护患沟通情景实例
- 往复式压缩机常见故障与排除
- 高速铁道工程职业生涯规划书
- 圆球幕墙施工方案
- 歌剧《洪湖水浪打浪-》课件
- 国家安全教育课-教案3篇
- 幼儿园优质公开课:小班语言《小鸡球球藏猫猫》课件(共同欣赏)
- 人教版八年级数学上册全等三角形典型6类难题题型归类
- 大班-数学-加号减号-课件(基础版)
- 三全育人工作实施方案
评论
0/150
提交评论