ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:20.21KB ,
资源ID:8636640      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8636640.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51程序合集 包括流水灯按键蜂鸣器继电器译码器数码管点阵PWM步进电机.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51程序合集 包括流水灯按键蜂鸣器继电器译码器数码管点阵PWM步进电机.docx

1、51程序合集 包括流水灯按键蜂鸣器继电器译码器数码管点阵PWM步进电机 */*按键则点亮LED灯,8路指示灯接p0口 *#include /51的端口和各特殊寄存器定义在此文件中 此包含比不可少sbit LED = P20; /定义LED在P2.0脚上sbit K1 = P00; /定义按钮在P0.0脚上/*/main() if(!K1) LED = 0; /当按键按下对应单片机脚变低电平 LED变低灯亮 else LED = 1; /当松开键按对应单片机脚变高电平 LED变高灯灭/*按键则点亮LED灯,8路指示灯接p0口 #include #include sbit BEEP = P15;s

2、bit RELAY = P14;sbit K1 = P00; sbit K2 = P01;sbit K3 = P02; sbit K4 = P03;sbit K5 = P04; sbit K6 = P05;void beep();main() while(1) P2 = 0xff; if(K1=0) P2 = 0xfe; if(K2 = 0) P2 = 0xfd; if(!K3) P2 = 0xfb; if(!K4) P2 = 0xf7; if (!K5 ) beep(); /喇叭发声 RELAY = 1; if (!K6 ) RELAY = 0; /通过了反相器 void beep() un

3、signed char i , j; for (i=0;i100;i+) BEEP=!BEEP; /BEEP取反 for (j = 0 ; j250 ; j+) /需要产生方波 _nop_(); BEEP=1; /关闭蜂鸣器 * 连续按动按钮LED会不停的左移或右移 #include #include unsigned char scan_key();void proc_key(unsigned char key_v);void delayms(unsigned char ms);sbit K1 = P00; /对应按钮K1sbit K2 = P01; /对应按钮K2main() unsign

4、ed char key_s,key_v; key_v = 0x03; P2 = 0xfe; while(1) key_s = scan_key(); if(key_s != key_v) delayms(10); key_s = scan_key(); if(key_s != key_v) key_v = key_s; proc_key(key_v); unsigned char scan_key() unsigned char key_s; key_s = 0x00; key_s |= K2; key_s = 1; key_s |= K1; return key_s; void proc_k

5、ey(unsigned char key_v) if(key_v & 0x01) = 0) P2 = _cror_(P2,1); else if(key_v & 0x02) = 0) P2 = _crol_(P2, 1); void delayms(unsigned char ms) / 延时子程序 unsigned char i; while(ms-) for(i = 0; i 120; i+); #include /51的端口和各特殊寄存器定义在此文件中 此包含比不可少main() if(!K1) BEEP = 0; /当按键按下对应单片机脚变低电平 BEEP发声 else BEEP =

6、1; /当松开键按对应单片机脚变高电平 BEEP关闭文件名 C51音乐程序(八月桂花) #include #include /本例采用89C52, 晶振为11.0592MHZ /关于如何编制音乐代码, 其实十分简单,各位可以看以下代码. /频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍; /所以拿出谱子, 试探编吧! sbit Beep = P15 ; unsigned char n=0; /n为节拍常数变量 unsigned char code music_tab = 0x18, 0x30, 0x1C , 0x10, /格式为: 频率常数, 节拍常数, 频率常数, 节拍常数, 0

7、x20, 0x40, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x10, 0x1C, 0x10, 0x18 , 0x40, 0x1C, 0x20, 0x20 , 0x20, 0x1C, 0x20, 0x18 , 0x20, 0x20, 0x80, 0xFF , 0x20, 0x30, 0x1C, 0x10 , 0x18, 0x20, 0x15, 0x20 , 0x1C, 0x20, 0x20, 0x20 , 0x26, 0x40, 0x20, 0x20 , 0x2B, 0x20, 0x26, 0x20 , 0x20, 0x20, 0x30, 0x80 , 0xFF, 0

8、x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0

9、x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x30 , 0x80, 0x20, 0x30, 0x1C , 0x10, 0x20, 0x10, 0x1C , 0x10, 0x20, 0x20, 0x26 , 0x20, 0x2B, 0x20, 0x30 , 0x20, 0x2B, 0x40, 0x20 , 0x15, 0x1F, 0x05, 0x20 , 0x10, 0x1C, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0

10、x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x30 , 0x30, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x40, 0x1C , 0x20, 0x20, 0x20, 0x26 , 0x40, 0x13, 0x60, 0x18 , 0x20, 0x15, 0x40, 0x13 , 0x40, 0x18, 0x80, 0x00 ; void int0() interrupt 1 /采用中断0 控

11、制节拍 TH0=0xd8; TL0=0xef; n-; void delay (unsigned char m) /控制频率延时 unsigned i=3*m; while(-i); void delayms(unsigned char a) /豪秒延时子程序 while(-a); /采用while(-a) 不要采用while(a-); 各位可编译一下看看汇编结果就知道了! void main() unsigned char p,m; /m为频率常数变量 unsigned char i=0; TMOD&=0x0f; TMOD|=0x01; TH0=0xd8;TL0=0xef; IE=0x82;

12、 play: while(1) a: p=music_tabi; if(p=0x00) i=0, delayms(1000); goto play; /如果碰到结束符,延时1秒,回到开始再来一遍 else if(p=0xff) i=i+1;delayms(100),TR0=0; goto a; /若碰到休止符,延时100ms,继续取下一音符 else m=music_tabi+, n=music_tabi+; /取频率常数 和 节拍常数 TR0=1; /开定时器1 while(n!=0) Beep=Beep,delay(m); /等待节拍完成, 通过P1口输出音频(可多声道哦!) TR0=0;

13、 /关定时器1 /*/* 继电器实验 */* */* 连接方法:连接JP11(P2)与JP5(按钮接口) */* 按下P2.7 继电器P1.4动作 * 注意:通过了74HC14控制ULN2003 驱动芯片驱动继电器 * */*/#include /51的端口和各特殊寄存器定义在此文件中sbit RELAY = P14; /定义继电器对应单片机管脚sbit K1 = P27; /定义按钮对应单片机管脚/*主函数 */main() if (!K1) RELAY = 0; /按钮按下 开启继电器 else RELAY = 1; /按钮松开 关闭继电器 * 138译码器实验 * #include sb

14、it HC138A = P22; /定义译码器输入端A 在 P2.2 管脚上sbit HC138B = P23; /定义译码器输入端B 在 P2.3 管脚上sbit HC138C = P24; /定义译码器输入端C 在 P2.4 管脚上void delay(unsigned int i) unsigned char j; for(i; i 0; i-) for(j = 255; j 0; j-);main()/ 点亮第一个LED灯HC138C = 0; HC138B = 0; HC138A = 0; delay(1500); /延时/ 点亮第二个LED灯HC138C = 0; HC138B =

15、 0; HC138A = 1;delay(1500); /延时/ 点亮第三个LED灯HC138C = 0; HC138B = 1; HC138A = 0;delay(1500);/ 点亮第四个LED灯HC138C = 0; HC138B = 1; HC138A = 1;delay(2000);/ 点亮第五个LED灯HC138C = 1; HC138B = 0; HC138A = 0;delay(1500);/ 点亮第六个LED灯HC138C = 1; HC138B = 0; HC138A = 1;delay(1500);HC138C = 1; HC138B = 1; HC138A = 0;de

16、lay(1500);HC138C = 1; HC138B = 1; HC138A = 1;delay(1500);* 标题: 试验数码管上如何显示数字(共阳极) *#include #include #define NOP() _nop_() /* 定义空指令 */void delay(unsigned int i); /函数声名/ 此表为 LED 的字模 unsigned char code LED7Code = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71;main() uns

17、igned int LedNumVal=1 ,C ; /定义变量 while(1) if (+C= 300) LedNumVal+ ; /每隔300个扫描周期加一次 C =0; /每隔300个扫描清零 / 将字模送到P0口显示 P0 = LED7CodeLedNumVal%10&0x7f; /LED7 0x7f为小数点 共阴和共阳此处也是不一样; delay(150); /调用延时程序 void delay(unsigned int i) char j; for(i; i 0; i-) for(j = 200; j 0; j-);* 标题: 试验数码管上显示数字( 单片机直接实现位选 共阴极)

18、 #include #include void delay(unsigned int i); /函数声名char DelayCNT;/定义变量 /此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /段码控制/此表为8个数码管位选控制, 共阴数码管 1-8个 - unsigned char code dispbit8=0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F; /位选控制 查表的方法控制/

19、*主函数*/ main() unsigned int i,LedNumVal=1 ; /变量定义 unsigned int LedOut10; /变量定义 DelayCNT=0;while(1) if(+DelayCNT=20) /控制数字变化速度 DelayCNT=0; /20个扫描周期清零一次 +LedNumVal; /每隔20个扫描周期加一次 LedOut0=Disp_TabLedNumVal%10000/1000; LedOut1=Disp_TabLedNumVal%1000/100|0x80; LedOut2=Disp_TabLedNumVal%100/10; LedOut3=Dis

20、p_TabLedNumVal%10; LedOut4=Disp_TabLedNumVal%10000/1000; /千位 LedOut5=Disp_TabLedNumVal%1000/100|0x80; /百位带小数点 LedOut6=Disp_TabLedNumVal%100/10; /十位 LedOut7=Disp_TabLedNumVal%10; /个位 for( i=0; i 0; i-) for(j = 200; j 0; j-);* 标题: 试验数码管上显示数字(译码器位选 共阴极) *#include #include sbit LS138A = P22; /定义138译码器的输

21、入A脚由P2.2控制 sbit LS138B = P23; /定义138译码器的输入脚B由P2.3控制sbit LS138C = P24; /定义138译码器的输入脚C由P2.4控制void delay(unsigned int i); /函数声名char DelayCNT; /此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /*主函数*/ main() unsigned int i,LedNumVal=1 ; unsig

22、ned int LedOut10; DelayCNT=0; while(1) /进入循环状态 if(+DelayCNT=50) DelayCNT=0; /延时计数 每扫描一次加一次 +LedNumVal; /每隔50个扫描周期加一次 LedOut0=Disp_TabLedNumVal%10000/1000; LedOut1=Disp_TabLedNumVal%1000/100|0x80; LedOut2=Disp_TabLedNumVal%100/10; LedOut3=Disp_TabLedNumVal%10; LedOut4=Disp_TabLedNumVal%10000/1000; /千

23、位 LedOut5=Disp_TabLedNumVal%1000/100|0x80; /百位带小数点 LedOut6=Disp_TabLedNumVal%100/10; /十位 LedOut7=Disp_TabLedNumVal%10; /个位 for( i=0; i 0; i-) for(j = 200; j 0; j-);* 标题: 试验动静LED灯实现动态控制 #include #include sbit LED8_1=P11; /j14接在P1.1上void delay(unsigned int i); /函数声名char DelayCNT;char LED; main() LED = 0x01; DelayCNT=0; while(1) if(+DelayCNT=10) /点亮动静LED灯速度控制 DelayCNT=0; LED = LED 1; / 左移

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1