基于单片机20v数字电压表仿真系统设计

百度网盘下载地址(963):点击下载

#include <reg52.h>                                      /* 包含头文件 */
#include <math.h>
#include "uart.h"
#include "display.h"
#define uint	unsigned int
#define uchar	unsigned char                           /* 宏定义 */
sbit	ale	= P2 ^ 6;
sbit	start	= P2 ^ 7;
sbit	eoc	= P3 ^ 2;
sbit	oe	= P3 ^ 3;                               /* 定义adc0809的控制引脚 */
sbit	adda	= P2 ^ 0;
sbit	addb	= P2 ^ 1;
sbit	addc	= P2 ^ 2;                               /* adc0809的地址引脚 */
sbit	buzz	= P3 ^ 6;
sbit	led	= P3 ^ 7;

sbit		key1	= P3 ^ 4;
sbit		key2	= P3 ^ 5;
unsigned long	voltdata[8];
uint		realvolt, i, j, k, l, t, sum, a[5];     /* 定义全局变量 */
unsigned char	CH;
uchar		add;                                    /* 地址变量 */
uchar		TxBuf[8];                               /* 四个显示的位 */
unsigned char	t0Count;
unsigned char	flagAu	= 1;
uchar code	t1[]	= { "DC Voltmeter:IN " };
uchar code	t2[] = { " (0~20V):  .  V " };
uchar code	t3[] = { "      Hello!    " };
uchar code	t4[] = { "     Welcome!   " };          /* 初始化显示 */


/*
 * 函数说明
 */
void addselect()                                        /* 量程选择 */
{
	CH++;                                           /* 通道号加 */
	if ( CH > 7 )                                   /* 最大到7符号&:按位与符号,二进制的对应位如果都为1,那么结果的对应位就为1,否则为0 */
		CH = 0;                                 /* 清零,对应二进制是0000.0001.0010.0011.0100.0101.0110.0111 */
	adda	= CH & 0x01;                            /* 例如5通道计算方法:将通道对应的二进制0101&0001,结果就是0001,赋值给adda(引脚只能接受最低位的数据,只有1和0),那么adda引脚就是高电平 */
	addb	= (CH & 0x02) >> 1;                     /* 然后将通道5的二进制0101&0010,结果就是0000(因为所有位都不同),然后整组数据右移一位,赋值给addb,那么addb引脚就是低电平 */
	addc	= (CH & 0x04) >> 2;                     /* 然后将通道5的二进制0101&0100,结果就是0100,然后整组数据右移两位,赋值给addc,那么addc引脚就是高电平,最后芯片的通道选择引脚的状态就是101,则选择的就是通道5了 */
	delay( 5 );                                     /* 短延时 */
}

posted @ 2021-02-15 13:57  roadroad  阅读(85)  评论(0编辑  收藏  举报
电设屋
上千套电子毕设课设方案