预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编号:时间:2021年x月x日书山有路勤为径学海无涯苦作舟页码:单片机编程培训(可用C语言/汇编语言)要求:每周做一个实验(共六周)做完后要写好实验总结(侧重于对实验内容的认识与心得)并提交。实验有用编程软件(如KEIL)做然后用仿真软件(如proteus)或单片机(如情况允许)调试仿真;实验要自己独立完成可参考一些例程。I/0口控制:P1口接八个独立按键P3口接八个LED灯。当P1口有按键按下时P3口对应的灯亮。流水灯:循环控制八个LED灯。数码管动态扫描:八个数码管每位显示不同的数字。独立按键与数码管显示:对若干个独立按键赋予不同的数值当键盘按下时数码管显示数字。矩阵键盘:掌握行列扫描方法和去抖方法;定时器/中断:主程序:自己设计(如点亮LED1灯);定时器0中断程序:自己设计(如主程序的LED1灯熄灭点亮另外一盏LED2灯。);要求中断过后(LED2灯灭)主程序正常执行(LED1灯亮);02.点亮P1口的一个灯03.IO口信号输入while(1){P1=P3;}04.IO读写操作程序按下P3口的按键P1显示相应的位置#include<reg52.h>sbitKEY=P3^0;//定义按键的接口sbitLED=P1^0;//定义灯的接口voidmain(void){P1=0xFF;//所有的灯灭while(1){LED=KEY;//灯的状态由按键的状态决定}}05.流水灯#include<reg52.h>voiddelay(unsignedintcnt){while(--cnt);}main(){P1=0xfe;//给初始化值换算成二进制是11111110while(1){delay(3000);//延时程序P1<<=1;//左移一位该语句等效于P1=P1<<1P1|=0x01;//最后一位补1该语句等效于P1=P1|0x01符号"|"表示"或"if(P1==0x7f)//检测是否移到最左端?"=="表示检测符号2端的值是否相等{delay(30000);P1=0xfe;//重新赋值}}}06.//按下P3口的按键P1显示相应的位置IO读写操作程序sfrP1=0x90;/*SFRdefinitionforPort1*/sfrP3=0xB0;/*SFRdefinitionforPort3*/voidmain(void){unsignedcharpval;P1=0xFF;while(1){pval=P3;/*ReadP1intopval*/P1=pval;/*WritepvaltoP3*/}}08.数码管动态扫描#include<reg52.h>Unsignedcharconstdofly[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};//显示段码值01234567unsignedcharcodeseg[]={01234567};//分别对应相应的数码管点亮即位码voiddelay(unsignedintcnt){while(--cnt);}main(){unsignedchari;while(1){P0=dofly[i];//取显示数据段码P2=seg[i];//取位码delay(200);//扫描间隙延时时间太长会闪烁太短会造成重影i++;if(8==i)//检测8位扫描完全?i=0;}}11.独立按键内容:切换到独立按键模式通过按键在数码管显示对应的数字#include<reg52.h>sbitkey1=P3^0;//定义按键位置sbitkey2=P3^1;sbitkey3=P3^2;sbitkey4=P3^3;voiddelay(unsignedintcnt){while(--cnt);}main(){P2=0x00;while(1){if(!key1)//按下相应的按键数码管显示相应的码值P0=0x06;//数码管显示"1"i