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

单片机的数字电压表课程设计报告.docVIP

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

课程设计报告

一、题目:基于单片机的数字电压表

二、内容和要求:

内容:利用带有ADC的STC12C5A60S2单片机、1602LCD显示器设计一个数字电压表,要求:4位数码LCD显示,测量范围:0~5V。带8位LED。可自行添加器件实现其它功能。

三、目的与意义:

1、掌握单片机应用系统设计的基本方法;

2、掌握模数转换电路原理及其应用;

3、掌握单片机外围电路接口设计;

4、掌握单片机应用软件编程的基本方法;

5、掌握单片机应用系统制作、调试的基本方法。

四、课程设计过程:

1、总体方案与设计思路:

系统主要功能:

1、ADC转换;

2、数据处理,包括乘除法;

3、格式转换,二进制转十进制;

4、LCD显示。

主要器件:

一、元件清单

1、STC12C5A60S2()单片机1片、40脚集成电路插座1个

2、12M晶振1个、30p瓷片电容2个;

3、LED:红、绿、黄各3个,蓝、白各1个(8个作为流水灯、交通灯、步进电机演示,要求至少4色);

4、轻触开关5个(4个作为按键,1个作为复位);

5、脚自锁电源开关1个;

6、1k、4.7K排阻各1个、10k电阻1个、可调电阻1个;

7、40脚排针、排插各1个;

8、1602LCD;

9、复位电路:22uf电解电容1个、1k电阻1个。

10、电源每2人一组;

11、USB转串口数据线每2人1条(TTL电平)

二、需要自配的元件:

1、22uf电解电容1个;

2、3.5mm电源插座1个。

电路设计思路:

本次课程设计使用的单片机为STC12C5A60S2增强型单片机,带有ADC转换器,为8路电压输入型。输入口为P1口。P1口既可以设为I/O口,又可以设为A/D转换口。本次设计使用P1.0做为A\D转换输入口,输入电压经一个10K限流电阻连接P1.0口,输入电压为系统电压,经一滑动变阻器接接到P1.0口。

LCD的数据/命令输入端口接下单片机的P0口,P0口接上一个1K的排阻作为上拉电阻。LCD的RS(数据/命令选择端4引脚)、RW(读写选择端5引脚)、E(使能信号端6引脚)分别接于P2的P2.0、P2.1、P2.2。四个轻触开关分别接在P2的4、5、6、7口。

2、原设计Proteus原理图

在以上电路中必须加入3.5mm电源插座和电源开关。

3、电路原理图;

4、PCB版图;

四、软件设计:

1)系统框图:

输入电压

输入电压

ADC转换

数据处理并送LCD显示

ADC转换:本次使用的单片机是带ADC转换的逐次比较型的ADC,ADC换口在P1口(P1.7-P1.0),有8路10位高速转换器。本次设计使用P1.0口作模拟电压输入,ADC将模拟电压转化为相应的数字量。

数据处理并LCD显示:ADC转换得到的二制数只是二进制数,还需要进一步处理得到十进数,并且进行精度处理,也就是课题要求的四位有效数据。对数据的处理按下工式

式中D为ADC的转换的二进数,V为显示的数据。V设为浮点型数,乘以1000后强制转换为整型。则得到四位有效数据。再依次除于1000取商则得个位,取余除于100取商则得十分位,再取余除10则得百分位,取余则得千分位。将各位加0x30转化为ASCII码后送LCD显示。

2)软件流程图

子程序流程图

主程序的流程图Write_com()LCD写命令函数

write_data()LCD写数据函数 Initlcd()LCD初始化函数

Initadc()ADC初始化函数get_data()ADC启动函数

change_data()数据处理并显示函数delay()延时函数

开始Resl=ADC_RES

开始

Resl=ADC_RES

resl=(resl2)+ADC_RESL

vin=resl*5.0/1023

resl=(uint(vin*1000)

分别取出现resl的个位、十位、百位、千位

转化成ASCII码并

送LCD显示

结果

floatvin

uintresl

uchari

开始

unitx,y

y=110

y0

x=z

x0

结束

y--

x--

Y

N

Y

N

源程序

#includestc12c5a.h

#define ucharunsignedchar

#defineuintunsignedint

sbitlcdrs=P2^0;//LCD数据/命令选择端

sbitlcdrw=P2^1;//LCD读写控制端

sbitlcden=P2^2;//L

文档评论(0)

199****8042 + 关注
实名认证
文档贡献者

相信自己,相信明天

1亿VIP精品文档

相关文档