单片机数字电压表(带仿真图+C程序)_第1页
单片机数字电压表(带仿真图+C程序)_第2页
单片机数字电压表(带仿真图+C程序)_第3页
单片机数字电压表(带仿真图+C程序)_第4页
单片机数字电压表(带仿真图+C程序)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于 51 单片机数字电压表 本模块采用 ADC0832 模数转换芯片 LCD1602 液晶显示 测量范 围 0 5V 精度误差 0 01V 看了很多网上的课程设计或者毕业论文 得出以下几点 1 数字电压表的方案有很多种 有的采用 ADC0809 或者 ADC0808 等 他们都是 8 温 AD 并口传输数据 具有速率高的优点 但是硬件复杂 与单片机电路繁琐 焊接 起来比较麻烦 所以本设计采用 ADC0832 同样 8 位 AD 特点是串口传输数据 硬件接口简单 且 精度误差一致 速率也比较快 对于要求不高的系统非常适合 2 显示电路 网上采用 LED 显示居多 本设计采用 LCD1602 液晶显示 具有硬件搭设 简单 显示美观等优点 3 本设计方便移植 只需将 LCD1602 三个控制端口 ADC0832 四个控制端口修改即可 注意 LCD1602 数据传输接口是单片机的 P0 口 如下图 需要接上拉电阻 4 程序采用 C 代码编写 亲测直接可以使用 若需仿真文件 请用 E mail 联系邮系 邮箱 gnsywb 5 网上很多设计数据转换程序有误 不够正确 在转换过程中 中间变量需设置为 int 类型 虽然 8 位 AD 输出最高位 255 但是余数转换过程中会大于 255 若设计 char 型 会造成显示输出有误 void convert uchar a uint temp 特别注意这里需定义 int 型 余数将大于 255 dis 0 a 51 取个位 temp a 51 temp temp 10 dis 1 temp 51 取小数点后第一位 temp temp 51 temp temp 10 dis 2 temp 51 取小数点后第二位 具体电路图如下 1 利用电压表与测量显示电压对比 附录 C 程序 功能 单片机数字电压表 ADC0832 LCD1602 1 测量范围 0 5V 2 2 路输入电压 可自行设定 3 测量精度误差 0 01V LCD 液晶显示 编写者 小子在西藏 gnsywb 编写日期 2012 11 5 include include define uint unsigned int define uchar unsigned char sbit lcdrs P2 4 sbit lcdrw P2 5 sbit lcden P2 6 1602 控制端口 sbit DI P3 4 sbit DO P3 4 DI 和 DO 与单片机共接口 sbit Clk P3 3 sbit CS P3 5 ADC0832 控制端口 uchar dis 3 0 x00 0 x00 0 x00 显示缓冲区 uchar date 0 AD 值 uchar CH ADC0832 通道值 AD0832 转换程序 uchar ADC0832 uchar CH uchar i dis0 dis1 Clk 0 拉低时钟 DI 1 初始化 nop CS 0 芯片选定 nop Clk 1 拉高时钟 nop if CH 0 通道选择 Clk 0 第一次拉低时钟 DI 1 通道 0 的第一位 nop Clk 1 拉高时钟 nop Clk 0 第二次拉低时钟 ADC0832 DI 接受数据 DI 0 通道 0 的第二位 nop Clk 1 nop else Clk 0 DI 1 通道 1 的第一位 nop Clk 1 nop Clk 0 DI 1 通道 1 的第二位 nop Clk 1 nop Clk 0 第三次拉低时钟 此前 DI 两次赋值决定通道 DI 1 DI 开始失效 拉高电平 便于 DO 数据传输 for i 0 i 8 i 读取前 8 位的值 nop dis0 1 Clk 1 nop Clk 0 if DO dis0 0 x01 else dis0 0 x00 for i 0 i 1 if DO dis1 0 x80 else dis1 0 x00 nop Clk 1 nop Clk 0 if dis0 dis1 两次结束数据比较 若相等 date dis0 则赋值给 dat nop CS 1 释放 ADC0832 DO 1 拉高输出端 方便下次通道选择 DI 端有效 Clk 1 拉高时钟 return date 数据转换程序 功能 将 0 255 级换算成 0 00 5 00 的电压数 void convert uchar a uint temp 特别注意这里需定义 int 型 余数将大于 255 dis 0 a 51 取个位 temp a 51 temp temp 10 dis 1 temp 51 取小数点后第一位 temp temp 51 temp temp 10 dis 2 temp 51 取小数点后第二位 LCD1602 驱动程序 void delay uchar z uint x y for x z x 0 x for y 122 y 0 y void write cmd uchar cmd lcd1602 写命令函数 lcdrs 0 lcdrw 0 选择指令寄存器 lcden 1 P0 cmd 写数据 delay 5 lcden 0 使能拉低 lcden 1 void write date uchar date lcd1602 写数据函数 lcdrs 1 lcdrw 0 选择数据寄存器 lcden 1 P0 date 写数据 delay 5 lcden 0 使能拉低 lcden 1 void init lcd1602 lcd1602 初始化 write cmd 0 x01 清屏 write cmd 0 x38 功能设置 write cmd 0 x0c 显示设置 write cmd 0 x06 输入方式从左到右 delay 1 显示函数 void display void uchar i write cmd 0 x80 for i 0 i 3 i if i 1 write date 第二位显示小数点 write date 0 x30 dis i delay 5 write date V 最后一位后显示字符 V 主函数 void main void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论