C语言AD8位量化函数 c语言adt

单片机 C语言 从AD得到一个8位二进制数 0x00~0xff 想把它换算成小数显示 0.00~1.00

计算唤姿时,需要乘以100,8位的变量,就档老不够用了。

创新互联-专业网站定制、快速模板网站建设、高性价比射阳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式射阳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖射阳地区。费用合理售后完善,十多年实体公司更值得信赖。

unsigned int j;

unsigned char k, l, m, n = P1; //从P1口读到的8位二进制数

n = 168; // 168 / 255 = 0.65

j = 100 * n; //0 ~ 25500,需要用16位数的变量

k = j / 25500; //行链升整数0~1

j = j % 25500; //余数0~25499,需要用16位数的变量

l = j / 2550; //十分位0~9

m = (j % 2550) / 255; //百分位0~9

//k=0, l=6, m=5.

c语言 %8d中的数字是什么意思

8表示数据位厅腔宽为8位。

%8d是printf函数的输出格式控制符,%d表示按照有符号十进制整数输出,8表示数据位宽为8位,扮御衫如果数据长度=8则按照原来的数据位宽输出,如果8则用空格填充,默认右对齐。

所以%8d的意思是按照有符号10进制整数格式输出,数据位宽为8,右对齐。

扩展资料:

printf函数定义

函数声明

int printf(char *format...);

调用格式

printf("格式化字符串", 参量表);

格式化字符串包含三种对象,分别为:

1、字符串常量。

2、格式控制字符串。

3、转义字符。

字符串常量原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式控制字符串和各输拆消出项在数量和类型上应该一一对应。其中格式控制字符串是以%开头的字符串,在%后面跟有各种格式控制符,以说明输出数据的类型、宽度、精度等。

参考资料来源:百度百科-printf

“写一个函数,输入一个8位整数,如20180327,输出2018-03-27”c语言如何实现?

int fun(int day)                     //把要转换的数字作为参数 

{int y,m,d;           埋清               //y,m,d分别带祥代表年月日

y=day/10000;                        //除以10000,就是截掉后面4位,得到年份

m=(day/100)%100;                    //除以100就是截掉后面2位,再取余得到月份 

d=day%100;                          //用100取余得到最后两位,得到日期 蠢液搏

printf("%4d-%02d-%02d\n",y,m,d);}   //输出年月日,不足部分补0 

int main()

{fun(20181203);

system("PAUSE");                    //暂停屏幕,以看清结果

return 0;}                          //结束程序

跪求 ADC0832的8位输出转换ASCII码送LCD显示的C语言程序 !

我贴两个头文件

ADC0832.h

#ifndef _ADC0832_H_

#define _ADC0832_H_

#define uchar unsigned char

#define uint unsigned int

#define channel_0 0x02 //单通道0输入选择

#define channel_1 0x03 //单通道1输入选择

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

/* 位定义 */

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

sbit ADC_DI = P2^3; //数据输入输出复用

sbit ADC_DO = P2^3; //DI和DO端都接在P1.0

sbit ADC_CLK= P2^4; //时钟端

sbit ADC_CS = P2^5; //片选端

sbit ACC0=ACC^0; //通道与输入方式控制字

sbit ACC1=ACC^1; //通道与输入方式控制字

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

/* 函数声明 方便查阅 */

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

//uchar ADC_read(uchar mode); //AD采集

//mode可选 channel_0(通道0) channel_1(通道1) 或 其他方式

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

/* 启动ADC转换 */

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

void ADC_start()

{

ADC_CS=1; //一个转换周期开始

_nop_();

ADC_CLK=0;

_nop_();

ADC_CS=0; //CS置0,片选物汪有效

_nop_();

ADC_DI=1; //DI置1,起始位

_nop_();

ADC_CLK=1; //第一个脉冲

_nop_();

ADC_DI=0; //在负跳变之前加一个DI反转操作

_nop_();

ADC_CLK=0;

_nop_();

}

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

/* 函数功能: AD转换 */

/* 选择输入通道,输入信号的模式《单端输入,或差罩盯仔分输入》 */

/* 入口参数: mode(采集通道或方式) */

/* 返回值 : ACC (电压转换后的数字量) */

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

uchar ADC_read(uchar mode)

{

uchar i;

ADC_start(); //启动转换开始

ACC=mode;

ADC_DI=ACC1; //输出则嫌控制位1,DI=1,单通道输入,DI=0,差分输入。

ADC_CLK=1; //第二个脉冲

_nop_();

ADC_DI=0;

ADC_CLK=0;

_nop_();

ADC_DI=ACC0; //输出控制位0,DI=0,通道0输入,DI=1,通道1输入。

ADC_CLK=1; //第三个脉冲

_nop_();

ADC_DI=1;

ADC_CLK=0; //输入模式和通道号已经选择完。

ADC_CLK=1; //第四个脉冲

ACC=0;

for(i=8;i0;i--) //读取8位数据

{

ADC_CLK=0; //脉冲下降沿

ACC=ACC1;

ACC0=ADC_DO; //读取DO端数据

_nop_();

_nop_();

ADC_CLK=1;

}

ADC_CS=1; //CS=1,片选无效。

return(ACC);

}

#endif

1602.H

#ifndef _1602_H_

#define _1602_H_

#define uchar unsigned char

#define uint unsigned int

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

/* 位定义 */

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

sbit RS=P2^0; //

sbit RW=P2^1; //

sbit E=P2^2; //

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

/* 函数声明 方便查阅 */

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

//void init(); //1602初始化

//void zhiling(uchar dat); //写命令 第一行地址0x80~0x8f 第二行地址0xc0~0xcf

//void shuju(uchar dat); //写数据 显示为ASCLL码字符

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

/* 函数功能: 延时子函数 */

/* 入口参数: ms */

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

void delay_1602(uint ms)

{

uchar time;

while(ms--)

{

for(time = 0; time 125; time++);

}

}

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

/* 函数功能: 写命令函数 */

/* 入口参数: dat(待写入的数据) */

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

void zhiling(uchar dat)

{

E=0;RS=0;RW=0; //写命令

E=1;

P0=dat;

delay_1602(10); //延时 5ms

E=0;

delay_1602(10); //延时 5ms

}

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

/* 函数功能: 写数据函数 */

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

void shuju(uchar dat)

{

E=0;RS=1;RW=0; //写数据

E=1;

P0=dat;

delay_1602(10); //延时 5ms

E=0;

delay_1602(10); //延时 5ms

}

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

/* 函数功能: 1602初始化函数 */

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

void init() //初始化

{

zhiling(0x01); //清屏

zhiling(0x38); //功能设置

zhiling(0x0e); //开/关显示设置

zhiling(0x06); //输入方式设置(左移)

}

#endif

你要的ASC码很简单,这么做,

zhiling(0x80);//地址

shuju(6+'0');//假如你要显示6,6+'0'也就是6加上0的ASC码自然就转换成6的ASC码了

如果是66

你在显示前线换算 66/10 和 66%10,就会分别得到10位和个位,楼主自己举一反三了。


标题名称:C语言AD8位量化函数 c语言adt
本文来源:http://cdiso.cn/article/ddpidds.html

其他资讯