ADC0832数字电压表例程代码,附件中自取
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
数字电压表单片机源程序如下:
- #include<reg52.h>
- #include <intrins.h>
- #include <delay.h>
- #include <lcd1602.h>
- #include <adc0832.h>
- #include <led.h>
- #include<stdio.h>
- unsigned char code dianya[]="0123456789";
- unsigned char i,Volt=0;
- unsigned int V=0,bai,shi,ge,temp=0;
- float vprint;
- /*------------------------------------------------
- 串口通讯初始化
- ------------------------------------------------*/
- void UART_Init(void)
- {
- SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
- TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
- TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
- TR1 = 1; // TR1: timer 1 打开
- //EA = 1; //打开总中断
- //ES = 1; //打开串口中断
- TI=1;
- } //这一块与上位机通信的还没编写好!!
- /*------------------------------------------------
- 显示
- ------------------------------------------------*/
- void display(void)
- { LCD_Write_Char(6,1,dianya[bai]);
- LCD_Write_Char(7,1,0x2e);
- LCD_Write_Char(8,1,dianya[shi]);
- LCD_Write_Char(9,1,dianya[ge]);
- }
- main(void)
- { UART_Init();
- LCD_Init();
- LCD_Write_String(3,0," Volt Peak");
-
- while(1)
- { V= Adc0832(0); //刚开始一瞬间这个值有变化
- Volt=Adc0832(0);//到这里不会有变化了
- if(temp<Volt)temp=Volt;
-
- vprint=(float)(temp*5.0/255);
- // Send adc results to the serial interface
- printf("Volt Peak: %7.3f\n",vprint);
- V=(unsigned int)((temp*100)/51);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
proteus数字电压表.rar
(84.99 KB, 下载次数: 101)
|