建设一个机械公司网站多少钱,怎么制作表格教程,网站flash效果,网站开发环境安装程序PCF8591数字电压表数码管显示 1.主要功能#xff1a;讲解视频#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单下载链接资料下载链接#xff08;可点击#xff09;#xff1a; 基于51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲… PCF8591数字电压表数码管显示 1.主要功能讲解视频2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单下载链接资料下载链接可点击 基于51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲解视频
仿真图proteus7.8及以上
程序编译器keil 4/keil 5
编程语言C语言
设计编号S0059
1.主要功能
基于51单片机AT89C51/52与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用
基于51单片机的数字电压表设计
1.采用PCF8591实现AD采样功能;
2.采样电压范围0-5V;
3.用数码管显示转换后的实际电压值
4.显示保留小数点后两位。
需注意仿真中51单片机芯片是兼容的AT89C51,AT89C52是51单片机的具体型号内核是一样的。相同的原理图里无论stc还是at都一样引脚功能都是一样的程序是兼容的芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
以下为本设计资料展示图
讲解视频
仿真讲解代码讲解 51单片机PCF8591数字电压表数码管( proteus仿真程序报告讲解 2.仿真
开始仿真
打开仿真工程双击proteus中的单片机选择hex文件路径然后开始仿真。数码管显示电压值精确到小数点后两位。可以调整范围0-5V。 3. 程序代码
使用keil4或者keil5编译代码有注释可以结合报告理解代码含义。 main函数
main()
{ while(1){/********以下AD-DA处理*************/ PCF8591_SendByte(AddWr,0); //启动转换D[0]PCF8591_RcvByte(AddWr); //读转换完的数字信号ADC0 模数转换 范围是256-0vol_value PCF8591_RcvByte(AddWr); vol_value vol_value*5.0*100/256;//得到范围是500-0方便显示dis[0] (vol_value%1000)/100; //百dis[1] (vol_value%100)/10; //十dis[2] vol_value%10; C4 C2 C1 0; //关闭134数码管C31; //打开第2位数码管Dp0; //打开小数点P1table[dis[0]]; //显示整数部分及小数点delay(10); //延时一定时间 C4 C3 C10; //关闭第124位数码管C21; //打开第3位数码管Dp1; P1table[dis[1]]; delay(10); C4 C3 C2 0; //关闭123数码管C11; //打开第4位数码管Dp1; P1table[dis[2]]; delay(10); //延时一定时间}
}PCF8591相关操作函数
/************************************************************
* 函数名 : Pcf8591_SendByte
* 函数功能 : 写入一个控制命令
* 输入 : addr器件地址channel转换通道
* 输出 : 无
************************************************************/
bit PCF8591_SendByte(unsigned char addr,unsigned char channel)
{Start_I2c(); //启动总线I2C_SendByte(addr); //发送器件地址if(ack0)return(0);I2C_SendByte(0x40|channel); //发送控制字节if(ack0)return(0);Stop_I2c(); //结束总线return(1);
}/************************************************************
* 函数名 : PCF8591_RcvByte
* 函数功能 : 读取一个转换值
* 输入 :
* 输出 : dat
************************************************************/
unsigned char PCF8591_RcvByte(unsigned char addr)
{ unsigned char dat;Start_I2c(); //启动总线I2C_SendByte(addr1); //发送器件地址if(ack0)return(0);datI2C_RcvByte(); //读取数据0Ack_I2c(1); //发送非应答信号Stop_I2c(); //结束总线return(dat);
}
IIC通信函数
/*******************************************************************起动总线函数
函数原型: void Start_I2c();
功能: 启动I2C总线,即发送I2C起始条件.
********************************************************************/
void Start_I2c()
{sda1; /*发送起始条件的数据信号*/_nop_();scl1;_nop_(); /*起始条件建立时间大于4.7us,延时*/_nop_();_nop_();_nop_();_nop_(); sda0; /*发送起始信号*/_nop_(); /* 起始条件锁定时间大于4μs*/_nop_();_nop_();_nop_();_nop_(); scl0; /*钳住I2C总线准备发送或接收数据 */_nop_();_nop_();
}/*******************************************************************结束总线函数
函数原型: void Stop_I2c();
功能: 结束I2C总线,即发送I2C结束条件.
********************************************************************/
void Stop_I2c()
{sda0; /*发送结束条件的数据信号*/_nop_(); /*发送结束条件的时钟信号*/scl1; /*结束条件建立时间大于4μs*/_nop_();_nop_();_nop_();_nop_();_nop_();sda1; /*发送I2C总线结束信号*/_nop_();_nop_();_nop_();_nop_();
}/*******************************************************************字节数据发送函数
函数原型: void I2C_SendByte(UCHAR c);
功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack0) 发送数据正常ack1; ack0表示被控器无应答或损坏。
********************************************************************/
void I2C_SendByte(unsigned char c)
{unsigned char i;for(i0;i8;i) /*要传送的数据长度为8位*/{if((ci)0x80)sda1; /*判断发送位*/else sda0; _nop_();scl1; /*置时钟线为高通知被控器开始接收数据位*/_nop_(); _nop_(); /*保证时钟高电平周期大于4μs*/_nop_();_nop_();_nop_(); scl0; }_nop_();_nop_();sda1; /*8位发送完后释放数据线准备接收应答位*/_nop_();_nop_(); scl1;_nop_();_nop_();_nop_();if(sda1)ack0; else ack1; /*判断是否接收到应答信号*/scl0;_nop_();_nop_();
}/*******************************************************************字节数据接收函数
函数原型: UCHAR I2C_RcvByte();
功能: 用来接收从器件传来的数据,并判断总线错误(不发应答信号)发完后请用应答函数应答从机。
********************************************************************/
unsigned char I2C_RcvByte()
{unsigned char retc0,i; sda1; /*置数据线为输入方式*/for(i0;i8;i){_nop_(); scl0; /*置时钟线为低准备接收数据位*/_nop_();_nop_(); /*时钟低电平周期大于4.7μs*/_nop_();_nop_();_nop_();scl1; /*置时钟线为高使数据线上数据有效*/_nop_();_nop_();retcretc1;if(sda1)retcretc1; /*读数据位,接收的数据位放入retc中 */_nop_();_nop_(); }scl0; _nop_();_nop_();return(retc);
}
4. 设计报告
5133字设计报告内容包括硬件设计、软件设计、软硬件框图、调试、结论等 5. 设计资料内容清单下载链接
资料设计资料包括仿真程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。
0、常见使用问题及解决方法–必读
1、仿真图
2、程序源码
3、功能要求
4、开题报告
5、设计报告
6、软硬件流程框图
7、讲解视频
Altium Designer 软件资料
KEIL软件资料
Proteus软件资料
单片机学习资料
答辩技巧
设计报告常用描述
鼠标双击打开查找更多51 STM32单片机课程毕业设计.url 资料下载链接可点击
https://docs.qq.com/doc/DS21ESENWS3RDdGFH