收藏 分销(赏)

单片机实训报告李博.doc

上传人:人****来 文档编号:3900064 上传时间:2024-07-23 格式:DOC 页数:24 大小:187KB 下载积分:10 金币
下载 相关 举报
单片机实训报告李博.doc_第1页
第1页 / 共24页
单片机实训报告李博.doc_第2页
第2页 / 共24页


点击查看更多>>
资源描述
单片机实训报告李博 24 2020年4月19日 文档仅供参考 单片机实训报告 系 别:电子电气工程系 班 级:过化123班 姓 名:李 博 学 号: 04350212 日 期: 5月1日 指导老师:李泉 李红萍 实训地点:综合楼四楼单片机实训室 实训时间:4月27日—5月3日 实训目的:了解80C51/80C52单片机的结构和组成,学会简单的编程,熟练掌握编程软件和仿真软件。 熟记C语言的基本指令。MCS-51单片机应用技术的基础知识(C语言) 实训内容: 一、元器件的认识 Capacitor电容 debugging调试工具 memory ICS存储 connectors连接器 diodes二极管 CRYSTAL晶振 date converters数据转换器 inductors电感 operational运算放大器 optoelectronics光电器件 7SEG-COM-AN(共阳极)-GRN(绿色) 7SEG-COM-CAT(共阴极)-GRN(绿色) LED-YELLOW发光二极管 speakers sounders喇叭 resistors电阻 switches$Relays开关按钮 SW-SPST 开关 Transistors三极管 二、程序与仿真 1、一盏灯亮 (1)、程序 #include <stdio.h> #include <reg51.h> main() { int i,k; for(k=0;k<3;k++); { P1=1; for(i=0;i<10000;i++); P1=0; for(i=0;i<10000;i++); } } (2)、在proteus软件上绘制电路图 2、数码管显示0—9 (1) 、程序 #include <reg52.h> #define uint unsigned int void delayn50ms(uint n) { uint i,j; for(j=0;j<n;j++) for(i=0;i<=10000;i++); } main( ) { while (1) { P2=0xC0; delayn50ms(20); P2=0xF9; delayn50ms(20); P2=0xA4; delayn50ms(20); P2=0xB0; delayn50ms(20); P2=0x99; delayn50ms(20); P2=0x92; delayn50ms(20); P2=0x82; delayn50ms(20); P2=0xF8; delayn50ms(20); P2=0x80; delayn50ms(20); P2=0x90; delayn50ms(20); } } (2) 、在proteus软件上绘制电路图 3、数码管01交替 (1) 、程序 #include <reg52.h> #define uint unsigned int void delayn50ms(uint n) { uint i,j; for(j=0;j<n;j++) for(i=0;i<=10000;i++); } main( ) { while (1) { P2=0xC0; delayn50ms(20); P2=0xF9; delayn50ms(20); } } (2) 在proteus软件上绘制电路图 4、八盏灯交替闪亮 (1) 、程序 #include"stdio.h" #include"reg51.h" main() {int i,k; for(i=0;i<10;i++) { P1=0x80; for(k=0;k<30000;k++); for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0x40; for(k=0;k<30000;k++); for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0x20; for(k=0;k<30000;k++); for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0x10; for(k=0;k<30000;k++); for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0x08; for(k=0;k<30000;k++); for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0x04; for(k=0;k<30000;k++); for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0x02; for(k=0;k<30000;k++); for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0x01; for(k=0;k<30000;k++); for(k=0;k<30000;k++); for(k=0;k<30000;k++); } for(;;); } (2) 、在proteus软件上绘制电路图 5、电子表 (1)、程序 #include <REG51.H> void Toinit(); void Display(void); void Key_Enter(void); void Delay(void); char nhour=0, nminute=0, nsecond=0, ntimetick=0; bit bRun=1; sbit bRunKEY=P0^0; sbit bclearKEY=P0^1; sbit bhourKEY=P0^2; sbit bminuteKEY=P0^3; sbit bsecondKEY=P0^4; main() { P3=0; Toinit(); while(1) { Display(); Key_Enter(); } } void Toinit() { TCON=0; TMOD=0x01; TL0=- 0%256; TH0=- 0/256; ET0=1; EA=1; TR0=1; } void Toint(void) interrupt 1 using 1 { TL0=- 0%256; TH0=- 0/256; if(bRun==1) { ntimetick++; if(ntimetick>=50) { ntimetick=0; nsecond++; if( nsecond>=60) { nsecond=0; nminute++; if(nminute>=60) { nminute=0; nhour++; if(nhour>=24) { nhour=0; } } } } } } void Display(void) { char DispTbL[]={0xC0,0xF9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; P3=0; P1=DispTbL[nhour/10]; P3=0x01; Delay(); P3=0; P1=DispTbL[nhour%10]; P3=0x02; Delay(); P3=0; P1=DispTbL[nminute/10]; P3=0x04; Delay(); P3=0; P1=DispTbL[nminute%10]; P3=0x08; Delay(); P3=0; P1=DispTbL[nsecond/10]; P3=0x10; Delay(); P3=0; P1=DispTbL[nsecond%10]; P3=0x20; Delay(); P3=0; } void Delay(void) { int i; for (i=0;i<200;i++) { } } void Key_Enter() { if(bRunKEY==0) { Delay(); while(bRunKEY==0); Delay(); bRun=~bRun; } if(bclearKEY==0) { Delay(); while(bclearKEY==0); Delay(); nhour=0; nminute=0; nsecond=0; ntimetick=0; } if(bhourKEY==0) { Delay(); while(bhourKEY==0); nhour++; if(nhour>=24) nhour=0; } if(bminuteKEY==0) { Delay(); while(bminuteKEY==0); nminute++; if(nminute>=60) nminute=0; } if(bsecondKEY==0) { Delay(); while(bsecondKEY==0); nsecond++; if(nsecond>=60) nsecond=0; } } (2)、在proteus软件上绘制电路图 6、九盏灯二二循环点亮 (1)、程序 #include <stdio.h> #include <reg51.h> main() {int i,k; for(i=0;i<2;i++) {P1=0XFC; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0XF9; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0XF3; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0XE7; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0XCF; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0X9F; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0X3F; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0X7F; P3=0XFE; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P1=0XFE; P3=0XFE; for(k=0;k<30000;k++); for(k=0;k<30000;k++); P3=0XFF; P1=0XFF; } for(;;); } (2)、在proteus软件上绘制电路图 实训心得 为期一周的实训结束了,我在这一周中学到了很多在课堂上根本就没有学过的知识,受益匪浅。实训是每个大学生必须拥有的一段经历,它使我们在实践中了解社会,这周我们学习了从来我都没有接触过的c语言,使我明白C语言这门课程光仅仅是听课是远远不够的,上机训练也不容忽视。 经过上机训练,才能够明白自己知识的不足,才能够有的放矢,更加深刻的理解C语言中的知识点。 经过实训,学到了很多以前不懂的知识,特别是遇到了自己当时不知道如何编写的C语言题目如何编写,经过自己的学习和同同学的交流后,试编和改错,最后能够顺利的编写出来,带来的也有成就感。并增加了我们对C语言的兴趣和学好C语言的信心。 与同学们交流的过程中,了解了程序的多种解决方法,知道了不同编写方法有不同的特点。总结C语言实训的几个重要作用:   1.加深对课堂讲授内容的理解 刚刚开始接触c语言我觉得很有趣,但老师讲的越来越无聊,凭着自己的坚持我慢慢稍微懂得了c语言的重要性和语法规则,课堂上要讲授许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。经过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。 学习C语言不能停留在学习它的语法规则,而是利用学到的知识编写C语言程序,解决实际问题。即把C语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有经过上机才能检验自己是否掌握C语言、自己编写的程序是否能够正确地解题。   2.熟悉程序开发环境、学习计算机系统的操作方法 一个C语言程序从新建、编译、检查到运行,全是用英语软件开发的。在所谓"环境"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。经过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。   3.学习上机调试程序 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,可是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。 经过这次为数不多的几天计算机实践学习,我们更好的了解了一些关于C语言的知识,经过c语言与汇编的对比我慢慢的懂得了各种规则,符号也是很重要的。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服