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