1、本科单片机c语言实验手册实验报告可编辑修改word版单片机C语言程序设计实验手册院 系 信息工程学院 专 业 物联网工程 学 生 姓 名 宋 增 学 号 5006130037 指 导 教 师 王 闯 许昌学院信息工程学院实验情况一览表实验序号实验名称实验性质学时性质实验一单片机最小系统验证性实验2必做实验二点亮一盏灯验证性实验2必做实验三流水灯验证性实验2必做实验四脉冲触发外部中断验证性实验2必做实验五电平触发外部中断验证性实验2必做实验六定时器综合性实验2必做实验七定时器方波脉冲验证性实验2必做实验八计数器验证性实验2必做实验九数码管显示验证性实验2必做实验十键盘扫描验证性实验2必做实验十一
2、串行通信验证性实验2必做实验十二液晶显示 1602验证性实验2必做实验十三I2C 串行总线验证性实验2必做实验十四A/D 转换 ADC0809验证性实验2必做实验十五D/A 转换 DAC0832验证性实验2必做实验一 单片机最小系统班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的掌握 51 单片机工作的最基本电路,理解最小系统的硬件电路连接。二、实验要求用 Proteus 画出最小系统电路图。三、实验仿真(画出实验电路)四、总结碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。五、评语实验二 点亮一盏灯班级 、 姓名 、 学
3、号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的了解二极管的显示原理,掌握二极管显示的编程方法,理解二极管与单片机的硬件电路连接。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出实验电路)四、实验程序#include #define uint unsigned int#define uchar unsigned char sbit led=P27;void main()while(1)led=1;五、总结:单片机课是一门实践性很强的课程,仅有
4、课堂上理论知识的学习,对运用好单片机是完全不够的,必须亲自做实验,从实验中吸取教训,总结经验,增加实战经验,加深对单片机的理解,更好的运用单片机。六、评语实验三 流水灯班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的了解二极管的显示原理,掌握二极管流水显示的编程方法,理解二极管与单片机的硬件电路连接。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出实验电路)四、实验程序#include #include #define
5、uint unsigned int#define uchar unsigned char void delay(uint);void main()P2=0x01;while(1)delay(500);P2=_crol_(P2,1);void delay(uint x)uint i,j; for(i=x;i0;i-)for(j=110;j0;j-);五、总结:单片机实验课让我将课堂上学到的理论知识运用到实验当中去,在实验中发现问题,解决问题,强化理论知识的运用。六、评语实验四 脉冲触发外部中断班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的了解
6、中断的原理,掌握脉冲触发方式中断的编程方法,理解编写中断程序用到的寄存器。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出实验电路)四、实验程序#include #include #define uint unsigned int#define uchar unsigned char void delay(uint);void main()EA=1;EX0=1;IT0=1;P1=0x00;P2=0x01;while(1)delay(500);P2=_crol_(P2,1)
7、;void INT0_tiaobian() interrupt 0uint i;EA=0;for(i=0;i0;i-)for(j=110;j0;j-);五、总结:学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累 单片机是一门应用性和实践性很强的学科,要多动手,多做实验。六、评语实验五 电平触发外部中断班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的了解中断的原理,掌握电平触发方式中断的编程方法,理解编写中断程序用到的寄存器。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成 HEX 文件,在 proteu
8、s 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出实验电路)四、实验程序#include #include #define uint unsigned int#define uchar unsigned char void delay(uint);void main()EA=1;EX0=1;IT0=0;/TCON=0x00;P1=0x00;P2=0x01;while(1)delay(500);P2=_crol_(P2,1);void INT0_didianping()interrupt 0uint i;EA=0;for(i=0;i0;i-)for(j=110;j0;j-);五、
9、总结:俗话说“好的开始是成功的一半”。说起课程设计,我认为最重要的就是做好设计的预习, 认真的研究老师给的题目,选一个自己有兴趣的题目,其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。六、评语实验六 定时器班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的掌握定时器的工作原理,编程实现定时器 1s 的精准延时。二、实验要求用 proteus 画出电路图,用 keil 软件编程,
10、并生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出实验电路)四、实验程序#include #define uint unsigned int#define uchar unsigned char uchar num,temp,shi,ge; uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c;void miao(uchar,uchar); void main()TMOD=0X01; TH0=(65536-45872)/256; TL0
11、=(65536-45872)%256; EA=1;ET0=1; TR0=1;while(1)miao(shi,ge);void miao(uchar shi,uchar ge)P0=tableshi; P2=tablege;void TO_jishi() interrupt 1TH0=(65536-50000)/256; TL0=(65536-50000)%256;num+; if(num=18)num=0; temp+;if(temp=100) temp=0;shi=temp/10; ge=temp%10;五、总结:在实验过程中,使我接触了许多我以前没接触过的元件,提高了自己的动手能力。而且
12、在编程时重新温习了刚学不久的 51 单片机,不仅让我学习了一些新的知识,而且对以前所学内容进行了巩固,让我懂得理论知识的重要性,没有理论的指导一切实际行动都是盲目的,且实际操作是所学的理论知识得到验证,更能加深对理论知识的理解,让我受益匪浅。六、评语实验七 定时器方波脉冲班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的掌握定时器的工作原理,利用定时器 T0 和 T1 产生定时中断,在 P1.0 与 P1.1 端口分别输出 500Hz 和 1000Hz 的方波脉冲信号。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成
13、HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出实验电路)四、实验程序#include #define uint unsigned int#define uchar unsigned char uint i;sbit a=P10; sbit b=P11; void main()TMOD=0x11; TH0=(65536-2000)/256; TL0=(65536-2000)%256; TH1=(65536-1000)/256; TL1=(65536-1000)%256; ET0=1;ET1=1; TR0=1; TR1=1; EA=1;while(
14、1);void t0_500() interrupt 1TH0=(65536-2000)/256; TL0=(65536-2000)%256;a=a;void t1_1000() interrupt 3TH1=(65536-1000)/256; TL1=(65536-1000)%256;b=b;五、总结:中断的精髓是在于使用,在电路设计中使用中断来控制单片机的工作,使之更好的达到所需目的。六、评语实验八 计数器班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的掌握定时器工作在计数器的工作原理,编程实现T0 和T1 引脚接受外部脉冲信号,T0引脚
15、每收到 3 个上升沿脉冲信号,数码管显示值加 1;T1 引脚每收到 6 个上升沿脉冲信号,数码管显示值加 1。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出实验电路)四、实验程序#include #define uint unsigned int#define uchar unsigned char uint num;uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x
16、7c, 0x39,0x5e,0x79,0x71;void main()TMOD=0x66;TH0=0xff; TL0=0xfd; TH1=0xff; TL1=0xfa; TR0=1; TR1=1; ET0=1; ET1=1; EA=1;while(1)P0=tablenum; if(num9)num=0;void T0_jishu3() interrupt 1TH0=0xff; / TL0=0xfd;num+;void T1_jishu6() interrupt 3TH1=0xff; / TL1=0xfa;num+;五、总结:通过本次实验我更加熟练的掌握了中断的使用。六、评语实验九 数码管显示
17、班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的了解数码管的动态显示和静态显示,掌握数码管的动态显示编程,理解数码管与单片机的硬件电路连接。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出实验电路)四、实验程序#include #define uint unsigned int#define uchar unsigned char uchar num;uchar code table= 0x3f,0x06,0x5b,0x
18、4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;void delay(uint); void main()while(1)P3=0xfe; P2=table1; delay(5); P3=0xfd; P2=table2; delay(5); P3=0xfb; P2=table3; delay(5); P3=0xf7;P2=table4; delay(5); P3=0xef; P2=table5; delay(5); P3=0xdf; P2=table6; delay(5);void delay(uint x)u
19、int i,j; for(i=x;i0;i-)for(j=110;j0;j-);五、总结:要注意细节。细节决定成败,这句话在这次课题中不仅一次得到了印证,特别是在软件的编程过程中,一点点的错误就会使你整个程序不能运行。因此我们不仅仅要有整体意识, 也要注意细节,不要因一个关键地方的一个细节而导致满盘皆输。六、评语实验十 键盘扫描班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的了解键盘扫描原理,掌握键盘的延时去抖、识别方法,理解键盘与单片机的硬件电路连接,掌握键盘的编程方法。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并
20、生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出电路图)四、实验程序#include#define uint unsigned int #define uchar unsigned char uchar num;uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;void delay(uint); void main()while(1)uchar temp;P3=0x0f;if(P3=0x0e
21、)delay(10); if(P3=0x0e) P3=0xf0;temp=P3; switch(temp)case 0xe0:P2=table0; break;case 0xd0: P2=table1;break; case 0xb0:P2=table2; break;case 0x70: P2=table3;break;P3=0x0f;if(P3=0x0d)delay(10); if(P3=0x0d) P3=0xf0;temp=P3; switch(temp)case 0xe0:P2=table4; break;case 0xd0: P2=table5;break;case 0xb0: P2
22、=table6;break; case 0x70:P2=table7; break;P3=0x0f;if(P3=0x0b)delay(10); if(P3=0x0b) P3=0xf0;temp=P3; switch(temp)case 0xe0:P2=table8; break;case 0xd0: P2=table9;break; case 0xb0:P2=table10;break;case 0x70: P2=table11;break;P3=0x0f; if(P3=0x07)delay(10); if(P3=0x07) P3=0xf0;temp=P3; switch(temp)case
23、0xe0:P2=table12; break;case 0xd0: P2=table13;break; case 0xb0:P2=table14; break;case 0x70: P2=table15;break;void delay(uint x)uint i,j; for(i=x;i0;i-)for(j=110;j0;j-);五、总结:做事要多动脑,选出最好的方法。一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法。六、评语实验十一 串行通信班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、
24、 实验日期 年 月 日一、实验目的了解串行通信工作原理,掌握工作方式 1 下的编程方法。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出电路图)四、实验程序#include#define uint unsigned int #define uchar unsigned char uchar flag,a,i;uchar code table=I get ; void init()TMOD=0x20;TH1=0xff;TL1=0xf1;TR1=1;REN=1;SM0=0;S
25、M1=1;EA=1;ES=1;void main()init(); while(1)if(flag=1)ES=0;for(i=0;i6;i+)SBUF=tablei; while(!TI);TI=0; SBUF=a;while(!TI);TI=0;ES=1;flag=0;void ser() interrupt 4RI=0; a=SBUF;flag=1;五、总结:要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。六、评语实验十二 液晶显示 1602班级 、 姓名 、 学号 、指导教师 实验学时数 、 实验位置 、 实验日期 年 月 日一、实验目的掌握液晶显示的工作原理,理解 1
26、602 液晶模块与单片机的硬件电路连接,掌握液晶显示的编程方法。二、实验要求用 proteus 画出电路图,用 keil 软件编程,并生成 HEX 文件,在 proteus 上面仿真实现,结果无误,在试验箱上下载验证。三、实验仿真(画出电路图)四、实验程序#include#define uint unsigned int #define uchar unsigned charuchar code table=Hello danpianji; uchar code table1=XCU-wulianwang; sbit lcden=P16;sbit lcdrs=P17; uchar num;void delay(uint x)uint i,j; for(i=x;i0;i-)for(j=50;j0;j-);void write_com(uchar com)lcdrs=0; P3=com; delay(1); lcden=1; delay(1); lcden=0;void write_data(uchar date)lcdrs=1; P3=date; delay(1);lcden=1; delay(1); lcden=0;void init()lcden=0; write_com
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1