网站大量收购闲置独家精品文档,联系QQ:2885784924

《单片机电子实训报告》.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《单片机电子实训报告》.doc

电 子 实 训 报 告 课程名称:电子实训 项目名称:单片机系统设计 专 业: 班 级: 学 号: 姓 名: 成 绩: 日 期: 单片机最小系统设计(单片机最小系统原理) 硬件调试总结(列出焊接、调试过程中出现的问题及解决方案) 问题:数码管程序不显示 原因:排阻焊反了 解决:将排阻取下来重新安装 三、软件调试 (1)按键流水灯程序调试 要求:可实现流水灯循环点亮 代码:#include reg52.h // 简单延时 void delay(unsigned int cnt) { while(--cnt) ; } // 主函数 void main() { unsigned char tmp; tmp = 0xFE; //赋初值: 二进制 1111 1110 P1 = tmp; while(1) { delay(50000); tmp = 1; //左移一位 tmp |= 0x01; //最后一位置1 if(tmp == 0xFF) //检测是否移到最左端, 重新赋值, 因为C程序没有循环移位指令 tmp = 0xFE; P1 = tmp; //P1口赋值 } } (总结):8个LED灯分别接入P1.0~P1.7, 低电平有效 本程序通过对P1口赋值来控制LED灯的亮灭, 使其出现流水灯现象. (2)数码管程序调试 要求:可实现8位数码管显示 代码:void delay(unsigned int cnt) { while(--cnt); } // 主函数 void main() { unsigned char i, j; i = j = 0; while(1) { P0 = Display[i];//取显示数据 P2 = Seg[j]; //取段码 delay(DELAY_COUNT); j++; //只有两个数码管, 故段码仅可在0~7之间循环 if(8 == j) j = 0; //j = j0x07; //本指令也可完成以上判断语句的功能且效率更高. 思考为什么? if(DELAY_COUNT = 20000) //延时较长时, 8个数码管循环显示0~9这十个数字 { i++; i %= 10; } else //延时较短时, 因视觉残留问题, 对固定的数码管显示固定的值. { i = j; } } } (总结):P0.0~P0.7接锁存器74HC573的D0~D7; 74HC573的Q0~Q7接4位共阴极数码管的显示引脚A~G及DP; 跳线J3控制74HC573的工作方式: 锁存方式下, P3.7接74HC573的LE; 直通模式下, 74HC573的LE接VCC P2.0~P2.2接3-8译码器74LS138的A~C; 74LS138的Y0~Y3及Y4~Y7分别接接数码管1及数码管2的DIG1~DIG4 本程序演示如何在数码管中显示指定的数字及小数点 测试中可以通过调整delay函数的延时长短来控制数码管显示模式: #define DELAY_COUNT xxxx *当延时比较小时(500), 因为人眼视觉残留的原因会感觉是同时显示 *当延时比较大时(5000), 会看到循环显示的现象 (3)综合设计程序调试 要求:读取独立按键或矩阵键盘按键数值,实现数码管数值显示 代码:#include reg52.h sbit key1=P3^0; //定义按键位置 sbit key2=P3^1; sbit key3=P3^2; sbit key4=P3^3; unsigned char code Display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6F}; unsigned char code Seg[]={0,1,2,3,4,5,6,7};//分别对应相应的数码管点亮 // 简单延时 void delay(unsigned int cnt) { while(--cnt); } // 主函数 void main() { unsigned int i,j; i=0;j=0; P2=0x04; //段码设置: 固定第一个数码管显示 while(1) { if(!key1) //按下相应的按键,数码管显示相应的码值 { delay(100); //去抖 if(!key1) { P0 = Display[i++];//取显示数据 P2 = Seg[j+

文档评论(0)

ycwf + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档