单片机实验及proteus仿真C语言

上传人:pu****.1 文档编号:494636687 上传时间:2023-12-01 格式:DOC 页数:21 大小:860.50KB
返回 下载 相关 举报
单片机实验及proteus仿真C语言_第1页
第1页 / 共21页
单片机实验及proteus仿真C语言_第2页
第2页 / 共21页
单片机实验及proteus仿真C语言_第3页
第3页 / 共21页
单片机实验及proteus仿真C语言_第4页
第4页 / 共21页
单片机实验及proteus仿真C语言_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《单片机实验及proteus仿真C语言》由会员分享,可在线阅读,更多相关《单片机实验及proteus仿真C语言(21页珍藏版)》请在金锄头文库上搜索。

1、单片机实验:说明,以下是我整理了一些在学习单片机的过程中所做的一些典型的实验,所有程序均用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(v

2、oid) /延时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;

3、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(

4、)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, /

5、第一次,左移一行 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 cha

6、r 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;

7、/ 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; ca

8、se 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 m

9、ain()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-); 实验十一:图:共阴

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号