《单片机C例程大全.pdf》由会员分享,可在线阅读,更多相关《单片机C例程大全.pdf(182页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、*LED闪烁的简单试验*连接方法:JP11(P 2)和 JP1用 8PIN排线连接起来#include 此文件中定义了 51的一些特殊功能寄存器void delay(unsigned int i);声明延时函数main()(P2=0 x00;/置 P0 口为低电平delay(600);调用延时程序P2=Oxff;置P0 口为高电平delay(600);/调用延时程序/*延时函 数*/void delay(unsigned int i)unsigned char j;for(i;i 0;i-)循环 600*255 次for(j=255;j0;j-););二进制加法试验;p2 口八个灯作二进制加法
2、。理解二进值的计算*;硬件连接:p2 口 8 路指示灯描述:p2 口八个灯作二进制加法。理解二进值的计算*连接方法:JP11(P 2)和 JP1(LED灯)用 8PIN排线连接起来*#include void delay(unsigned int i);声明延时函数main()unsigned char Num=Oxff;while(1)P2=Num;delay(lOOO);延时函数Num;void delay(unsigned int i)unsigned char j;for(i;i 0;i-)for(j=255;j0;j-);)*LED闪烁的简单试验延时实现p2 口 LED流 水 灯 效
3、 果(用循环移位指令)连接方法:JP11(P2)和 JP1(LED灯)用 8PIN排线连接起来#include 此文件中定义了 51的一些特殊功能寄存器#include void delayms(unsigned char ms)/延时子程序unsigned char i;while(ms-)for(i=0;i 120;i+);main()unsigned char LED;LED=Oxfe;/Oxfewhile(l)P2=LED;delayms(250);LED=LED 1;if(P2=0 x00)1111 1110循环右移1位,点亮下一个LED”v”为左移位LED=Oxfe;/Oxfe=1
4、111 1110描述:跑马灯程序连接方法:JP11(P2)和 JP1(LED灯)用 8PIN排线连接起来#include#include*延时子程序*void delayms(unsigned char ms)unsigned char i;while(ms)for(i=0;i 120;i+);)*主程序main()(unsigned char LED;LED=Oxfe;P2=LED;while(l)(delayms(250);LED=_crol_(LED,l);循环右移1位,点亮下一个LED 此函数位库函数P2=LED;),*冲断控制的P2.0小灯。采 用 11.0592/12MHZ晶振。;
5、连接方法:JPI1(P 2)和 JPI(LED灯)用 8PIN排线连接起来main:MOV tmod,#01h;设置定时器工作方式寄存器。ORGAJMPORGAJMPORGOOOOhmainOOObhint_timer0030hMOVMOVMOVMOVMOVSETBAJMPth0,#high(65536-10000);tl0,#low(65536-10000);设 10MS 初始值。ie,#82h;设置中断允许寄存器30h,#10;31h,#6;30H和 31H是两个软件计数器。trO;启动定时$;原地踏步int_timer:MOVMOVDJNZMOV;定时器0 中断服务程序。th0,#hig
6、h(65536-10000);U0,#low(65536-10000);重设 10MS 定时。30h,ll;30h,#10;ENDDJNZ31h,ll;MOV31h,#6;软件计数CPLp2.0;10*6*10MS=600MS 时间到,Pl.l 取反11:RETI;中断返回;*跑马灯实验;延时实现LED流水灯效果 p2 口八个灯作跑马灯。采用了寄存器存中间数;连接方法:JP11(P 2)和 JP1(LED灯)用 8PIN排线连接起来#include void delay(unsigned int i);声明延时函数char LED;main()(unsigned char i;while(1)
7、LED=Oxfe;for(i=0;i 8;i+)P2=LED;delay(500);LED=LED 1;/左移LED=LED I 0 x01;移位后,后面的位为高电平if(LED=0 x7D break;/麋前退出 FOR 循环for(i=0;i 0;i-)for(j=255;j0;j-);按键状态显示试验*/*连接方法:连接JP10(P0)与 JP5(按钮接口)JP11(P2)与 JP1(LED 接口)*/*按键则点亮LED灯,8 路指示灯接p0 U#include#include sbit BEEP=PM5;将蜂鸣器定义在P l.5 端口上sbit RELAY=P1A4;将继电器定义在P
8、l.4 端口上sbit KI=P0A0;sbit K2=0 x80Al;/P0 和 0X80 表示的是同一个地址sbitsbitK3=P0A2;sbitK5=P0A4;sbitK4=0 x80八 3;K6=0 x80 八 5;void beep();main()while(l)P2=Oxff;if(Kl=0)P2=Oxfe;if(K2!=1)Iif(!K3)if(K4)if(!Kl&!K2)if(!K5)if(!K6)P2=Oxfd;P2=Oxfb;P2=0 xf7;P2=0 x00;/2个按 钮 同 时 按 下 P2 8 个灯全部点亮beep();喇叭发声RELAY=0;else通过了反相器
9、(HC6800试用)RELAY=1;)void beep()unsigned char i,j;for(i=0;i100;i+)BEEP=!BEEP;for(j=0;j250;j+)_nop_();BEEP=1;/BEEP取反需要产生方波/关闭蜂鸣器*按键控制程序*连接方法:JP1O(P 2)与 JP1(LED灯)连 接,*JP11(P 0)与 JP5(按键接口)连接*开始点亮PILED按 P01 LED向右移一位*按 POO LED向左移一位*连续按动按钮LED会不停的左移或右移#include#include unsigned char scan_key();void proc_key(u
10、nsigned char key_v);void delayms(unsigned char ms);sbit KI=P0A0;对应按钮 KIsbit K2=P0Al;对应按钮 K2main()(unsigned char key_s,key_v;key_v=0 x03;P2=Oxfe;while(l)(key_s=scan_key();if(key_s!=key_v)delayms(lO);key_s=scan_key();if(key_s!=key_v)key_v=key_s;proc_key(key_v);unsigned char scan_key()(unsigned char ke
11、y_s;key_s=0 x00;key_s 1=K2;key_s =1;key_s 1=KI;return key_s;void proc_key(unsigned char key_v)(if(key_v&0 x01)=0)(P2=_cror_(P2,l);)else if(key_v&0 x02)=0)(P2=_crol_(P2,1);)void delayms(unsigned char ms)/延时子程序(unsigned char i;while(ms)for(i=0;i 120;i+);*按键控制程序*连接方法:JP10(P 2)与 JP1(LED灯)连 接,*JPU(P 0)与
12、JP 5(按键接口)连接*开始点亮PILED;键盘P2.5控制的小灯P0.0。P2.7对应K1*ORG 0000HAJMP MAINORG 0030HMAIN:MOV C,p0.0;检测按键MOV P2.0,C;根据按键决定输出。AJMP MAIN;循环END;P0.0小键盘按下P2.0亮再按0.5秒灭。;连接方法:连接方法:JP10(P 2)与 JPI(LED灯)连接,JP11(P 0)与 JP5(按键接口)连接;FLAG 20H EXPRESS THE 0.5S TIME ARRIVED.;FLAG 21H EXPRESS THE LED LIGHTED.ORGAJMPORGMAINO:C
13、LR21HOOOOhmainO0030h;清标志main:MOV C,P0.0;检测按键JC mainMOV R6,#200;设定延时MOV R7,#200TTO:JNB21H,TT2tt:MOV C,P0.0JNCttl;检测灯状态;检测按键JNB 20H,MAIN;检测时间标志CLR20HAJMP TT3TT2:MOV c,P0.0;检测按键JNC tt2TT3:CPL21H;改变灯状态CPLp2.0AJMP mainTT1:NOP;延时但不是子程序NOPNOPNOPNOPNOPDJNZ R6,TTMOV R6,#200DJNZ R7,TTMOV R7,#200SETB 20HAJMP T
14、TEND,*.*.*.*.*.*,按 键PO.O每按下次加一,通过的P2端口显示;连接方法:JP1O(P0)与JP1(LED灯)连 接,;JP11(P 2)与JP 5(按键接口)连接*;显示出其的二进制计数值。,*org OOOOhajmplooporg 0030hmov a,#Offhloop:jnb pO.O,ttjmp looptt:mov p2,a;全不亮call delay;延时。deca;每次减一。jmp loopdelay:mov r5,#50;延时。d 1:mov r6,#40d2:mov r7,#20retend*键盘控制的花样彩灯。*连接方法:JP10(P 2)与JP1(L
15、ED灯)连 接,JP11(P 0)与JP5(按键接口)连接按p24,p27,p26,p27,p2 口 8个灯分别作移动右移动,停 止 右 移 左 移*.*.*.*.*.*亮灯控制程序;,ORG 0000HUMP STARTorg 0030h;主 程 序;START:MOV P3,#OFFHJNBP0.7,FUN0;检测按键JNBPO.4,FUN1JNBP0.5,FUN2JNBP0.6,FUN3;关闭按纽AJMPSTARTFUNO:LCALLDL10MS;消岸抖动JBP0.7,STARTWAITLO:JNBP0.7,WAITL0;等待键释放FUNO1:LCALLFUNOOAJMPSTARTFUN
16、1:LCALLDL10MS;消岸抖动JBP0.4,STARTWAITLkJNBP3.3,WAITL1;等待键释放FUN1O:LCALLFUN11AJMPSTARTFUN2:LCALLDL10MS;消岸抖动JBPO.5,STARTWAITL2:JNBP0.5,WAITL2;等待键释放FUN20:LCALLFUN22AJMPSTARTFUN3:LCALLDL10MS;消岸抖动JBP0.6,STARTWAITL3:JNBP0.6,WAITL3;等待健释放MOVP2,#OFFH;关显示UMPSTARTFUNOO:MOVA,#0FEH;左移子程序FUNOOO:MOVP2,ALCALLDLO5SJNBAC
17、C.7,OUT;检测是否结束RLAAJMPFUNOOOOUT:RETFUN11:MOVA,#07FH;右移子程序FUN111:MOVP2,ALCALLDLO5SJNBACC.O,OUT;检测是否结束RRAAJMPFUN111FUN22:MOVA,#0AAH;间隔显示子程序MOVP2,ALCALLDL30SCPLAMOVP2,ALCALLDL30SRET.*,;延 时 程 序;,*,DL512:MOVR2,#0FFH;延时500USLOOPkDJNZR2XOOP1RETDL10MS:MOVR3,#14H;延 时 10MSLOOP2:LCALLDL512DJNZR3,LOOP2RETDL05S:M
18、OVR4,#0AH;延时-100MSLOOP3:LCALLDL10MSDJNZR4,LOOP3RETDL30S:MOVR5,#O3H;延时 300MS.LOOP4:LCALLDL05SDJNZR5,LOOP4RETend此为独立按键接口 文件名 C51音乐程序(八月桂花)功能通过单片机演奏音乐#include include 本例采用89C52,晶振为11.0592MHZ/关于如何编制音乐代码,其实十分简单,各位可以看以下代码.频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;所以拿出谱子,试探编吧!sbit Beep=P1A5;unsigned char n=0;/n为节拍常数变量
19、unsigned char code music_tab=0 x18,0 x30,OxlC,0 x10,/格式为:频率常数,节拍常数,频率常数,节拍常数,0 x20,0 x40,OxlC,0 x10,0 x18,0 x10,0 x20,0 x10,OxlC,0 x10,0 x18,0 x40,OxlC,0 x20,0 x20,0 x20,OxlC,0 x20,0 x18,0 x20,0 x20,0 x80,OxFF,0 x20,0 x30,OxlC,0 x10,0 x18,0 x20,Ox 15,0 x20,Ox IC,0 x20,0 x20,0 x20,0 x26,0 x40,0 x20,0
20、 x20,0 x2B,0 x20,0 x26,0 x20,0 x20,0 x20,0 x30,0 x80,OxFF,0 x20,0 x20,OxlC,0 x10,0 x18,0 x10,0 x20,0 x20,0 x26,0 x20,0 x2B,0 x20,0 x30,0 x20,0 x2B,0 x40,0 x20,0 x20,OxlC,0 x10,0 x18,0 x10,0 x20,0 x20,0 x26,0 x20,0 x2B,0 x20,0 x30,0 x20,0 x2B,0 x40,0 x20,0 x30,OxlC,0 x10,0 x18,0 x20,0 x15,0 x20,OxlC,
21、0 x20,0 x20,0 x20,0 x26,0 x40,0 x20,0 x20,0 x2B,0 x20,0 x26,0 x20,0 x20,0 x20,0 x30,0 x80,0 x20,0 x30,OxlC,0 x10,0 x20,0 x10,OxlC,0 x10,0 x20,0 x20,0 x26,0 x20,0 x2B,0 x20,0 x30,0 x20,0 x2B,0 x40,0 x20,0 x15,Ox IF,0 x05,0 x20,0 x10,Ox IC,0 x10,0 x20,0 x20,0 x26,0 x20,Ox2B,0 x20,0 x30,0 x20,Ox2B,0 x4
22、0,0 x20,0 x30,OxlC,OxlO,0 x18,0 x20,0 x15,0 x20,Ox IC,0 x20,0 x20,0 x20,0 x26,0 x40,0 x20,0 x20,0 x2B,0 x20,0 x26,0 x20,0 x20,0 x20,0 x30,0 x30,0 x20,0 x30,0 xlC,0 xl0,0 x18,0 x40,OxlC,0 x20,0 x20,0 x20,0 x26,0 x40,0 x13,0 x60,0 x18,0 x20,0 x15,0 x40,0 x13,0 x40,0 x18,0 x80,0 x00);void intO()interru
23、pt 1 采用中断0 控制节拍 TH0=0 xd8;TLO=Oxef;n-;)void delay(unsigned char m)控制频率延时(unsigned i=3*m;while(i);)void delayms(unsigned char a)豪秒延时子程序(while(-a);采用w hile(-a)不要采用while(a-);各位可编译一下看看汇编结果就知道了!)void main()unsigned char p,m;m 为频率常数变量unsigned char i=0;TMOD&=0 x0f;TMODI=0 x01;TH0=0 xd8;TL0=0 xef;IE=0 x82;p
24、lay:while(l)a:p=music_tabi;if(p0 x00)i=0,delayms(lOOO);goto play;如果碰到结束符,延时 1秒,回到开始再来一遍else if(pOxff)i=i+l;delayms(100),TR0=0;goto a;若碰到休止符,延时 100ms,继续取下一音符else m=music_tabi+,n=music_tabi+;取频率常数和节拍常数TR0=l;开定时器1while(n!=0)Beep=Beep,delay(m);等待节拍完成,通 过 P1 口输出音频(可多声道哦!)TR0=0;关定时器1ORG0000H;伪指令,指定程序从8000
25、H开始存放AJMPMAIN;跳转指令,程序跳转到MAIN处ORG01 OOH;伪指令,指定以下程序从8100H开始存放MAIN:MOVSP,#60;给堆栈指针赋初值LOOP:ACALL MUSICAJMPLOOP,*;蜂鸣器输出声响子程序,*MUSIC:MOV R5,#60H;控制音长MIC:CPLP1.5ACALL DELAY5MS;控制音调DJNZ R5,MICRET,*;延时子程序DELAY5MS:MOV R7,#3HDELAYO:MOVDELAY 1:DJNZR6,#40HR6,DELAY 1DJNZ R7,DELAY0RETENDorg OOOOhajmpmainorg 0030hm
26、ain:MOV R2,#08HDLV1:MOV R3,#0FAHDLV2:CPLP1.5LCALL DELAY 1 ;延时DJNZ R3JDLV2DJNZ R2,DLV1MOV R2,#10H;改变循环初值DLV3:MOV R3,#0FAHDLV4:CPLP1.5LCALL DELAY2DJNZ R3,DLV4DJNZ R2,DLV3ajmpmaindelay 1:mov r7,#00hLLA:DJNZ R7,LLAretdelay2:mov r7,#128LLB:DJNZ R7,LLBretendORG0000HJMPMAINORG000BHJMPINTTOORG01 OOHMAIN:MOV
27、SP,#60HMOVTMOD,#01HSETBETOSETBEASETBTROSTARTO:;clrPl.5MOV30H,#00HNEXT:MOVA,30HMOVDPTR,#TABLEMOVCA,A+DPTRMOVR2,AJZENDDANLA,#0FHMOVR5,AMOVA,R2SWAPAANLA,#0FHJNZSINGCLRTROJMPDISING:DECAMOV22H,ARLAMOVDPTR,#TABLE1MOVCA,A+DPTRMOVTH0,AMOV21H,AMOVA,22HRLAINCAMOVCA,A+DPTRMOVTL0,AMOV20H,ASETBTRODI:CALLDELAYINC
28、30HJMP NEXTENDD:CLR TROJMP STARTOINTTO:PUSHPSWPUSHACCMOVTL0,20HMOVTH0,21HCPLPl.5POPACCPOPPSWRETIDELAY:MOVR7,#02DELAYO:MOVR4,#187DELAY1:MOVR3,#248DJNZR3,$DJNZ R4,DELAY 1DJNZ R7,DELAYODJNZ R5,DELAYRETTABLE:DB 82Hoi H,81 H,94H,84H,0B4H,0A4H,04HDB 82H,01H,81 H,94H,84H,0C4H,0B4H,04HDB 82H,01 H,81 H,0F4H,
29、0D4H,0B4H,0A4H,94HDB 0E2H,01 H,OE 1 H,0D4H,0B4H,0C4H,0B4H,04HDB 82H,01 H,81 H,94H,84H,0B4H,0A4H,04HDB 82H,01H,81 H,94H,84H,0C4H,0B4H,04HDB 82Ho I H,81 H,0F4H,0D4H,0B4H,0A4H,94HDB 0E2H,01 H,OE 1 H,0D4H,0B4H,0C4H,0B4H,04H/TABLEI:DW 64260,64400,64524,64580,64684,64777,64820,64898/DW 64968,65030,65058,6
30、5110,65157,65178,65217ENDORG OOOOHLIMP STARTORG OOOBHINC 20H;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0EFH;12M晶振,形 成 10毫秒中断RETISTART:MOV SP,#50HMOVMOVMOVMOVMUSICO:NOPMOVMOVMOVMUSIC 1:NOPCLRMOVCJZCJNEM PMUSIC5:NOPMOVINCMOVMOVCMOVSETBMUSIC2:NOPCPLMOVMOVLCALLMOVCJNEMOVINC;INCLIMPMUSIC3:NOPCLRMOVMUSIC4:NOPMOVT
31、H0,#0D8HTL0,#0EFHTMOD,#01HIE,#82HDPTR,#DAT20H,#00HB,#00H;表头地址送DPTR;中断计数器清0;表序号清0AA,A+DPTR;查表取代码ENDO;是00H,则结束A,#0FFH,MUSIC5MUSIC3R6,ADPTRA,BA,A+DPTR;取节拍代码送R7R7,ATRO;启动计数Pl.5A,R6R3,ADELA,R7A,20H,MUSIC2;中断计数器(20H)=R7否?;不等,则继续循环20H,#00H;等于,则取下一代码DPTRBMUSIC 1TRO 淋 止100毫秒R2,#0DHR3,#0FFHLCALL DELDJNZ R2,MU
32、SIC4INC DPTRLJMP MUSIC 1ENDO:NOPMOV R2,#10H;歌曲结束,延 时 1秒后继续MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6UMP MUSICODEL:NOPDEL3:MOV R4,#02HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETNOPDAT:db 26h,20h,20h,20h,20h,20h,26h,10h,20h,l 0h,20h,80h,26h,20h,30h,20hdb 30h,20h,39hJ0h,30h,l0h,30h,80h,26h,20h,20h,20h,20h,20
33、h,lch,20hdb 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,l0h,26h,l 0h,2bh,80h,26h,20hdb 30h,20h,30h,20h,39hJ 0h,26hJ 0h,26h,60h,40hJ Oh,39h 0h,26h,20hdb 30h,20h,30h,20h,39h,l 0h,26h,l 0h,26h,80h,26h,20h,2bh,l0h,2bh,l Ohdb 2bh,20h,30h,l0h,39h,l0h,26h,l0h,2bh,l0h,2bh,20h,2bh,40h,40h,20hdb 20h,l 0h,20h,l0h,2bh,
34、l0h,26h,30h,30h,80h,l 8h,20h,l 8h,20h,26h,20hdb 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20hJ ch,20h,20h,20hdb 20h,80h,l ch,20h,lch,20h,l ch,20h,30h,20h,30h,60h,39h,10h,30h,lOhdb 20h,20h,2bh,l0h,26h,l0h,2bhJ0h,26h,l0h,26h,l0h,2bh,l0h,2bh,80hdb 18h,20h,l 8h,20h,26h,20h,20h,20h,20h,60h,26h,l 0h,2bh
35、,20h,30h,20hdb 30h,20h,l ch,20h,20h,20h,20h,80h,26h,20h,30h,l 0h,30h,10h,30h,20hdb 39h,20h,26h,lOh,2bh,l0h,2bh,20h,2bh,40h,40h,l0h,40h,l0h,20h,lOhdb 20h,l0h,2bh,l0h,26h,30h,30h,80h,00HEND/*继电器实验/*连接方法:连接JP11(P2)与 JP5(按钮接口)/*按下P2.7继电器P1.4动作#include /51的端口和各特殊寄存器定义在此文件中定义继电器对应单片机管脚/定义按钮对应单片机管脚sbit REL
36、AY=P1A4;sbit KI=P2A7;*主函数main()(if(!K 1)RELAY=0;按钮按下 开启继电器else RELAY=1;/按钮松开关闭继电器*实验目的:实验现象:接线方法:138译码器实验1.了 解 138译码器工作原理2.学会用C 语言对138译码器编程控制LED灯每隔一段时间循环点亮J15连 JP1(参考图片连接)*#include sbit HC138A=P2A2;sbitHC138B=P2 八 3;sbit HC138C=P2A4;/定义译码器输入端A 在 P2.2管脚上/定义译码器输入端B在 P2.3管脚上定义译码器输入端C 在 P 2.4管脚上延时函数void
37、 delay(unsigned int i)(unsigned char j;for(i;i 0;i-)循环1500*255次 CPU在这里执行一段时间for(j=255;j0;j-);main()(/点亮第一个LED灯HC138C=0;HC138B=0;HC138A=0;/输入 000delay(1500);延时/点亮第二个LED灯HC138C=0;HC138B=0;HC138A=1;输入 001delay。500);/延时/点亮第三个LED灯HC138C=O;HC138B=l;HC138A=0;delay(1500);/点亮第四个LED灯HC138C=0;HC138B=1;HC138A=1
38、;delay(2000);/输 入 010输入Oil/点亮第五个LED灯HC138C=l;HC138B=0;HC138A=0;delay(1500);输入100/点亮第六个LED灯HC138c=1;HC138B=O;HC138A=1;输入 101delay(1500);HC138C=l;HC138B=l;HC138A=0;输入 110delay(1500);HC138c=I;HC138B=1;HC138A=1;输入 111delay(1500);G 2-G 2 A i G2BInputsOutputsEnableSelectG1G2#CBAY0Y1Y2Y3Y4Y5Y6Y7XHXXXHHHHHH
39、HHLXXXXHHHHHHHHHLLLLLHHHHHHHHLLLHHLHHHHHHHLLHLHHLHHHHHHLLHHHHHLHHHHHLHLLHHHHLHHHHLHLHHHHHHLHHHLHHLHHHHHHLHHLHHHHHHHHHHLHN i Lwlow tow el.X*dontce 74LS 138*标题:试验数码管上如何显示数字(共阳极)*连接方法:P 0 与 JP 3 用 8PIN排线连接*请学员认真消化本例程,用单片机脚直接控制数码管*Ox3F,0 x06,Ox5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x
40、39,0 x5#include void delay(unsigned int i);/此 表 为 L E D 的字模8 9 a b cunsigned char函数声名0 1 2 3 4 5 6 7defcode LED7Code=E,0 x79,0 x71;main()(unsigned int LedNumVal;定义变量while(l)/将字模送到P0 口显示LedNumVal+;P0=LED7CodelLedNumVal%16J&0 x7f;/LED7 0 x7f 为小数点 共阴和共阳此处也是不一样;delay(6000);调用延时程序)延时程序*void delay(unsigne
41、d int i)(char j;for(i;i 0;i-)循环 6000*200 次for(j=200;j0;j-);我5 I极数丁*标题:试验数码管上显示数字(单片机直接实现位选共阴极)*连接方法:P 0与 J1 2 用 8PIN排线连接 P 1与 JP16用排线连接*请学员认真消化本例程,用 573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管*#include void delay(unsigned int i);函数声名char DelayCNT;/定义变量此表为L E D 的字模,共阴数码管0-9-unsigned char code Disp_Tab=0 x3f,0 x06
42、,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40;段码控制此表为8 个数码管位选控制,共阴数码管1-8个-unsigned char code dispbitf8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdF,0 xbF,0 x7F;位选控制查表的方法控制main()unsigned int i,LedNumVal=l;变量定义unsigned int LedOut10J;DelayCNT=O;while(l)变量定义if(+DelayCNT=20)控制数字变化速度(DelayCNT=O;/20个扫描周期清零
43、一次+LedNumVal;每隔20个扫描周期加一次LedOut0=Disp_TabLedNumVal%10000/1000;LedOutl=Disp_TabLedNumVal%1000/100l0 x80;LedOut2=Disp_TabLedNumVal%100/10;LedOut3=Disp_TabLedNumVal%10;LedOut4=Disp_TabLedNumVal%10000/1000;千位LedOut5=Disp_TabLedNumVal%1000/100l0 x80;百位带小数点LedOut6=Disp_TabLedNumVal%100/10;十位LedOut7=Disp_T
44、ab LedNum Vai%10;/个位for(i=0;i 0;i-)for(j=200;j0;j-);)*标题:试验数码管上显示数字(译码器位选共阴极)*连接方法:P 0与J1 2 用 8P1N排线连接*请学员认真消化本例程,用 573锁存器和译码器控制和数码管#include sbit LS138A=P2A2;sbitLS138B=P2 八 3;sbitLS138C=P2A4;定义138译码器的输入A 脚由P2.2控制 定 义 138译码器的输入脚B 由 P2.3控制定义138译码器的输入脚C 由P2.4控制void delay(unsigned int i);函数声名char Delay
45、CNT;此表为L E D 的字模,共阴数码管 09-unsigned char code Disp_Tab=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40;/*主函数*/main()(unsigned int i,LedNumVal;unsigned int LedOut10;DelayCNT=0;while(l)进入循环状态(if(+DelayCNT=50)DelayCNT=0;延时计数 每扫描一次加一次+LedNumVal;/每隔50个扫描周期加一次LedOut0=Disp_TabLedNumVal%100
46、00/1000;LedOutLl J=Disp_TabLedNumVal%1000/100JI0 x80;LedOut2=Disp_TabLedNumVal%100/10;LedOutl3J=Disp_TabLedNumVal%10J;LedOut4=Disp_TabLedNumVal%10000/1000;千位LedOut5=Disp_TabLedNumVal%1000/100l0 x80;/百位带小数点LedOut6=Disp_TabLedNumVal%100/10;十位LedOutl7J=Disp_TabLedNumVal%10;个位for(i=0;i 0;i-)for(j=200;j0
47、;j-);)*标题:74HC573输出使能试验(单片机直接实现位选共阴极)*连接方法:PO与 J1 2 用 8PIN排线连接 P16与 JPU(P2)用排线连接*目的:熟悉74HC573的 LE输出使能控制请学员认真消化本例程,用 573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管*#include#include void delay(unsigned int i);函数声名sbit LE=P”0;定义输出使能控制脚在P1.0上char DelayCNT;/定义变量此表为L E D 的字模,共阴数码管0-9-unsigned char code Disp_Tab=0 x3f,0 x
48、06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40;段码控制此表为8 个数码管位选控制,共阴数码管1-8个-unsigned char code dispbit8J=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdF,0 xbF,0 x7F;位选控制查表的方法控制/*主函数*/main()unsigned int i,LedNumVal=l;变量定义unsigned int LedOutflO;变量定义DelayCNT=0;while(l)(if(+DelayCNT=20)(DelayCNT=0;+LedNumV
49、al;/控制数字变化速度/20个扫描周期清零一次每隔20个扫描周期加一次LedOut01=Disp_TabLedNumVal%10000/1000;LedOutU=Disp_TabLedNum Vai%1000/100J 10 x80;LedOut21=Disp_TabLedNumVal%100/10;LedOutl3J=Disp_TabLedNumVal%10J;LedOut4=Disp_TabLedNumVal%10000/1000;/千位LedOut5=Disp_TabLedNumVal%1000/100l0 x80;百位带小数点LedOut6=Disp_TabLedNumVal%100
50、/10;十位LedOut7=Disp_TabLedNumVal%10;个位for(i=0;i 0;i-)for(j=200;j 0;j-);12345678Y 0FY 2FY 4-Y 5Y 6一Y 700dNDABABCG1-G2G2;二vl.-l一U一udqr ipldarVIGI r-qIdq二FK1D11918r rI T_.?T FQOQ13Q533Q6Q7DOD1D2D3D4D5D6D774LS138_ 12.*标题:试验动静LED灯实现动态控制*连接方法:P0与 J1 2 用 8PIN排线连接 J14短路帽短接*请学员认真消化本例程,用单片机脚直接控制和138译码器控制数码管#in