单片机原理及应用
课程设计汇报书
题目:简易数字电压表设计
姓名:
学号:
专业:电气工程及其自动化
指导老师:邓方雄
设计时间: 5 月
电子和信息工程学院
目录
1. 引言..........................................................................................................................................1
1.1. 设计意义....................................................................................................................1
1.2. 系统功效要求............................................................................................................1
2. 方案设计....................................................................................................................................1
3. 硬件设计....................................................................................................................................2
4. 软件设计....................................................................................................................................3
5. 系统调试....................................................................................................................................5
6. 设计总结....................................................................................................................................5
7. 附录A;源程序.......................................................................................................................6
8. 附录B;作品实物图片.........................................................................................................10
9. 参考文件..................................................................................................................................11
简易数字电压表设计
1.引言
1.1.设计意义
本课题设计是基于ATC52单片机为控制系统,ADC0809 为转换简易数字电压表。其意义关键有两个方面:其一,关键是检验我们对单片机原理及应用这门课掌握程度包含硬件组装和软件调试;其二,了解单片机应用。
1.2.系统功效要求
简易数字电压表能够测量0-5V8路输入电压值,并在4位LED数码管上轮番显示或单路选择显示。测量误差约为0.02V。
2.方案设计
按系统功效实现要求,决定控制系统采取ATC52单片机,A/D 转换采取ADC0809.系统除能实现要求功效外,还能方便进行8路其它A/D转换量测量,远程测量结果传送等拓展功效。数字电压表系统设计方案框图图2.1所表示:
ATC52 | P0 | ADC0809 |
上位复电
P2
串口通信
电源电路 | P1 | 4 位LED 显示 |
P3 |
图2.1 数字电压表系统设计方案框图
3.硬件设计
简易数字电压测量由A/D转换、数据处理及显示控制等组成,电路原理图
图3.1所表示,A/D 转换有集成电路ADC0809完成。ADC0809据有8路模拟输入
端口,地址线(第23-25脚)可决定对哪一路模拟输入作A/D转换。第22脚为
地址锁存控制,当输入为高电平时,对地址信号进行锁存,第6脚为测试控制,
当输入一个2us宽高电平脉冲时,就开始A/D转换。第7脚为A/D转换结束标志,
当A/D转换结束时,第7脚输出高电平,第9脚为A/D转换数据输出许可控制,
当OE脚为高电平时,A/D 转换数据从端口输出。
单片机P1、P3.0~P3.3端口作为四位LED数码管显示控制。其中P1端口
控制段码,P3.0~P3.3端口控制位选。P3.5端口用作单路显示/循环转换按钮,
P3.6端口用作单路显示时选择显示通道。P0端口作A/D转换数据读入,P2 端口
用作ADC0809A/D转换控制。
个个个个 | 个个 | a | 个个 | a | 个个 | +5V | a | 510*8 | 244 | 2 1A1 2A1 11 2A2 13 2A3 15 2A4 17 | 1 | P1.0 | VCC | 40 | +5V | IN0 IN2 IN3 IN7 | 26 27 28 2 | +5V | 个个个个 | ||||
a | 18 1Y1 16 1Y2 | ||||||||||||||||||||||
b | b | b | b | ||||||||||||||||||||
17 | D0 D5 D6 | ||||||||||||||||||||||
c | c | c | c | 14 | 1Y3 | 2 | 39 | ||||||||||||||||
P0.0 | |||||||||||||||||||||||
d | 4.7K | d | 4.7K | d | 4.7K | d | 12 1Y4 | 3 | 38 | 个0-5V) | |||||||||||||
P1.2 | |||||||||||||||||||||||
e | e | e | e | 4 | 37 | ||||||||||||||||||
P1.3 | P0.2 | ||||||||||||||||||||||
f | f | f | f | 7 | 2Y2 | 5 | 36 | ||||||||||||||||
P1.4 | P0.3 | ||||||||||||||||||||||
g | g | g | g | 5 | 2Y3 | 6 | 35 | ||||||||||||||||
h | h | h | h | 3 | 2Y4 | 7 | 34 | ||||||||||||||||
P1.6 | P0.5 | ||||||||||||||||||||||
8 | 33 | ||||||||||||||||||||||
P1.7 | P0.6 | ||||||||||||||||||||||
32 | |||||||||||||||||||||||
10 P3.0/RXD 11 P3.1/TXD | P0.7 | ||||||||||||||||||||||
31 | |||||||||||||||||||||||
+5V | |||||||||||||||||||||||
CLOCK | 10 | ||||||||||||||||||||||
4.7K | |||||||||||||||||||||||
26 | 9 OE 6 START 22 ALE 23 C 25 A | VCC 11 V+ 12 GND 13 V_ 16 | |||||||||||||||||||||
12MHZ 30PF*2 | |||||||||||||||||||||||
12P3.2/INT0 | P2.5 | ||||||||||||||||||||||
+5V | |||||||||||||||||||||||
10K | 25 | ||||||||||||||||||||||
13 P3.3/INT1 | P2.4 | ||||||||||||||||||||||
24 | |||||||||||||||||||||||
GND | |||||||||||||||||||||||
23 | |||||||||||||||||||||||
15 P3.5/T1 20 19 XTAL1 VSS | P2.2 P3.7/RD P3.4/T0 | ||||||||||||||||||||||
10K | |||||||||||||||||||||||
22 | EOC | 7 | |||||||||||||||||||||
21 | |||||||||||||||||||||||
17 | |||||||||||||||||||||||
ADC0809 | |||||||||||||||||||||||
+ | |||||||||||||||||||||||
14 | |||||||||||||||||||||||
10uF | |||||||||||||||||||||||
9 | |||||||||||||||||||||||
GND | RST | ||||||||||||||||||||||
8.2k | 个个/个个 | 个个个个 | ATC52 | ||||||||||||||||||||
图3.1数字电压表电路原理图
ATC52芯片引脚图图3.2所表示
25 33 32 31 |
ATC52
图3.2ATC52 芯片引脚图
4.软件设计
系统上电后,优异行程序初始化。
在刚上电时,系统默认为循环显示8个通道电压值状态,当进行一次测量后,将显示每一通道A/D转换值,每个通道数据显示时间为1s左右。主程序在调用显示子程序和测量子程序之间循环。主程序步骤图如4.1所表示。
显示子程序采取动态扫描法实现4位数码管数值显示。测量所得A/D转换数据放在数组中,测量数据在显示时须经过转换成为十进制BCD码放在对应数组中。
A/D转换测量子程序用来控制对ADC08098路模拟输入电压A/D转换,并将对应数值放在数组中。A/D转换测量子程序步骤图图4.2所表示。
开始
初始化
调用A/D转换测量子程序
调用显示子程序
图4.1主程序步骤图
开始
开启测试(TESTART) A/D | N |
转换结束?
(P3.7=1? ) | Y |
取数据(P2.5=1)
ADC0809地址加1
Y | 地址数小于8? |
N
结束
图4.2A/D转换测量子程序步骤图
5.系统调试
线路连接完成后,首先检验是否有线松动情况,然后要将连接试验板正负极铜线切断,以免造成短路。
调试中分块检验错误,首先要检验数码管是否完好。判定选通位和段码是否线接好。 若数码管检验完成,无故障。则看数码管和单片机是否接通,通电,数码管是否显示。若不显示,则检验线路有没有虚焊。直至无误。 最终判定ADC0809是否起作用,
依据就是数码管是否循环显示。若不显示,仍然是检验线路有没有虚焊。硬件部分完成,则进行软件调试。
采取KielC51 编译器进行源程序编译及仿真调试,同时进行硬件电路板设计制作,烧录好程序后进行软硬件联调,最终进行端口电压对比测试。测试对比表以下表5-1所表示。
表5-1简易数字电压表和“标准”数字电压表对比测试表
标准电压值/V | 0.00 | 0.25 | 0.68 | 1.00 | 1.50 | 1.80 | 2.30 | 3.40 | 4.60 |
简易电压表测得值/V | 0.00 | 0.26 | 0.69 | 1.02 | 1.51 | 1.81 | 2.32 | 3.41 | 4.61 |
绝对误差/V | 0.00 | +0.01 | +0.01 | +0.02 | +0.01 | +0.01 | +0.02 | +0.01 | +0.01 |
6.设计总结
经过此次课程设计,对单片机接口技术连接有了一定掌握,以前是用单片机学习开发板,是现成模块。这次得亲自设计板块布局及其布线。 布局过程中,各芯片排列次序尤其关键,应尽可能降低连线,充足利用底板优势。布线方面,此次做较差,是焊一根线,再布一根线,在这点上得引发重视。对以后设计中,先计划好布线,然后再开始焊线。
试验中用到模/数转换芯片ADC0809,开始对其只有了一个初步认识。经过此次应用,掌握了其原理及其应用。
这是我第一次在底板反面焊线,反面焊线和正面焊线一个弊端之处,在于,
焊线很轻易脱焊。尤其是当焊完后过一段时间,再调试时,就很有可能会
不成功,得重新检验焊线情况。
然后还有一点值得注意是,焊线最终首先经过原理图画其反面实物连
接图,然后再开始焊接,不然很轻易犯错。在这点上我就出了错误,数码
管和ADC部分就焊接了两遍。
经过此次课程设计教训,相信会对以后设计起一定作用。
7.附录A;源程序
#include<reg52.h>
#include<intrins.h> //调用_nop_();延时函数用#define ad_con P2 //AD控制口
#define addata P0 //AD数据计入读入口#define Disdata
P1 //显示数据段码输出口#defineuchar unsigned char //无符号字符(8位)#defineuint unsigned int //无符号整数(16位)sbit ALE=P2^3; //锁存地址控制位sbit START=P2^4; //开启一次转换位sbit OE=P2^5; //0809输出数据控制位sbit EOC=P3^7; //转换结束标志位sbit DISX=Disdata^7; //LED小数点
sbitCLK=P3^4;
sbitda_xun=P3^5;
sbittongdao=P3^6;
ucharz,q;
uchar codedis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
/*共阳七段LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮"*/
ucharcode scan_con[4]={0xfe,0xfd,0xfb,0xf7}; //四位列扫描控制字 uchardata ad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//定义8个数据内存单元
uint data dis[5]={0x00,0x00,0x00,0x00,0x00}; //定义4个显示数据单元、1个数据暂存单元
/********1毫秒延时子函数**********/
voiddelay1ms(uint t)
{
uinti,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
voidt0(void) interrupt 1 using 3
{
CLK=~CLK;
}
test()
{
ucharm;
uchars=0x00;
TR0=1;
ad_con=s;
for(m=0;m<8;m++)
{ALE=0;
_nop_();
_nop_();
ALE=1; //转换通道地址锁存
START=1;
_nop_();_nop_();_nop_();_nop_();
START=0; //开始转换命令
_nop_();
_nop_();
_nop_();
_nop_(); //延时4微秒
while(EOC==0); OE=1;
ad_data[m]=addata;
OE=0;s++;
//等候转换结束
ad_con=s;//取AD 值, 地址加1
}
ad_con=0x00;
TR0=0;
}
scan(uchar i)
{ uchar k,n,m;
int h;
m=i;
dis[3]=0x00; //通道初值为0
If(m==0)
{
for(n=0;n<8;n++) //每次显示8个数据
{dis[2]=ad_data[n]/51; //测得值转换为三位BCD码,最大为5.00V
dis[4]=ad_data[n]%51; // 余数暂存
dis[4]=dis[4]*10; //计算小数第一位
dis[1]=dis[4]/51; //
dis[4]=dis[4]%51; //
dis[4]=dis[4]*10; //计算小数第二位
dis[0]=dis[4]/51; //
for(h=0;h<500;h++) { for(k=0;k<4;k++)
//每个通道值显示时间控制(约1秒)
//四位LED扫描控制
{ Disdata=dis_7[dis[k]];
if(k==2)
{DISX=0;}
P3=scan_con[k];
delay1ms(1);
P3=0xff;
}
}
dis[3]++; //通道值加1
};
if(n==8)
{
n=0;k=0;
}
}
if(m==1)
{
dis[3]=dis[3]+q;
dis[2]=ad_data[q]/51; //测得值转换为三位BCD码,最大为
5.00V
dis[4]=ad_data[q]%51; // 余数暂存
dis[4]=dis[4]*10; //计算小数第一位
dis[1]=dis[4]/51; //
dis[4]=dis[4]%51; //
dis[4]=dis[4]*10; //计算小数第二位
dis[0]=dis[4]/51; //
for(h=0;h<500;h++) { for(k=0;k<4;k++) {
//每个通道值显示时间控制(约1秒)
//四位LED扫描控制
Disdata=dis_7[dis[k]];
if(k==2)
{DISX=0;}
P3=scan_con[k];
delay1ms(3);
P3=0xff;
}
}
}
}
Void key()
{
if(da_xun==0)
{ delay1ms(1);
if(da_xun==0)
{ z=z++;
if(z==2)
{ z=0;
}
}
while(!da_xun);
}
if(tongdao==0)
{ delay1ms(1);
if(tongdao==0)
{ q++;
if(q>7)
{q=0;
}
}
while(!tongdao);
}
}
/**************主函数****************/
voidmain()
{
P0=0xff; //初始化端口
P2=0x00;
P1=0xff;
P3=0xff;
_nop_();
_nop_();
_nop_();
START=0;
OE=0;
TMOD=0x02; //定时器0为8位
TH0=245;
TL0=245; //40us
ET0=1;
EA=1;
z=1;
q=0;
While(1)
{ delay1ms(800);
key();
test(); //控制复位
scan(z);
}
}
//*********************结束**************************//
8.附录B;作品实物图片
9.参考文件
[1]张毅刚主编.单片机原理及应用.北京:高等教育出版社,.
[2]楼然苗,李光飞编著.单片机课程设计指导.北京:北京航空航天大学出版社,.
Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务