单片机实验过程

单片机综合训练Ⅰ
实验指导书

目 录

一、 实验环境介绍 1
1、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”按钮,源程序添加到工程中。但是,该对话框并不关闭,等待用户继续添加其他程序。添加完毕后,单击“关闭”按钮,关闭对话框?!肮こ檀翱凇敝校癝ource 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); //大约延时450ms
while(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)流水灯的移动方向和顺序怎么确定?

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352