单片机实验过程
单片机综合训练Ⅰ实验指导书
目 录
一、 实验环境介绍 11、Keil集成开发环境介绍 1二、 实验内容 9实验一 练习使用集成调试软件 9实验二 简单输入输出 10实验三 定时器应用 11实验四 流水灯程序设计 13
一、实验环境介绍1、Keil集成开发环境介绍Keil集成开发环境是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编语言、PLM语言、C语言的程序设计,界面友好,易学易用。(1)建立工作文件夹在规定的盘符建立一个以自己学号命名的文件夹,作为工作文件夹,将日后实验所有的文件都存放在该文件夹中。(2)进入集成开发环境双击桌面图标,进入uVision4集成开发环境。
(3)新建工程选择菜单“porject—new uvision project”,弹出“Creat New Project”对话框;
在“保存在”下拉列表中选择自己的工作文件夹,在“文件名”文本框中键入工程名(不需要键入扩展名,扩展名默认为 .uv2),单击“保存”按钮,关闭“新建工程”对话框,弹出“为目标‘target 1’选择设备”对话框,选择目标芯片型号;
选择Atmel公司的89C52芯片,单击“确定”按钮,关闭对话框,新建一个工程。
(4)新建源程序选择菜单“File—New”新建源程序文件Text1
单击保存按钮,以.C后缀名保存改文件。
(5)将源程序添加到工程中右键单击“工程窗口”中的“Source Group 1”,在弹出的菜单中选择“增加文件到组”;(注:软件汉化有误)
弹出“增加文件到组”对话框;
选中欲添加的源程序,单击“Add”按钮,源程序添加到工程中。但是,该对话框并不关闭,等待用户继续添加其他程序。添加完毕后,单击“关闭”按钮,关闭对话框。“工程窗口”中,“Source Group 1”下将出现该源程序文件名。
若对同一个文件二次添加,则会弹出如下警告框。
(6)编译和连接单击“Rebuild all target files”按钮,对原程序进行编译和连接,构造结果将在“Build Output”窗口中显示。如果程序有语法错误,则会指出错误类型及所在行,修改后,重新构造,直至没有任何语法错误。
(7)开始调试单击“开始/停止调试”按钮,进入调试状态。
在调试状态下,“构造工具栏”变为“调试工具栏”。通过单步运行,查看寄存器、存储器的值,判断程序是否运行正确。若不正确,找出问题所在,单击“开始/停止调试”按钮,停止调试,进入编辑状态,修改程序,重新编译、调试。(8)查看寄存器进入调试状态后,“工程窗口”变为“寄存器窗口”,可以查看CPU各寄存器的值。(9)查看存储器单击“存储器窗口”按钮,打开存储器窗口;该窗口共有4个标签,可显示4个存储器的值。单击一个标签,在地址栏中输入要查看的存储器单元的类型及地址。片内数据存储器 I : [地址]片外数据存储器 X : [地址]程序存储器 C : [地址]若要人为修改某存储单元的值,可右键单击该单元,在弹出的菜单中选择“更新存储器”,在弹出的文本框中输入该单元的新值,单击“确定”即可。注:十六进制数前加“0x”。(10)单步运行在调试状态下,源程序的左边有一个黄色的箭头,指示当前程序执行的位置,即将要执行的一条指令。单击“单步”按钮,程序执行一条指令,黄色箭头下移一行。寄存器和存储器的值的变化显示在相应位置。执行过的指令左边用一绿色方块标记。(11)运行到光标行若想快速、连续执行若干条指令,可将光标定位在这些指令的最后一行处,单击“运行到光标行”按钮,即可。(12)全速运行对于有些程序,只有全速运行才能实现其功能,这时只需单击“运行”按钮;若要暂停运行,单击“暂停”按钮。(13)将源程序从工程中删除一个程序调试成功后,若要调试另一个程序,可不必新建工程,只需新建一个源程序,添加到原有的工程中,同时,将前一个源程序从工程中删除。在“工程窗口”中,单击要删除的源程序名,按“Delete”键,在弹出的对话框中选择“确定”即可。对于初学者,一般一个工程中只包含一个源程序,应将多余的源程序删除。
二、实验内容实验一练习使用集成调试软件1.实验目的(1)练习使用Keil集成调试软件;(2)进一步熟悉语言指令的功能。2.实验内容按照实验指导书的说明,结合附录中的例子,练习使用Keil集成调试软件,为以后的实验打下基础。3.实验器材计算机1台4.实验步骤(1)新建工程;(2)输入源程序;(3)将源程序添加到工程中;(4)编译和连接;(5)运行程序;(6)观察记录运行过程和结果。5.实验报告要求(1)列出源程序,并加以注释;(2)结构复杂的程序,画出流程图;(3)对实验过程和结果进行分析;(4)写出心得体会。
实验二简单输入输出1.实验目的(1)进一步理解I/O口的工作原理;(2)掌握输入/输出程序的设计方法2.实验内容编写程序,点亮发光二极管3.实验器材(1)计算机1台 (2)仿真器1台 (3)开发板一套4.硬件电路
5.试编写程序点亮开发板上的发光二极管6.思考与发挥(1)如何实现多个开关控制多个发光二极管? (2)如何实现8个发光二极管闪烁?
实验三定时器应用1.实验目的(1)进一步了解定时器的结构和工作原理;(2)掌握定时器的应用程序设计方法。2.实验内容编写定时程序,实现发光二级管D1的定时1s亮灭3.实验器材(1)计算机1台 (2)仿真器1台 (3)开发板1套4.硬件连线
5.实验程序
6.思考与发挥(1)如何改变亮灭的频率?(2)计数初值变大,亮灭频率将如何变化?
实验四流水灯程序设计1.实验目的初步掌握C51程序设计方法。2.实验内容编写程序,使D0-D8,8个LED呈现流水灯效果进行左移右移滚动3.实验器材(1)计算机1台 (2)仿真器1台 (3)开发板1套4.实验程序/**************************************************************************************
LED流水灯实验 * 1实现现象:下载程序后LED呈现流水灯效果进行左移右移滚动注意事项:无***************************************************************************************/
#include “reg52.h” //此文件中定义了单片机的一些特殊功能寄存器#include<intrins.h> //因为要用到左右移函数,所以加入这个头文件
typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;
#define led P2 //将P2口定义为led 后面就可以使用led代替P2口
/*******************************************************************************
函 数 名 : delay函数功能 : 延时函数,i=1时,大约延时10us*******************************************************************************/void delay(u16 i){while(i–);}/*******************************************************************************
函 数 名 : main函数功能 : 主函数输 入 : 无输 出 : 无******************************************************************************/void main(){u8 i;led=0xfe;delay(50000); //大约延时450mswhile(1){/ for(i=0;i<8;i++){P2=~(0x01<<i); //将1右移i位,然后将结果取反赋值到P2口delay(50000); //大约延时450ms}*/for(i=0;i<7;i++) //将led左移一位{led=crol(led,1);delay(50000); //大约延时450ms}for(i=0;i<7;i++) //将led右移一位{led=cror(led,1);delay(50000); //大约延时450ms}}}本例中main是主函数名,要执行的主函数的内容称为主函数体,主函数体用大括号{ }括起来。函数体中包含若干条将被执行的程序语句,每条语句都必须以分号为结束符。5.思考与发挥(1)流水灯的间隔时间怎么确定?(2)流水灯的移动方向和顺序怎么确定?入门必看!学单片机人人都会的小项目
大家好,我是华维导师——华维。今天给大家介绍一个4位数字电子钟,适合新手入门51单片机,有兴趣的同学,可以自己动手试试!
C51系列作为入门级的单片机芯片,很多院校及培训课程仍将它作为理论基础,也是很多同学选择入门的芯片。基于它的作品非常多,今天小编给大家分享一个小实验——4位数字电子钟。
希望本次的分享能给同学们制作自己的 4 位数字时钟带来一些提示,也希望对单片机感兴趣的同学跟着教程动手,做一次,提高动手能力,积累经验。
为了制作我的 C51 数字时钟,我使用了一个DIY 套件(某宝有相关套件)。这个DIY 套件没有任何说明指导,因此我们需要进行一些研究以确保一切都正确无误。
那么我们需要准备那些套件,继续往下看
元器件:
• PCB(大绿板)
• 4位LED数码管
• 主控芯片(AT89C2051)
• 排阻(单列9针引脚)
• 晶振(银色,2插针引脚)
• 蜂鸣器(当中最大的黑色圆柱体)
• 三极管
• 有极电容器(黑色圆柱体,侧面有 数字)
• 瓷片电容器(黄色,片状)
• 电阻器(圆柱体,带有色环)
• 电源输入插头(蓝色)
• 黑色小按钮
电路原理图:
工具:
• 烙铁
• 小螺丝刀
• 剪线钳
• 剥线钳
元器件:
关注同名公号,领取单片机入门和进阶教程!
准备好工具,元件材料就可以开始动手了,整理好工作桌面,留出大一点的空间,在专注工作时,小元件很容易混乱、莫名其妙没掉(个人惨痛经历)。
注意事项:
1.焊接时小心操作,身体不要触碰到洛铁的
2.高温触头
3.极性的器件不要放反了
4.元器件焊接一般遵循从小到大的原则
把元器件插入对应的丝印位置
小器件丝印位置:
元器件
PCB 丝印
2个小电阻器
R1\R2
圆柱电容器 (10UF)
C1
黄色瓷片电容器 (104)
C4
黄色瓷片电容器 (30)
C2/C3
三极管
Q1
晶振
Y1
大器件丝印位置:
元器件
PCB 丝印
蜂鸣器
LS1
电源输入插座
CON2
芯片座
U1
排阻
PR1
4位数码管(白点标记,与PCB上的白点对应)
DS1
黑色小按钮
S1/S2
焊接后续:
焊接完成后,用剪线钳剪除过长的引脚,清理焊接残留物,对照元件物料检查一遍PCB上的元器件,确认元器件与PCB板的丝印对应无误。
把主芯片插入芯片座,注意对准芯片座的u型凹槽。
功能测试:
找一根双芯电缆,最好是颜色不同的线,以区分正负极。给我们的数字时钟通电,输入电压为3V-5V,建议使用5V,5V电压运行比较稳定。
务必确保输入电源的正负极与PCB的标识一样,PCB的电源极性在背面。
主芯片包含了时钟程序,不需要我们编程。
关于设置:
按钮S1(左)改变选项
按钮S2(右)改变数值
通电后长按S1进入设置主菜单,共有A,B,C,D,E,F,G,H,I 九个子菜单,按一下S1进入下一菜单,最后回到正常时间界面。
菜单 A : 校正小时
菜单 B : 校正分钟
菜单 C : 整点报时开关
菜单 D : 第一路闹钟开关
菜单 E : 第一路闹钟小时设定
菜单 F : 第一路闹钟分钟设定
菜单 G : 第二路闹钟开关
菜单 H : 第二路闹钟小时设定
菜单 I : 第二路闹钟分钟设定
作为入门级的小电路,难度不大,注意操作就会成功。精致的同学可以制作匹配的盒子安装。3D打印就可以了。
免费领!单片机入门到高级开挂学习路径(附教程+工具)
学习任何东西都要动手实践,才能把理论带到实际中,在实践中成长。对单片感兴趣的同学赶紧找我学习,领取入门和进阶资料开启与导师的一对一互动,进入高阶学习。
相关问答
会51 单片机 ,如何快速学习使用STM32 单片机 ?单片机其实都是相通的,会了一种单片机,对着数据手册查看一下寄存器的设置可以快速的入手其他型号的单片机。会51单片机,说明有单片机的基础,再去学习STM32单...
单片机 开发板怎么使用?单片机开发板主要用于开发和测试单片机项目。使用步骤主要如下:1.硬件连接按照开发板上详细的介绍将硬件设备连接好,包括:-单片机芯片插入座,确保正确的...
什么是 单片机 ?单片机不是执行特定逻辑功能的芯片,而是将计算机系统集成到芯片上的芯片。它等效于微型计算机。与计算机相比,单芯片计算机仅缺少I/O设备。简而言之:芯片变成...
单片机 如何设计电路板?...一是可以在实验板(多孔板)放好芯片后,用电线进行连接,这种方法适合作实验,电路不太复杂的;二是在腐铜板上根据设计好的电路自己用漆什么的画电路,然后...
单片机 定时器应用实验用80C51内部定时器1,按方式1工作,即作...[最佳回答]完全一样的题目呀,真幸运,看我的吧(我的是8052的,没关系的):汇编程序:S1EQU30HS2EQU31HORG0000HAJMPMAIN&nb...完全一...
大学生机械专业,这学期有 单片机 实验,需要电脑,不知道咋选,有何推荐?一、【明白需求】你为什么要购买电脑?要清楚自己买电脑是用于做什么?比如你是为了普通用途,那么现在的一般电脑都是适合你的,就算一个2000多个的电脑也够你...C...
行家们,哪里有:描述 单片机 开发的完整步骤?[回答]开发板,就是把《单片机开发系统》,安装在一块电路板上。建议楼主,搜一下:什么是《单片机开发系统》。楼主所说的,只是初学者用的《单片机学习板》或...
单片机 显示实验优点?结构简单,性价比高。结构简单,性价比高。
单片机 实验80C51外中断P1口接8个发光二极管,设计实验:S1加1...[最佳回答]既可用外部中断方式来实现;也可以用查询方式读键处理.灯的亮灭,就是对P1口的赋值操作,每次多一盏,可以让初值为0xff.此后,每次左移或右移实现.每次...
单片机 键盘显示实验报告怎么解决?这个问题的最大关键不在显示,而是在输入,你输入必须要设置输入缓存区,和输入保存的区域,还有显示的缓存区,当你的输入小于4位的时候,将输入保存里的数据转...