单片机电压检测.docx
《单片机电压检测.docx》由会员分享,可在线阅读,更多相关《单片机电压检测.docx(14页珍藏版)》请在冰点文库上搜索。
单片机电压检测
河南机电高等专科学校电气工程系
电子课程设计报告
设计题目:
电压、电流检测
专业:
电力系统自动化技术
班级:
电力092
学号:
090313209
姓名:
冯冲
指导教师:
毛景魁
设计时间:
2011.6.7——2011.6.19
微控制器技术课程设计任务书
设计题目:
流水灯数码显示
设计时间:
2011.6.7——2011.6.19
设计任务:
在Proteus中画出原理图或使用实物,编制程序,实现以下功能:
1、使用液晶或者八段发光字符管显示测量的电压或电流值;
2、使用电位器模拟被测电压、电流输入;
3、电压或电流输入为零时,有声音提示。
背景资料:
1、单片机原理与应用
2、检测技术
3、计算机原理与接口技术
进度安排:
1、第一天,领取题目,熟悉设计内容,分解设计步骤和任务;
2、第2-3天,规划设计软硬件,编制程序流程、绘制硬件电路。
3、第4-6天,动手制作硬件电路,或编写软件,并调试。
4、第7天,中期检查。
5、第9-10天,完善为完成内容,书写设计报告。
6、第11天,提交设计报告,整理设计实物,等待答辩。
7、第12天,设计答辩。
一、设计目的
(1)通过课程设计,应能加强学生如下能力的培训:
(2)独立工作能力和创造力;
(3)查阅图书资料,产品手册和各种工具书的能力;
(4)工程绘图的能力;
(5)编写技术报告和编制技术资料的能力
(6)综合运用专业及基础知识,解决实际工程技术问题的能力;
二、设计要求
(1)独立完成设计任务
(2)绘制系统硬件总框图
(3)绘制系统原理电路图
(4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释
三、设计内容及方法
1、主控电路
该设计中我们主控电路部分采用了单片机AT89C52芯片来实现这些功能,AT89C52是一个低电压,高性能CMOS的8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器和256B的随机存取数据存储器(RAM)。
其引
脚如下图所示:
图1.AT89C52引脚图
VCC:
供电电压。
GND:
接地。
P0口(P0.0-P0.7):
P0口来控制数码管的段选,以显示相应的数值。
P1口(P1.0-P1.7):
P1口用来控制数码管的位选,以达到动态显示的效果。
P2口(P2.0-P2.7):
P2口来控制LED的亮灭。
P3口(P3.0-P3.7):
P3.0为RXD(串行输入口),P3.1为TXD(串行输出口),P3.2为/INT0(外部中断0),P3.3为/INT1(外部中断1),P3.4为T0(记时器0外部输入),
P3.5为T1(记时器1外部输入),P3.6为/WR(外部数据存储器写选通),P3.7为/RD(外部数据存储器读选通)。
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义
2、按键控制扫描模块
按键用于控制数码显示、LED显示、扬声器等模块的工作。
通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。
设计中使用单个按键实现单个功能,属于较为简单的控制方式.
图2.按键输入电路
在多功能系统设计的实验中中我们使用四个按键分别与单片机的P1.4、P1.5、P1.6、P1.7相连,按键1控制数码管显示、按键2控制LED流水灯、按键3控制蜂鸣器发声,按键4控制作息时间。
通过按下相应的按键来处理相应的程序。
3、DS1302实时时钟模块
图3.DS1302模块电路图
DS1302与CPU的连接:
实际上,在调试程序时可以不加电容器,只加一个32.768kHz的晶振即可。
只是选择晶振时,不同的晶振,误差也较大。
4、数码管显示模块
设计中采用四位共阳极数码管,共阳极是指其公共端接正极,通过单片机AT89C52的P1口控制其位选,以达到动态显示的效果,再通过P0口,控制其段选以显示相应的数值。
在其位选控制部分,采用了一个9012型三极管,要求当P1口输出低电平时,位选成功。
图5.数码管显示电路
硬件电路中,数码管显示的小时和分.小时通过按键2控制,分通过按键3控制。
5、LED显示模块
图6.LED显示电路
本次设计中通过按键2来控制其流水显示,打开电源后按下按键2流水灯模块有效。
由于电路中LED为共阳极,故控制流水灯显示的P2口应为低电平时才有效。
6、扬声器模块
扬声器模块通过按键3来实现。
要求扬声器能够发出连续,断续的声音及音乐,我们可以选择一个蜂鸣器来实现这些功能。
图7.扬声器电路
在这个设计中是通P3.4口控制其发声的。
由于P3.4与ds1302是连在一起的,当P3.4口输出低电平时蜂鸣器发出声响。
故只要ds1302工作,就可以设定使扬声器发出声音。
四、硬件原理图
设计硬件原理连接图如图所示:
五、主程序:
#include//51系列单片机定义文件
#defineucharunsignedchar//定义无符号字符
#defineuintunsignedint//定义无符号整数
voiddelay(uint);//声明延时函数
voidmain(void)
{
uinti;
uchartemp;
while
(1)
{
temp=0x01;
for(i=0;i<8;i++)//8个流水灯逐个闪动
{
P1=~temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++)//8个流水灯反向逐个闪动
{
P1=~temp;
delay(100);//调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++)//8个流水灯依次全部点亮
{
P1=temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++)//8个流水灯依次反向全部点亮
{
P1=temp;
delay(100);//调用延时函数
temp>>=1;
}
}
}
voiddelay(uintt)//定义延时函数
{
registeruintbt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
/************************************************************
*89C51、S51单片机32个IO口流水灯测试程序
*Flash0、1、2、3分别对应单片机的P0、1、2、3四个口
*a程序对应流水灯从全灭到一个一个亮
*b程序对应流水灯从全亮到一个一个灭
*2006-7-2610:
57,OK!
*************************************************************/
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineTimeDelay60000
voiddelay(uintn);
voidFlash0a(void);
voidFlash0b(void);
voidFlash1a(void);
voidFlash1b(void);
voidFlash2a(void);
voidFlash2b(void);
voidFlash3a(void);
voidFlash3b(void);
/************************************************************
*Function:
主函数
*parameter:
*Return:
*Modify:
*************************************************************/
voidmain(void)
{
while
(1)
{
Flash1b();
Flash1a();
delay(TimeDelay);
delay(TimeDelay);
Flash0b();
Flash0a();
Flash2b();
Flash2a();
Flash1b();
Flash1a();
Flash3b();
Flash3a();
}
}
/************************************************************
*Function:
延时
*parameter:
*Return:
*Modify:
*************************************************************/
voiddelay(uintn)
{
while(n!
=0)
{
n--;
}
}
voidFlash0a(void)
{
uchari;
ucharTemp;
Temp=0x80;
for(i=0;i<8;i++)
{
P0=~Temp;
delay(TimeDelay);
Temp=Temp>>1;
}
P0=0xff;
}
voidFlash0b(void)
{
uchari;
ucharTemp;
Temp=0x80;
for(i=0;i<8;i++)
{
P0=Temp;
delay(TimeDelay);
Temp=Temp>>1;
}
P0=0;
}
voidFlash1a(void)
{
uchari;
ucharTemp;
P1=1;
Temp=0x80;
for(i=0;i<8;i++)
{
P1=~Temp;
delay(TimeDelay);
Temp=Temp>>1;
}
P1=0xff;
}
voidFlash1b(void)
{
uchari;
ucharTemp;
P1=1;
Temp=0x80;
for(i=0;i<8;i++)
{
P1=Temp;
delay(TimeDelay);
Temp=Temp>>1;
}
P1=0;
}
voidFlash2a(void)
{
uchari;
ucharTemp;
P2=1;
Temp=0x80;
for(i=0;i<8;i++)
{
P2=~Temp;
delay(TimeDelay);
Temp=Temp>>1;
}
P2=0xff;
}
voidFlash2b(void)
{
uchari;
ucharTemp;
P2=1;
Temp=0x80;
for(i=0;i<8;i++)
{
P2=Temp;
delay(TimeDelay);
Temp=Temp>>1;
}
P2=0;
}
voidFlash3a(void)
{
uchari;
ucharTemp;
P3=1;
Temp=0x80;
for(i=0;i<8;i++)
{
P3=~Temp;
delay(TimeDelay);
Temp=Temp>>1;
}
P3=0xff;
}
voidFlash3b(void)
{
uchari;
ucharTemp;
P3=1;
Temp=0x80;
for(i=0;i<8;i++)
{
P3=Temp;
delay(TimeDelay);
Temp=Temp>>1;
}
P3=0;
}
===========
;P1口八个LED灯做三路流水灯实验
;***************************************************************
;*Date:
2004.4.20*
;***************************************************************
ORG0000H
LJMPMAIN
ORG030H
MAIN:
MOVP1,#0DBH;11011011--0为亮,1为灭
ACALLDELAY
MOVP1,#06DH;01101101
ACALLDELAY
MOVP1,#0B6H;10110110
ACALLDELAY
AJMPMAIN
DELAY:
MOVR7,#255;延时子程序
D1:
MOVR6,#255
D2:
DJNZR6,D2
DJNZR7,D1
RET
END
六、硬件制作与调试
硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。
没有出现什么问题。
用所给的调试程序,调试结果很好,各模块都能正常工作。
静态调试一般采用的工具是万用表,其是在用户系统未工作时的一种硬件检测。
动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。
调试步骤是:
首先把电路分成若干模块,调式过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。
七、设计总结
通过这次课程设计,我明白了一次不能将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
但本次的课程设计过程中也出现了不少问题,如若遇到问题,应该检查电路本身是否有问题,有无短路或断路。
经过这两周的课程设计,使我对单片机系统有了更深的认识,更加是锻炼了我对所学知识的认知应用能力,在老师的悉心指导下,使我们认识到课程的重要性,同时也感受到理论与实践之间的差距,使我们对单片机系统的应用有了更加深刻的认识。
通过本次课程设计,又进一步巩固了KEIL软件的使用方法,并学会了一些看似简单但又不一定会的东西,例如如何烧程序到芯片内以及如何对做出的硬件进行硬件和软件调试等。
在软件设计过程中,通过查阅资料学会了许多指令的使用及其适用范围。
七、参考文献
《单片机实验与应用设计教程》冶金工业出版社邓红张越
《单片机原理及接口技术》清华大学出版社胡汉才
《MCS-51系列单片机原理与接口技术》人民邮电出版社李玉峰倪虹霞