基于单片机的数字电压表的设计与制作1(6)

2019-04-09 13:39

西安航空职业技术学院 毕业设计论文

附录 部分源程序

#include

#define uchar unsigned char #define uint unsigned int #include

//数码管段选定义 0 1 2 3 4 5 6 7 8 9

uchar

smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,

0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码

//数码管位选定义

uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};

uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; uchar smg_i = 3; //显示数码管的个位数

sbit SCL=P2^0; sbit DO=P2^1; sbit CS=P2^2;

sbit key1 = P2^3; sbit key2 = P2^4;

uchar nw_can ; // 内外电压的选择

/***********************1ms延时函数*****************************/ void delay_1ms(uint q) {

uint i,j; for(i=0;i

24

code

//SCL定义为P1口的第3位脚,连接ADC0832SCL脚

//DO定义为P1口的第4位脚,连接ADC0832DO脚 //CS定义为P1口的第4位脚,连接ADC0832CS脚

for(j=0;j<120;j++);

西安航空职业技术学院 毕业设计论文

/***********************小延时函数*****************************/ void delay_uint(uint q) {

while(q--); }

// 1 1 0 通道

// 1 1 1 通道

{

unsigned char i=0,value=0,value1=0;

SCL=0; DO=1; CS=0; SCL=1; SCL=0; DO=SGL;

SCL=1; //第二个上升沿 SCL=0; DO=ODD;

SCL=1; //第三个上升沿 SCL=0; //第三个下降沿 DO=1;

for(i=0;i<8;i++) { }

for(i=0;i<8;i++) {

//接收校验数据

value1>>=1; SCL=1;

SCL=0; //开始从第四个下降沿接收数据 value<<=1; if(DO)

value++;

//开始 //第一个上升沿

unsigned char ad0832read(bit SGL,bit ODD)

25

西安航空职业技术学院 毕业设计论文

}

}

if(DO)

value1+=0x80; SCL=1; SCL=0;

CS=1; SCL=1;

if(value==value1)

return value;

//与校验数据比较,正确就返回数

据,否则返回0

return 0;

/****************************************************/

void display() {

uchar i;

for(i=0;i

P1 = 0xff;

数码显示函数

//消隐

//段选

P3 = smg_we[i]; P1 = dis_smg[i]; delay_1ms(1);

//位选

}

/******************按键*********************/ void key() {

if(key1 == 0) {

if(key1 == 0) {

26

西安航空职业技术学院 毕业设计论文

}

}

nw_can = 0; //板子上可调电阻电压

if(key2 == 0) { } }

void main() {

uchar i; uint temp; while(1) {

dis_smg[1]=smg_du[temp/10]; //十位

temp = temp * 100 / 255 * 4.5; dis_smg[2]=smg_du[temp/100] & 0x7f;

//得到百位

else

temp = ad0832read(1,1); //循环255个周期读取一次

key(); //按键程序 display(); {

if(nw_can == 0)

temp = ad0832read(1,0); //循环255个周期读取一次

//数码管显示函数

if(i % 30 == 0) //循环30次 if(key2 == 0) { }

nw_can = 1; //板子上可调电阻电压

0832,因CPU运行比较快,没必要每次循环都去读取,选择通过CH0输入

0832,因CPU运行比较快,没必要每次循环都去读取,选择通过CH0输入

27

西安航空职业技术学院 毕业设计论文

} }

}

dis_smg[0]=smg_du[temp]; //个位 ADC0832为8位

ADC,数值为0~255,我们将其分开放入l_tmpdate数组中显示

i++;

28


基于单片机的数字电压表的设计与制作1(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版《品德与社会》四年级上册《伸出爱的手》说课稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: