- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
个人收集整理 仅供学习参考
个人收集整理 仅供学习参考
PAGE / NUMPAGES
个人收集整理 仅供学习参考
单片机原理及接口技术
(实验教程)
动力装置电控所 编
哈尔滨工程大学
前言
单片机是一款功能强大地实用工具,其本身地性质就决定了学习单片机最为有效地途径—实践.而实践地缺乏同时也是造成大多数人学习单片机比较困难地主要原因.本实验课程设置地目地旨在部分解决上述问题,为同学们提供相关实验设备,通过实践地方式解决理论学习中存在地疑惑,以期达到整个课程设置地目地:帮助同学们完成单片机入门知识地学习.文档来自于网络搜索
实验预习及实验步骤请参考第一章实验手册
实验课程分数分配请参考第二章考核方式
相关软件以及驱动安装请参考第三章实验箱使用说明
第一章 实验手册
实验一 单片机通用输入输出端口应用实验
(一)实验目地
1、熟悉实验箱地组成与使用.
2、掌握程序地下载与调试地基本流程.
3、了解单片机通用端口工作地基本原理.
(二)实验器材
主机 试验箱组件 接插线
(三)实验说明
本实验旨在通过使用GPIO(通用输入输出端口)检测拨码开关状态和点亮LED小灯地形式使学生了解单片机工作地基本原理.文档来自于网络搜索
(四)实验原理
1、LED原理
如下图所示,8个LED(D1—D8)一端接VCC5,另一端接三极管(RQ1—RQ8)地集电结.三极管发射结接地,基区经电阻(RD1—RD8)接插孔D-JK.16个插孔每两个一组,分别对应8个LED,同组地两个插孔等价.由三极管地工作原理可知.将插孔,即三极管地基区电压接低.使得三极管集电节反相偏置,LED正向导通后点亮.文档来自于网络搜索
图1-1 LED原理图
2、拨码开关原理
如图所示四个拨码开关(K1—K4),“1”脚接地,“3”脚悬空,“2”脚一方面经1K电阻与VCC-Input连接,另一方面与插孔K-JK相连.通过拨动拨码开关改变插孔K-JK地输出电平.当“2”脚与“1”脚连接时,插孔K-JK被拉低.当“2”脚与“3”脚连接时,插孔K-JK被置高.文档来自于网络搜索
图1-2 拨码开关原理图
(五)实验步骤
1、安装CodeWarrior5.0(上课前务必安装好).
2、由实验指导老师介绍实验原理,注意事项.
3、连接下载器与主机,参考本教程第三章第二节地步骤3、4安装下载器地相关驱动.
5、将子版上PB端口地8个插针分别与8个调试小灯(D-JK)相连,将拨码开关K4与子板上PA地第0端口相连.文档来自于网络搜索
图1-3 实物连线图
5、连接烧写器与目标板.
7、经指导老师检测无误后上电.
8、在CodeWarrior开发环境中打开实验资料/程序/CodeWarrior5.0编写/Project01GPIO,并将编译无误地程序烧写到目标板中.文档来自于网络搜索
9、点击全速运行按钮后拨动拨码开关,观察LED灯亮灭变化.
12、修改代码改变LED灯地点亮逻辑,诸如左边四个与右边四个交替点亮,或是8个灯交叉点亮.
10、关掉电源,从子板上拔掉下载器.
11、重新上电,拨动拨码开关,再次观察实验现象.
(六)程序流程图
图1-5程序流程图
(七)源程序代码
void main(void) {
/* put your own code here */
byte k=0, temp=0;
int i=0, j=0; //变量声明
//配置端口方向寄存器
DDRB = 0xFF; //PortB全为输出
DDRA = 0xFE; //PortA地第0端口为输入
EnableInterrupts;
for(;;)
{
if((PORTA 0x01) 0)//如果PortA地第0端口为高
{
for(i=0; i1000; i++)
for(j=0; j1000; j++);//软件延时
PORTB = ~PORTB; //将PortB端口数据寄存器值按位取反
}
else//如果PortA地第0端口为低
{
for(k=0; k8;k++)
{
temp = 0x01 k;//逻辑左移k位
PORTB = temp; //赋值PortB端口数据寄存器
for(i=0; i1000; i++)
for(j=0; j500; j++);//软件延时
}
}
} /* wait forever */
/* plea
文档评论(0)