版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、哈尔滨理工大学荣成学院单片机课程设计题目:基于 TLC549的A/D转换班级: 电信121姓名:1 .简介32 .实现方案32.1 主控模块设计 32.2 LCD显示模块设计 42.3 A/D转换模块设计 42.4 TLC549 介绍42.4.1 TLC549 工作原理42.4.2 TLC549 特点42.5 AT89C52工作原理 52.6 1602液晶显示屏工作原理 63 .系统软件设计 63.1 算法设计73.3 程序设计7(2)定时器T0中断服务函数设计 9(5) LCD显示函数设计 104 .源程序代码104.1 Main 函数模块 104.1.1 定时器T0初始化函数模块 114.
2、1.2 定时器工作模块 124.1.3 TLC549 读取模块124.1.4 延时模块134.2 LCD1602 函数模块 134.2.1 延时模块134.2.2 LCD1602 命令模块144.2.3 数据写入模块144.2.4 清屏指令144.2.5 初始化164.3 LCD1602端口和命令定义模块 165 .实验总结176 .参考文献181 .简介电压表作为电子应用领域必不可少的工具,其性能越来越受到人们的广泛关注。传统的模拟电压表由于设计较复杂,精度较低,不适合一般应用。数字电压表是诸多数字化仪表的核心 与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加
3、 以显示,这有别于传统的以指针加刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。采用单片机设计的数字电压表 ,以其精度高、抗干扰能力强、可扩展性强、集成方便、价格 低廉等优点得到了普遍应用。其内部核心部件是A/D转换器,转换器的精度很大程度上影响着数字万用表的准确度。本课程设计采用 A/D转换器TLC549对电压测量电路测出的输入模拟信号电压值进行转换,控制核心AT89C52RC1对转换的结果进行运算和处理,最后驱动输出显示装置 LCD1602显示 数字电压信号。2 .实现方案系统的硬件采用模块化设计 ,以单片机主控器为核心,与LCD显示电路、A/D转换电路等组 成数字电压表控制系统。主要包
4、括单片机主控模块、LCD显示模块、A/D模块等。其中单片机主控模块主要完成外围硬件的控制以及运算功能;LCD显示模块完成字符、数字的显示功能;A/D模块由A/D芯片实现A/D转换,输出电压的数字量通过液晶LCD显示。系统硬件组成方框图如图1所示。图1系统硬件组成方框图2.1 主控模块设计在大部分的工控或测控设备中 ,8位的MCS-51系列单片机能够满足大部分的控制要求 ,加 之MCS-51系列单片机的价格优势,使MCS-51系列单片机成为单片机应用主流。 AT89C52是 目前应用比较广泛的 MCS-51系列兼容单片机中的代表产品。鉴于此 ,本系统选用AT89C52 单片机作为主控制器。2.2
5、 LCD显示模块设计字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用的有16X1、16X2、20X2和40X2行等模块。本系统选用 1602字符型LCD模块,其控制器为日 立公司生产的HD44780,可以用来显示数字、字符等。2.3 A/D转换模块设计A/D模块由A/D芯片和电压测量电路组成,通过电压测量电路测得输入电压 ,并转换为0 5V的标准信号。本系统选用TI公司生产的一种低价位、高性能的 8位A/D芯片TLC549。2.4 TLC549 介绍2.4.1 TLC549工作原理当/CS变为低电平后,TLC549芯片被选中,同时前次转换结果的最高有效位MSB (A
6、7)自DATA OUT 端输出,接着要求自I/O CLOCK端输入8个外部时钟信号,前 7个I/O CLOCK信号的作用,是配合TLC549输出前次转换结果的 A6-A0位,并为本次转换做准 备:在第4个I/O CLOCK 信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个I/O CLOCK信号的下降沿使片内采样 /保持电路进入保持状态并启动A/D开始转换。转换时间为36个系统时钟周期,最大为 17us。直到A/D转换完成前的这段时间内,TLC549的控制逻辑要求:或者/CS保持高电平,或者 I/O CLOCK 时钟端保持 36个系统时钟周期的低电平。由此可见,在自 TLC
7、549的I/O CLOCK 端输入8个外部时 钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次 A/D转换开始。2.4.2 TLC549 特点TLC549是采用IinCMOSTM 技术并以开关电容逐次逼近原理工作的8位串行A/D7芯片,可与通用微处理器、控制器通过I/O CLOCK、CS、DATA OUT三条口线进行串行接口。TLC549具有4MHz的片内系统时钟和软、硬件控制电路,转换时间最长为17 s,允许的最高转换速率为 40000次/s。总失调误差最大为土 0. 5LSB,典型功耗值为6 mWoTLC549 采用差分参考电压高阻输入,抗干
8、扰,可按比例量程校准转换范围,由于其VREF-接地时,(VREF+)-(VREF-) >1 V,故可用于较小信号的采样,此外,该芯片还单电源36V的供电范围。总之,TLC549具有控制口线少,时序简单,转换速度快,功耗低,价格便宜等特TLC549 的极限参数如下:电源电压:6. 5 V: 输入电压范围:0.3VVCC: +0.3V :输出电压范围:0.3VVCC: +0. 3 V; 峰值输入电流(任一输人端):土 10 mA; 峰值输人电流(所有输入端):± 30mA工作温度:TLC549C : 0 c 70C TLC549I : -40 C 85 c QTLC549M. -5
9、5"C 125 c 其芯片及原理图如图所示2.5AT89C52 工作原理AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板 CPU通信等。主要管脚有: XTAL1 (19脚)和XTAL2 (18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd (9脚)为复位输入端口,外接电阻电容组成的复位电路。 VCC (40脚)和VSS (20脚)为供电端口,分别接
10、 +5V 电源的正负端。P0P3为可编程通用I/O脚,其功能用途由软件定义, 在本设方t中,P0端 口(3239脚)被定义为N1功能控制端口,分别与 N1的相应功能管脚相连接,13脚定 义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接 N1的SDAS (18脚) 和SCLS (19脚)端口,12脚、27脚及28脚定义为握手信号功能端口, 连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。2:D2IL 逅P3T闻Pl.7P3.6,FIBps.atiF1I.5P1L4P3.1'INT1P1I.3PS.IMTOP1I.2P.I-'TXDP1.
11、1T2EX户3.DRKDFI.a'TZR.77A15P2.&'A14P2 a*A13EAP2 4!A12ALEP2.3.,AU1FSENP2 加Ml 口FZ1IASP2£L'AaPOTADFR5TFQ.&'AMP0&AD5FCJJ.'AMPO.S'ADaX7IAL2P0.2'AD2PO.IADiiPQ.ADQX7IAL1H3 q怕ATBQC5232 至 J+25 至 J7 至 3s.F.- t- 4 .U.- - - 1系统硬件电路原理图如图 3所示。._£-:Ft.2.6 1602液晶显示屏工
12、作原理1602液晶模块内部的字符发生存储器(CGROM)已经存储了 160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A勺代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母"A'因为1602识别的是ASCII码,试验可以用 ASCII码直接赋值,在单片机编程中还可以 用字符型常量或变量赋值,如'A'。读的时候,先读上面那列,再读左边那行,如:感叹号!的ASCII为0x21 ,字母B的ASCII为0x42 (前面加0
13、x表示十六进制)。以下是 1602的 16进制ASCII码表:3.系统软件设计系统的软件设计使用 C51编程,采用模块化设计方法,主要由主函数、定时器 T0中断服务函 数、A/D转换函数、计算 A/D转换值函数、LCD显示函数、LCD显示A/D转换值函数等模块 组成,系统软件结构框图如图 4所示。图4 系统软件结构框图3.1算法设计根据A/D转换芯片TLC549的工作时序,200ms进行一次A/D采样转换,可以利用定时器 T0定 时,基本定时时间为50ms,控制软计数器的累计次数为 4次,200ms(4 x 5ms)定时到时,产生定时器T0中断,在定日寸器T0中断服务函数中调用 算A/D转换值
14、函数把 A/D转换值转换为相应的 把输出电压(05V)的转换数字量显示在液晶3.2数据结构设计A/D转换函数进行 A/D采样转换,然后调用计ASCII码,最后通过LCD显示A/D转换值函数LCD1602上,数字量显示值范围为 04.98v。数据结构设计如表1所示。表1数字电压表控制系统数据结构设计符号存储单元含义缶拄P0POLCD16Q2 颇据赐 DB7 -DBORSP2- 0LCD1602版据/命令选择信号当P2. o=a为命令信号 当P2. 0=1,为城聚信号RWP2. 1LCD1602庭写选抻信号当P2. 1=01内与就据信号当P2. 1 = 1,为该制菇信号P2. 2LCD16C2便能
15、信号AD_CKP3. 5A/D芯片1LC540时粗信弓AD_OJTPS. 6A/D芯片TLCS49制培检出信号AD_CSP3- 7A/D芯片TLC549片选信号ohchLCD 160写命今人口奉酒或LCD 1 t02写雅话入口薄效ad blELdbl当前邙1 AD变量1 edtaa.1led Lcs.1效宇量埼出质百性显示值1edshiledsshi顺宇量府出情十性显示值11 edE*效宇量检出值十位显示值ke yt i mekeyt i me-定时软计效?5i1口/口乘梯转操位跋3.3程序设计(1)主函数设计主函数主要完成硬件初始化、数据初始化、函数调用等功能。初始化。首先初始化定时软计数器
16、值为0.00。调用LCD初始化函数,调用写入显示数据到LCD16020数设置LCD勺DDRA岫址为00H,调用延时函数,调用写入显示数据到 LCD1602 函数在LCD上显示字符数据第一行为“ volt ”,第二行为“ V”(电压单位)。定时初值计算。定时器 T0的定时时间为50ms,系统所用的石英晶体振荡频率为11.0592 MHz,因此,1个机器周期=1/石英频率X 12,即为12/11.059 2 ms,定时器的工作方式设置为方式1。 定时器设置。设定定时器T0工作方式:定时器、方式1,即TMOD01H。启动定时器T0, 即TRO= 1。开放定时器 T0中断以及总中断,即设定IE = 0
17、x82H。等待中断。定时器T0启动计时后,CPU等待定时中断的到来。当定时器 T0定时50ms后,进入定时器T0中断服务函数。主函数设计流程图如图所示。(2)定时器T0中断服务函数设计当定时器T0定时50ms后,进入定时器T0中断服务函数。首先重装定时器 T0初值,即THO= 0xee,TL0 = 0x00。每定时5ms一次,软计数器值减1。然后 判断软计数器值是否为 0:若值不为0,表明20ms(20ms采样一次)计时未到,这日T0中断函 数返回主函数,继续计时。若值为0,表明20ms(20ms采样一次)计时已到,重置软计数器初 值为4,为下次定时做准备,接着调用A/D转换函数进行 A/D采
18、样车t换,得到A/D采样转换值 adbl,然后调用计算A/D转换值ASCII码函数计算A/D采样转换值adbl相应的ASCII码, 再调用LCD显示A/D转换值函数把模拟量输入电压(05 V)的转换数字量显示在液晶LCD1602上,数字量显示彳1范围为 04.5v。最后T0中断函数返回主函数进行下一次A/D采样转换。A/D采样转换函数设计根据A/D转换芯片TLC549的工作时序,当片选信号CS为高电平时,数据出DATA OU嘲 处于高阻状态,此时时钟信号I/O CLOCK不起彳用,不能进行A/D转换。将片选信号 CS置低 电平,内部电路在测得 CS下降沿后,再等待两个内部时钟上升沿和一个下降沿
19、后,然后确认这一变化。首先定义变量i(表示A/D采样转换位数),并将芯片TLC549片选信号AD_CSK低电平,选 中该芯片。初始化 A/D采样转换值adbl为0,初始化变量i(A/D采样转换位数)为0。 判断A/D转换位数i是否小于8。如果i小于8,则将芯片TLC549时钟信号AD_CKt高电平,并把A/D采样转换值adbl 左移一位。然后判断 A/D采样转换串行数据输出信号 AD_OU促否为1:若AD_OU伪1,则将 A/D采样转换值adbladbl自加1。若AD_OU伪0,则A/D采样转换值adbladbl不变。再将芯片TLC549时钟信号AD_CKt低电平。最后将A/D转换位数i自加1
20、,并再次转向上面 的判断A/D转换位数i是否小于8。如果i不小于8,则把芯片TLC549片选信号AD_CSW高电平,结束A/D采样转换,并退 出A/D采样转换函数。(4)计算A/D转换值ASCII码函数模块设计要把AD转换值adbl显示在LCD上,需要把它转换为相应的 ASCII码。首先计算A/D转换值百位数 ASCII码:将A/D转换值adbl除以100得到的商与0x30(因为字 符数字09与其相应的ASCII码相差30H)相与。然后计算 A/D转换值十位数 ASCII码:将 A/D转换值adbl除以100得到的余数再除以10,得到的商与0x30(因为字符数字09与其 相应的ASCII码相差
21、30H)相与。再计算 A/D转换值个位数 ASCII码:将A/D转换值adbl除 以10得到的余数与0x30(因为字符数字09与其相应的ASCII码相差30H)相与。最后函 数返回。(5) LCD显示函数设计LCDLCD显示函数模块包括 LCD初始化函数、写入指令数据到 LCD函数、写入显示数据到 函数、LCD显示A/D转换值函数、延时函数等模块。4.源程序代码4.1 Main函数模块#include <reg52.h>#include <intrins.h>#include <stdio.h>#include ”1602.h”/包含头文件sbit TLC5
22、49_CS = P1A0;sbit TLC549_DO = Pil;sbit TLC549_CLK = Pi2;/TLC549片选,低电平有效/TLC549数字量输出/TLC549片外独立时钟sbit led = P0A7;/工作状态灯,闪烁为正常/空操作函数_nop_()必须的头文件unsigned char DO, num; float DO_F, volt,hh;/读土壤湿度返回值、定时器计数变量/ /读取返回值的20次累加值、最终转换系数bit flag = 1;/工作标志位unsigned char str1 = "Volt:"unsigned char str2
23、 = "0 V"unsigned char temp3;void InitTimer0();/声明定时器T0初始化函数void delayus(unsigned int t);/ 声明 延日i t 个机器 周期unsigned char TLC549_read();/ 声明 TLC549 读数字量 函数void main() (unsigned char i;/for 循环变量InitTimer0(); /初始化定时器T010LCD_init();delayus(1000);LCD_clear();LCD_write_string(1, 1, strl);LCD_write
24、_string(2, 1, str2);while(1)if(flag)/标志位清零flag = 0;for( i = 0 ; i < 20 ; i+ )/累加/累加彳1除20求平均DO = TLC549_read(); / 读 DO_F = DO_F + DO;DO_F = DO_F / 20.00;volt = (float)( DO_F * 5 ) / 256.00);/ TLC549 是8位A/D芯片/ 2 的8次方是256/即转换所得数值为 0-255 /所以乘以基准电压再除以精度sprintf(temp, "%4.2f", volt);LCD_write_
25、string(2, 7, temp);if(volt>4.5|volt<0.5)led=1;if(volt>0.5&&volt<4.5) led=0;4.1.1 定时器T0初始化函数模块void InitTimer0() 11TMOD = 0x01;/选择定时器 T0TH0 = 0x4C;/ 定时 50 毫秒TL0 = 0x00;EA = 1;/开总中断ET0 = 1;/开定时器T0中断TR0 = 1;/使能定时器T0)4.1.2定时器工作模块void Timer0Interrupt() interrupt 1(TH0 = 0x4C;/重装初值TL0 =
26、 0x00;num+;if(num=10) (num = 0;flag = 1;) )4.1.3 TLC549读取模块unsigned char TLC549_read()(unsigned char i , temp;TLC549_CS = 1;/ 关闭片选TLC549_CLK = 0;TLC549_CS = 0;_nop_();_nop_();for( i = 0; i < 8; i+ )(temp <<= 1;/计数变量增加1/每500毫秒读一次数字量/定时50毫秒,即每50毫秒进1次中断,num加1/进10次中断后num为10,即过了 500毫秒/num清零,标志位置
27、 1/时钟线拉低打开片选/空操作等待两个机器周期待总线稳定/循环8次读出8位转换结果temp |= TLC549_DO;TLC549_CLK = 1;12_nop_();TLC549_CLK = 0;TLC549_CS = 1;delayus(14);return temp;/TLC549转换速度小于14微秒,/返回转换值大致延时14微秒等待转换结束4.1.3延时模块void delayus(unsigned int t)/延时函数,延时t个机器周期while(-t);4.2 LCD1602 函数模块#include ”1602.h”4.2.1 延时模块void delayus1602(uns
28、igned char t)while(-t);void delayms1602(unsigned char t)/大致延时t毫秒while(t-)delayus1602(245);delayus1602(245);void LCD_check_busy()/判盲RS = 0;13RW = 1;EN = 1;while(P0 & 0x80)=0x80);delayus1602(2);EN = 0;4.2.2 LCD1602命令模块void LCD_write_com(unsigned char com)LCD_check_busy();RS = 0;RW = 0;EN = 1;P0 =
29、com;delayus1602(2);EN = 0;4.2.3 数据写入模块void LCD_write_Data(unsigned char Data)LCD_check_busy();RS = 1;RW = 0;EN = 1;P0 = Data;delayus1602(2);EN = 0;4.2.4清屏指令void LCD_clear()LCD_write_com(0x01);delayms1602(5);14/void LCD_write_char(unsigned char x , unsigned char y , unsigned char c)/在第x行第y位写字符/ LCD_c
30、heck_busy();/ if( x = 1 )/ LCD_write_com(0x80 + y - 1);/)/ if( x = 2 )/ LCD_write_com(0xc0 + y - 1);/)/ LCD_write_Data(c);/)void LCD_write_string(unsigned char x , unsigned char y , unsigned char *s)/在第x行第y位写字符串LCD_check_busy();if( x = 1 )LCD_write_com(0x80 + y - 1);)else if( x = 2 )LCD_write_com(0x
31、c0 + y - 1);)while(*s)LCD_write_Data(*s);s+;)154.2.4 初始化void LCD_init()(delayms1602(15);LCD_write_com(0x38);delayms1602(5);LCD_write_com(0x38);8 位总线、双行 5X 7 点阵LCD_write_com(0x08);LCD_write_com(0x01);LCD_write_com(0x06);delayms1602(5);LCD_write_com(0x0c);/void LCD_user(unsigned char x , unsigned char
32、 *user)/向CGRAMI入自定义字符/形参x为CGRA岫定义字符的地址序号,序号范围07/ unsigned char i;形参*user为主函数文件中自定义字符的字模数组名/for(i=0;i<8;i+)/LCD_write_com(0x40+x*8+i);/LCD_write_Data(useri);4.3 LCD1602端口和命令定义模块#ifndef _1602_H_#define _1602_H_#include <reg52.h>sbit RS = P2A2;/定义1602各个控制位sbit RW = P2A1;sbit EN = P2A0;16void LCD_check_busy();/判忙void LCD_write_com(unsigned char com);/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉首大学《历史民族学》2021-2022学年第一学期期末试卷
- 吉首大学《电力系统稳态分析》2021-2022学年期末试卷
- 《机加工艺方案设计与实施》考试卷A卷标准答案及评分标准
- 吉林艺术学院《影视色彩处理》2021-2022学年第一学期期末试卷
- 吉林艺术学院《视唱III》2021-2022学年第一学期期末试卷
- 地铁接管协议书范本范本下载
- 父母躲避赔偿协议书范文范本
- 吉林师范大学《指挥法I》2021-2022学年第一学期期末试卷
- 吉林师范大学《信息设计》2021-2022学年第一学期期末试卷
- 规范化培训终止协议书范文模板
- 【课件】+布局经营-绘画构图基础+课件高中美术人美版(2019)选择性必修1+绘画
- 《BIQS基础培训》课件
- 停车场系统合同范本
- 2023年国家执业兽医资格考试试卷及参考答案下午卷1
- 偏差行为、卓越一生3.0版
- 企业政府沟通与合作制度
- 2024建筑外墙风貌改造工程承包合同
- 2023年中级经济师《人力资源管理》(真题卷)(11月11日下午)
- 【浅析PLC在数控机床中的应用5000字(论文)】
- 家长会课件:主题班会高二家长会课件
- 肋骨骨折健康宣教内容
评论
0/150
提交评论