已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机实验:说明,以下是我整理了一些在学习单片机的过程中所做的一些典型的实验,所有程序均用c语言编写,为了方便,在仿真时电路能省的都被省掉了(比如省去晶振用了外部时钟)。程序不一定很优化,也不一定完全没有错误,仅供大家参考。希望大家一块学习!第一:i/o操作篇实验一.闪烁的灯图:程序:#include at89x51.hvoid delay02s();void main(void)while(1) p1_0=0; /p1.0=0 led点亮 delay02s(); /延时0.2s p1_0=1; /p1.0=1 led熄灭 delay02s(); /延时0.2s void delay02s(void) /延时0.2s的函数unsigned char i,j,k; for(j=20;j0;j-) for(i=20;i=0;i-) for(k=248;k=0;k-); 实验二:模拟开关程序:#include at89x51.hvoid main() while(1) if (p1_7=0) p1_0 = 0;/key按下p1_7=0,led点亮 else if ( p1_7=1) p1_0 = 1;/key弹起p1_7=1,led熄灭 实验三: 多路开关程序:#include at89x51.hvoid main()while(1) p1_0 = p1_7; p1_1 = p1_6; p1_2 = p1_5; p1_3 = p1_4; 实验四:跑马灯(一)图:程序:/单一灯的左移右移/八个发光二极管l1l8分别接在单片机的p1.0p1.7接口上/输出“0”时,发光二极管亮,开始时p1.0p1.1p1.2p1.3p1.7p1.6p1.0亮,重复循环。#include at89x51.hvoid delay02s();void main()unsigned int a; while (1) p1=0xfe; delay02s(); for(a=7;a0;a-)/右移 p1=(p10;a-)/左移 p1=(p11)+0x80; delay02s(); void delay02s()unsigned int i,j,k; for(i=0;i20;i+) for(j=0;j20;j+) for(k=0;k248;k+);实验五:跑马灯(二、查表方式)图:程序:#include at89x51.hvoid delay02s(); void main()unsigned char table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /第一次,右移一行 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /第二次,右移一行 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, /第一次,左移一行 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, /第二次,左移一行 0x00,0xff,0x00,0xff; /闪烁两次 unsigned char a; while(1) for (a=0;a0;i-) for(j=20;j0;j-) for(k=248;k0;k-);实验六:led计数程序:#include void delay02s(); void main() unsigned char code table=0x40,0xf9,0x24,0x30,0x19,0x12,0x03,0xf8,0x00,0x18; unsigned char disp; while(1) for(disp=0;disp0;i-) for(j=20;j0;j-) for(k=248;k0;k-); 实验七:二进制计数程序:/用四个发光二极管模拟计数点击开关次数.#include at89x51.hvoid delay10ms();void main()p0=0xff; while(1) /*/ if(p0_7=1) /按键按下 delay10ms(); if(p0_7=0) /按键弹起,此时灯亮. p0=p0-1; /*/ if(p0_7=0) /按键弹起 delay10ms(); if(p0_7=1) /按键按下,此时灯亮. p0=p0-1; / void delay10ms() unsigned char i,j; for(i=20;i0;i-) for(j=248;j0;j-); 验八:一键多用程序:#include at89x51.hvoid delay10ms();void delay02s();void main()unsigned char id=0; while(1) if(p1_7=0) /按键弹起 delay10ms(); if(p1_7=0) id+; if(id=4) id=0; while(p1_7=0); switch(id) case 0: p0_0=p0_0; delay02s(); break; case 1: p0_1=p0_1; delay02s(); break; case 2: p0_2=p0_2; delay02s(); break; case 3: p0_3=p0_3; delay02s(); break; void delay10ms()unsigned char i,k; for(i=20;i0;i-) for(k=248;k0;k-);void delay02s()unsigned char j; for(j=20;j0;j-) delay10ms();实验九:0099计数程序:/0099计数器#include at89x51.hvoid delay1s();void main()unsigned char code table=0xf9,0x24,0x30,0x19,0x12,0x03,0xf8,0x00,0x18,0x40; unsigned int high=9; unsigned int light=9; p0=tablelight; p2=tablehigh; delay1s(); while(1) for(light=0;light0;i-) for(j=20;j0;j-) for(k=248;k0;k-);实验十:可预置数加减计数器程序:/k1(p3_7)加计数.k2(p3_6)头减计数.#include at89x51.hvoid delay02s();void delay10ms();void main()p0=p2; while(1) if(p3_6=0) delay10ms(); if(p3_6=0) p0+; delay02s(); if(p3_7=0) delay10ms(); if(p3_7=0) p0-; delay02s(); void delay02s()unsigned char j; for(j=20;j0;j-) delay10ms();void delay10ms()unsigned char i,k; for(i=20;i0;i-) for(k=248;k0;k-); 实验十一:图:共阴led程序:/开关按下时显示12345,开关弹起时显示hello.#include void delay01ms();void main(void) unsigned char code table1=0xf9,0x24,0x30,0x19,0x12,0xff,0xff,0xff; unsigned char code table2=0x09,0x06,0xc7,0xc7,0x40,0xff,0xff,0xff; unsigned char i; while(1) p2=0xfe; if(p1_0=0) delay01ms(); if(p1_0=0) for(i=0;i8;i+) p0=table1i; p2=(p21)+1; else if(p1_0=1) delay01ms(); if(p1_0=1) for(i=0;i8;i+) p0=table2i; p2=(p20;a-) for(b=248;b0;b-); 实验十二、4*4键盘图:程序:#include at89x51.h void delay10ms();void main()unsigned char key; unsigned char table=0x40,0xf9,0x24,0x30,0x19,0x12,0x03,0xf8,0x00,0x18,0x08,0x00,0x46,0x40,0x06,0x0e, 0xff; while(1) p0=0xff; p3=0xff; p3_4=0; key=p3&0x0f; if(key!=0x0f) delay10ms(); key=p3&0x0f; if(key!=0x0f) switch(key) case 0x0e: key=0;break; case 0x0d: key=1;break; case 0x0b: key=2;break; case 0x07: key=3;break; p0=tablekey; key=key&0x0f; while(key!=0x0f) key=p3; key=key&0x0f; p3=0xff; p3_5=0; key=p3&0x0f; if(key!=0x0f) delay10ms(); key=p3&0x0f; if(key!=0x0f) switch(key) case 0x0e: key=4;break; case 0x0d: key=5;break; case 0x0b: key=6;break; case 0x07: key=7;break; p0=tablekey; key=key&0x0f; while(key!=0x0f) key=p3; key=key&0x0f; p3=0xff; p3_6=0; key=p3&0x0f; if(key!=0x0f) delay10ms(); key=p3&0x0f; if(key!=0x0f) switch(key) case 0x0e: key=8;break; case 0x0d: key=9;break; case 0x0b: key=10;break; case 0x07: key=11;break; p0=tablekey; key=key&0x0f; while(key!=0x0f) key=p3; key=key&0x0f; p3=0xff; p3_7=0; key=p3&0x0f; if(key!=0x0f) delay10ms(); key=p3&0x0f; if(key!=0x0f) switch(key) case 0x0e: key=12;break; case 0x0d: key=13;break; case 0x0b: key=14;break; case 0x07: key=15;break; p0=tablekey; key=key&0x0f; while(key!=0x0f) key=p3; key=key&0x0f; void delay10ms() unsigned int i,k; for(i=20;i0;i-) for(k=20;k0;k-); 实验十三 lcd原理图:程序:#include at89x52.h#define lcd_rs p3_2#define lcd_rw p3_1#define lcd_en p3_0#define lcd_data p1void writecmd(int a) /写控制字int i; for(i=2000;i0;i-); lcd_rs=0; lcd_rw=0; lcd_en=1; lcd_data=a; lcd_en=0;void writedata(char lcddata) /显示字符int i; for(i=2000;i0;i-); lcd_rs=1; lcd_rw=0; lcd_en=1; lcd_data=lcddata; lcd_en=0;void writestring(char addr,char *str) /显示字符串writecmd(addr); do writedata(*str); str+; while(*str!=0); /=lcd初始化= void lcdinit() writecmd(0x38);/8位,两行,5x7字型 (控制字001 d1 d2 d3 x x , 其中 d1:数据长度选择(8位或4位),d2:单双列选择,d3:5x10或5x7字型选择) writecmd(0x08); /关闭
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融安全考试试题及答案
- 家庭教育新观念现代父母的教育方法与技巧
- 达丰汽车修理厂的各项规章制度
- 妇产科护士长服务质量管理方案
- 地产面试面试技巧指导提高面试通过率的策略
- (完整版)数学初一分班模拟测试题目
- 商务谈判技巧策略制定与沟通话术解析
- (完整版)数学新初一分班综合测试试卷A卷
- (完整版)新初一分班数学模拟测试真题A卷解析
- 扶贫造假实战案例解析与职业选择方向
- 如何在体育教学中实施有效的PBL策略
- 2025年大学英语四级考试模拟试卷一
- 2025年江苏盐城市水务集团有限公司招聘笔试参考题库含答案解析
- 《Lesson 1 I have a new pene》(说课稿及反思)-2024-2025学年鲁科版(五四学制)(三起)(2024)英语三年级上册
- 高山滑雪知到智慧树章节测试课后答案2024年秋哈尔滨体育学院
- 【MOOC答案】《无线物联网基础与应用》(北京邮电大学)中国慕课章节作业网课答案
- 公路冬季施工安全培训
- 《教育向美而生-》读书分享课件
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
- 行政伦理学教程(第四版)课件 第3章 行政理性与行政价值
- 闭合性颅脑损伤重型个案护理
评论
0/150
提交评论