- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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+
您可能关注的文档
最近下载
- 泌尿科内镜随访制度.docx
- 大学英语综合教程(高级)(华中农业大学)中国大学MOOC(慕课)章节测验试题(答案).pdf
- 江苏海洋大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 初中物理-内能知识点.doc VIP
- 《语文新课程改革研究》课程考试题库文学类专业(2023年)完整版.doc VIP
- 2023年新版征信报告详细版征信报告模板-Word-可编辑-有水印.docx VIP
- 餐饮店长个人年终工作总结.pptx
- 西门子azl52.00b1中文说明书.pdf
- 泌尿外科内镜技术的风险评估与应急预案.doc
- 《仪器分析》练习题及参考答案(按章节).pdf
文档评论(0)