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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(单片机程序源代码.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机程序源代码.docx

1、单片机程序源代码第二章任务一:闪烁广告灯的设计 利用89c51单片机的端口控制两个LED(D0和D1),编写程序,实现两个LED互闪。#include#define uint unsigned int#define uchar unsigned charsbit LED1=P00;sbit LED2=P01;void delayms(uint ms)uint i;while(ms-)for(i=0;iD3-D4-D5 -D6-D7 ,然后再点亮D7-D6-D5-D4 -D3-D2-D1-D0,重复循环。#include#include #define uint unsigned int#def

2、ine uchar unsigned charuint i;uchar temp;uint a8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;void delayms(uint ms)while(ms-) uint j;for(j=0;j120;j+);void main()while(1)P0=0xfe;while(P0!=0x7f)/P1=temp;/delayms(500); P0=_crol_(P0,1);delayms(250);temp=0x7f;while(P0!=0xfe)P0=temp;delayms(500);temp=_cror_(te

3、mp,1); 任务三:拉幕式与闭幕式广告灯的设计 利用 89c51 单片机的 P0端口实现 8个 LED D0D7 的拉幕式与闭幕式广告灯设计。拉幕式: 开始D0D7 全灭,延时片刻后首先 D3和 D4亮,其次是 D2和D5亮,再是D1 和 D6 亮,最后是 D0 和 D7 亮。闭幕式:开始 D0D7 全亮,延时片刻后首先 D0 和 D7 灭,其次是 D1 和 D6 灭,再是 D2 和 D5 灭,最后是 D3 和 D4 灭。#include#define uint unsigned int#define uchar unsigned charuchar code table=0xe7,0xc3

4、,0x81,0x00;void delay(uint x)uint i,j;for(i=x;i0;i-) for(j=120;j0;j-);void main()uint i;while(1)P1=0xff;delay(500);for(i=0;i0;i-)P1=tablei-1; delay(500);任务四:复杂广告灯的设计利用 89c51 单片机的端口实现 8 个 LED(D0D7)复杂广告灯的控制,要求显示规律为: 正向流水-反向流水-隔灯闪烁 3 次-高四盏、低四盏闪烁 2 次-隔两盏闪烁 3 次,再重复 循环。#include#define uint unsigned int#in

5、cludevoid delayms(uint ms)uint i;while(ms-)for(i=0;i110;i+);void main()uint i,j,xx2=0xaa,0xff,yy2=0xf0,0x0f,zz2=0xb6,0xff;unsigned char aa;while(1)aa=0xfe;for(i=0;i7;i+)P0=aa;aa=_crol_(aa,1);delayms(500);for(i=0;i8;i+)P0=aa;aa=_cror_(aa,1);delayms(500);for(i=0;i3;i+)for(j=0;j2;j+)P0=xxj; delayms(500

6、);for(i=0;i2;i+)for(j=0;j2;j+)P0=yyj ; delayms(500);for(i=0;i3;i+)for(j=0;j2;j+)P0=zzj ;delayms(500);任务五:单个LED数码管显示设计使用 89c51 的 P0 口作为输出口,外接 LED 数码管,编写程序,使数码管循环显示从 09 的加 1 计数。#include#define uint unsigned int#define uchar unsigned charuchar table10= 0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;

7、uint key=0;void int_int()EA=1;IT0=1;EX0=1;void count_num() interrupt 0if(key=9)key=0;else key+;void main()int_int();while(1)P0=tablekey;任务六:多个LED数码管显示设计使用单片机 P0和 P2口作为输出口,外接一个 8 位LED数码管,编写程序,使数码管显示 “872AF635”。#include#include#define uint unsigned int#define uchar unsigned chardelay(ms)while(ms-) int

8、 i;for(i=0;i110;i+);main()uchara16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; uchar b8=0x08,0x07,0x02,0x0a,0x0f,0x06,0x03,0x05,j;uint i;while(1) j=0x01;for(i=0;i8;i+)P2=j;P0=abi;j=_crol_(j,1);delay(3);任务七:查询式按键设计将 8 个按键从 18 进行编号,如果其中一个键被按下,则在 LED 数码管上显示相应的键值。 #i

9、nclude#define uint unsigned int#define uchar unsigned charmain()uchara16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;P0=0xff;while(P0!=0xff) switch(P0)case 0xfe:P2=a1; break;case 0xfd:P2=a2; break;case 0xfb:P2=a3; break;case 0xf7:P2=a4; break;case 0xef:P2=a5; brea

10、k;case 0xdf:P2=a6; break;case 0xbf:P2=a7; break;case 0x7f:P2=a8;任务八:LED数码管显示矩阵键盘按键的设计设计一个 4*4 的矩阵键盘,以 P1.0P1.3 作为行线,以 P1.4P1.7 作为列线。要求:未按下 按键时,LED 数码管显示“-”,按下按键时,在数码管上显示相应的键值。#include#define uchar unsigned char#define uint unsigned intuchartable17=0xbf,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x

11、90,0x88,0x83,0xc6,0xa1,0x8 6,0x8e;uint num=0;void delay(uint x)uchar i,j;for(i=x;i0;i-) for(j=120;j0;j-);keyscan() uint temp;temp=P2;temp&=0x0f;if(temp=0x0e)P2=0xf0;temp=P2;temp&=0xf0;switch(temp)case 0xe0:num=1;break;case 0xd0:num=2;break;case 0xb0:num=3;break;case 0x70:num=4;if(temp=0x0d)P2=0xf0;t

12、emp=P2;temp&=0xf0;switch(temp)case 0xe0:num=5;break;case 0xd0:num=6;break;case 0xb0:num=7;break;case 0x70:num=8;if(temp=0x0b)P2=0xf0;temp=P2;temp&=0xf0;switch(temp)case 0xe0:num=9;break;case 0xd0:num=10;break;case 0xb0:num=11;break; case 0x70:num=12;if(temp=0x07)P2=0xf0;temp=P2;temp&=0xf0; switch(te

13、mp) case 0xe0:num=13;break; case 0xd0:num=14;break; case 0xb0:num=15;break; case 0x70:num=16;return num;void display(uint num) if(num=0)P0=0xbf;P0=tablenum ;main()uint temp;while(1)P2=0x0f;temp=P2; if(temp!=0x0f) keyscan();display(num);(2)#include#define uchar unsigned char#define uint unsigned int

14、sbit LED1=P20;sbit LED2=P21;uchar num;uchar code LED_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e ;/数码管字形码编码 void delay(uint x) uchar i,j;for(i=x;i0;i-)for(j=120;j0;j-);/延时函数void display(uchar num)P0=LED_codenum;/数码管显示函数void keyscan()/键盘扫描函数uchar temp;P1=0xfe;

15、/key1-key4 第一行按下temp=P1;temp&=0xf0;if(temp!=0xf0)delay(10);/ 消除抖动temp=P1;temp&=0xf0;if(temp!=0xf0)temp=P1;switch(temp)case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e: num=4; break; while(temp!=0xf0)/ 等待按键释放 temp=P1; temp&=0xf0;P1=0xfd;/key5-key8 第二行按下 temp=P1;temp&=0xf0;

16、if(temp!=0xf0) delay(10);/ 消除抖动 temp=P1;temp&=0xf0; if(temp!=0xf0) temp=P1; switch(temp) case 0xed: num=5; break;case 0xdd: num=6; break;case 0xbd: num=7; break;case 0x7d: num=8; break; while(temp!=0xf0)/ 等待按键释放 temp=P1; temp&=0xf0;P1=0xfb;/key9-key12 第三行按下(duio;)qo;TMS f d=duq(OJXO=id 啊尹 :0JXO=茅 du

17、 fd=duqQW(oi)xbi9p (OJXO= ids :0JXo=茅 dura f d=duq91 心平 I 心*/:ZJXO=Id :0JXo=茅 dura (J=dus; /(OJXO= i dui9j)9qM 沏EaIqP=UHUI:q/(XQ OSnO沏EaIqi.=vaxm:qqx OSnO沏EaIq!q j=unu:qpx OSnO沏EaIq M=TOUi:qoxQ OSnO (duio;)qo;TMS (J=dus; (OJXO=id 啊尹 :0JXO=茅 du fd=duqQW(oi)xbi9p (OJXO= ids :0JXo=茅 dura f d=duqcase 0x

18、e7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;while(temp!=0xf0)/ 等待按键释放temp=P1; temp&=0xf0;void main()while(1)keyscan();if(num=0)P0=0xbf;elsedisplay(num-1); 任务九:简单拨号键盘的设计使用 4*4的矩阵式键盘及8位共阳极LED 数码管设计一个简单拨号键盘,要求在初始状态 时,8 位数码管均显示“-”,每按下一个号码后,原 8 位 LED 数码管显示的内容向左移动

19、1 位。#include#include#define uint unsigned int#define uchar unsigned charuchar keycount=0,num;uchar code LED1_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/数码管字形码编码uchar LED2_duan8=0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf;/8 段共阳数码管编码uchar LED2_wei8= 0x80,0x40,0x

20、20,0x10,0x08,0x04,0x02,0x01;void delay(uint x)uchar i,j;for(i=x;i0;i-)for(j=120;j0;j-);void display()uchar i;/P2=0x80;for(i=0;i8;i+)P2=LED2_weii;P0=LED2_duan7-i;delay(1);void keyscan()uchar temp;P3=0xfe;temp=P3;temp&=0xf0;if(temp!=0xf0)delay(10);temp=P3;temp&=0xf0;if(temp!=0xf0)temp=P3;switch(temp)c

21、ase 0xee:keycount+;num=0;break;case 0xde:keycount+;num=1;break;case 0xbe:keycount+;num=2;break;case 0x7e:keycount+;num=3;break; while(temp!=0xf0)temp=P3; temp&=0xf0;P3=0xfd;temp=P3; temp&=0xf0;if(temp!=0xf0)delay(10);temp=P3; temp&=0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xed:keycount+;num=4;bre

22、ak;case 0xdd:keycount+;num=5;break;case 0xbd:keycount+;num=6;break;case 0x7d:keycount+;num=7;break; while(temp!=0xf0)temp=P3; temp&=0xf0;P3=0xfb;temp=P3; temp&=0xf0;if(temp!=0xf0)delay(10);temp=P3; temp&=0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xeb:keycount+;num=8;break;case 0xdb:keycount+;num=9

23、;break;case 0xbb:keycount+;num=10;break;case 0x7b:keycount+;num=11;break; while(temp!=0xf0)temp=P3; temp&=0xf0;P3=0xf7;temp=P3; temp&=0xf0;if(temp!=0xf0)delay(10);temp=P3; temp&=0xf0;if(temp!=0xf0)temp=P3;switch(temp)case 0xe7:keycount+;num=12;break;case 0xd7:keycount+;num=13;break;case 0xb7:keycoun

24、t+;num=14;break;case 0x77:keycount+;num=15;break; while(temp!=0xf0)temp=P3; temp&=0xf0;void main()uchar i;while(1)display();keyscan();if(keycount!=0)for(i=0;i右移流水-隔灯闪烁 3次花样显示;如果按下 K键 后,8只 LED 暂停默认显示,而进行闪烁显示,当显示达到 5次后,继续按默认规律显示。#include#define uint unsigned int#define uchar unsigned charuint LED_tabl

25、e14=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd; void delayms(uint ms)uint i;while(ms-)for(i=0;i120;i+);void int_int()EA=1;EX0=1;IT0=1;void LED_shan() interrupt 0uint k;for(k=0;k5;k+)P0=0xaa;delayms(500);P0=0xff;delayms(500);void main()int_int();while(1) uint i;for(i=0;i14;i+) P0=LED_tablei; delayms(500); for(i=0;i3;i+)P0=0xaa; delayms(500);P0=0xff; delayms(500); 任务二:采用外中断控制的条形LED彩灯设计P0端口作为输出口,外接条形LED。编写程序,当按键K 未按下时,LED 进行循环左移显 示。如果第 1 次按下按键K 后,LED进行循环右移显示。如果第 2次按下按键 K 后,LED 进行拉幕式与闭幕式花样显示。如果第 3次按下按键 K 后,又恢复循环左移显示。 #include unsigned char flag=0; /状态标志位

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

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