单片机原理与应用课程设计.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
单片机原理与应用课程设计 设计目标 (1)加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、设计 过程、选择芯片器件、模块化编程等多项知识。 (2)用单片机模拟实现具体应用,使个人设计能够真正使用。 (3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。 (4)提高利用已学知识分析和解决问题的能力。 (5)提高实践动手能力。 (6)实现自动和手动控制LED灯的亮暗 硬件设计 1、硬件电路 (1)复位电路 接线图如图示 选取原则:电容选取10uf,电阻选取1k欧姆 上电复位原理:VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒 后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。 手动复位原理:工作期间,按下S,C放电。S松手,C又充电,在10K电阻上出现电压,使 得单片机复位。几个毫秒后,单片机进入工作状态。 (2)晶振电路 晶振电路如图示: 选取原则:电容选取30pF,晶振为12.000MHz。 作用:产生震荡电流,发出时钟信号。它是时钟电路中最重要的部件,它的作用是向IC等 部件提供基准频率。 软件设计 #include<reg52.h> sbit LED1=P1^0; sbit LED2=P1^1; sbit LED3=P1^2; sbit K2=P2^0; //手动控制开关 定义 sbit K3=P2^3; //自动控制开关 定义 char num,temp; char TAB[]={0xFE,0xFD,0xFB}; void Delay(int n) {int i,j; for(i=0;i<1000;i++) for(j=0;j<n;j++); } void display1() //手动控制子程序 { char i; P1=TAB[i]; if(K2==0) //防抖动 { Delay(1); if(K2==0) { i=(i<2)?i+1:0; Delay(200); } } } void display2() //自动控制子程序 { char i,j; //防抖动 if(K3==0) { Delay(5); if(K3==0) { for(j=0;j<62;j++) {for(i=0;i<3;i++) { P1=TAB[i]; Delay(200); }} } } } void main() //主程序 { while(1) { if(K2==0) { display1(); } else if(K3==0) { display2(); P1=0XFF; break; } } } 运行结果 首先按下总开关,当按下K2开关时,LED灯从第一盏灯开始亮,每次亮一盏亮至第三盏灯 ,再亮第一盏灯,以此循环,直至10分钟后自动熄灭。当按下第一次按下K3开关时,第 一盏灯亮,第二次按下K3开关,第二盏灯亮,第三次按下K3开关,第三盏灯亮,第四次 按下K3开关,第一盏灯亮,第五次按下K3开关,第二盏灯亮…… 心得体会 通过本次课程设计,我深深的体会到了作为一个硬件工程师的艰辛。即使做一个小小的 项目,都需要这么多的辛苦,必须考虑到问题的任何一个细节,否则最后也将是功败垂 成。 在这次课程设计中我确确实实学到了不少东西,使我受益匪浅。在这过程中我犯下 了不少错误,以后我会接受这些教训,同时把这些教训转换为经验应用到以后的此类设 计中。最后,衷心感谢在课程设计期间老师对我们的无私帮助,还要感谢和我同组的合 作者,以及所有帮助过我的同学。
- m0_676083772024-04-05支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
- 粉丝: 167
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Qt开发知识、经验总结 包括Qss,数据库,Excel,Model/View等
- IV数据.xlsx
- 一些深度学习中的小例子,适合新手学习使用
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)