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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机程序源代码.docx

1、单片机程序源代码第二章任务一:闪烁广告灯的设计利用89c51单片机的端口控制两个LED(D0和D1),编写程序,实现两个LED互闪。 #include #define uint unsigned int #define uchar unsigned char sbit 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

2、 int#define 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; delaym

3、s(500); temp=_cror_(temp,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,0x81,0x00;v

4、oid 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 #include void de

5、layms(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; dela

6、yms(500); 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 char uchar table10= 0XC0,0XF9,0XA4,0XB0, 0X99,0X92,0X82,0XF8,

7、0X80,0X90;uint key=0;void int_int() EA=1; IT0=1; EX0=1;void count_num() interrupt 0 if(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)

8、 while(ms-) int i; for(i=0;i110;i+); main() uchar a16=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进行编号,如果其中一个键被按下

9、,则在LED数码管上显示相应的键值。#include#define uint unsigned int#define uchar unsigned charmain() uchar a16=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

10、=a4; break; case 0xef: P2=a5; break; 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 intuchar table17=0xbf,0xc0,0xf9,0xa

11、4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,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;

12、break; case 0x70:num=4; if(temp=0x0d) P2=0xf0; temp=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

13、0x70:num=12; if(temp=0x07) P2=0xf0; temp=P2; temp&=0xf0; switch(temp) 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(); dis

14、play(num); (2)#include#define uchar unsigned char#define uint unsigned intsbit 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 disp

15、lay(uchar num) P0=LED_codenum;/数码管显示函数void keyscan()/键盘扫描函数 uchar temp;P1=0xfe;/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; br

16、eak; while(temp!=0xf0)/等待按键释放 temp=P1; temp&=0xf0; P1=0xfd;/key5-key8第二行按下 temp=P1; temp&=0xf0; 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!=0xf

17、0)/等待按键释放 temp=P1; temp&=0xf0; P1=0xfb;/key9-key12第三行按下 temp=P1; temp&=0xf0; if(temp!=0xf0) delay(10);/消除抖动 temp=P1; temp&=0xf0; if(temp!=0xf0) temp=P1; switch(temp) case 0xeb: num=9; break; case 0xdb: num=10; break; case 0xbb: num=11; break; case 0x7b: num=12; break; while(temp!=0xf0)/等待按键释放 temp=P

18、1; temp&=0xf0; P1=0xf7;/key13-key16第四行按下 temp=P1; temp&=0xf0; if(temp!=0xf0) delay(10);/消除抖动 temp=P1; temp&=0xf0; if(temp!=0xf0) temp=P1; switch(temp) case 0xe7: 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;

19、 void main() while(1) keyscan(); if(num=0) P0=0xbf; else display(num-1); 任务九:简单拨号键盘的设计使用4*4的矩阵式键盘及8位共阳极LED数码管设计一个简单拨号键盘,要求在初始状态时,8位数码管均显示“-”,每按下一个后,原8位LED数码管显示的内容向左移动1位。#include#include#define uint unsigned int #define uchar unsigned charuchar keycount=0,num;uchar code LED1_code= 0xc0,0xf9,0xa4,0xb0

20、, 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,0x20,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;i

21、8;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) case 0xee:keycount+;num=0;break; case 0xde:keycount+;num=1;break; case 0xbe:keycount+;num=2;break; case 0x7e:key

22、count+;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;break; case 0xdd:keycount+;num=5;break; case 0xbd:keycount+;num=6;break; case 0x7d:keycount+;num=7;br

23、eak; 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;break; case 0xbb:keycount+;num=10;break; case 0x7b:keycount+;num=11;break; while(te

24、mp!=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:keycount+;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;i7;i+) LED2_duani=LED2_duani+1; LED2_duan7=LED1_codenum; keycount=0; 第五章

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

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