int
main()
{
printf("\033[133m======================\n请输入一个十进制数:")
int
a,
b,
i
char
charx[50]
scanf("%d",
&a)
printf("======================\n")
printf
("你希望你的十进制数被转换为几进制数?\n请输入(2~16)\n")
printf("=======================\n")
scanf("%d",
&i)
printf("=======================\n")
printf("你输入了%d\n",
i)
printf("=======================\n")
printf("%d转换为%d进制是:",
a,
i)
for
(b
=
0
b
<=
50
b++)
{
int
x
x
=
a
%
i
if
(x>9)
charx[b]=x+55
else
charx[b]=x+48
a
=
a
/
i
if
(a
==
0)
break
}
for
(
b
>=
-1
b--)
printf("\033[31m%c",
charx[b])
printf("\n^_^")
}
愉快哈,好的话就采纳哈!
C语言程序设计Franklin C51交*编译器是专为51系列单片机设计的一种高效的C语言编译器,使用它可以缩短开发周期,降低开发成本,而且开发出的系统易于维护,可*性高,可移植性好。下面介绍用C语言编写的单点和定长数据采集子程序,假设所用的晶振频率为码基12MHz。单点采样子程序ADS7804()用来返回一个有符号整数形式的转换结果。定长采样子程序DAQ()根据前旅入口参数interval(单位为μs)给定的采样间隔采样N点,并采用查询51单片机内置定时器的方式来控制采样时序,N点采样结果存储在定位于外部存储器的数组array中。需要注意的是,赋给计数寄存器TH和TL的值是定时器从开始迟悔谨计数到溢出所用的时间,这个时间再加上清TF和装载计数初值所需的时间(共5个机器周期,对于12MHz晶振即为5μs)才是所要的采样间隔,这一点在程序设计中必须注意。
源程序如下:
# include<reg51.h>
# include<absacc.h>
# define N 128 /*定采样长度,如128点*/sbit BYTE=F1^0;
sbit RC=P1^1
sbit BUSY=P1^2/*定义特殊位*/
int XDATA array(N)/*在外部存储器内定义长度为N的有符号整数数组*/
int ADS7804(void)
{ uint ul,uhint u
RC=0/*R/C低电平,进入转换模式*/
ul=XBYTE[0xffff]/*产生读脉冲,启动A/D转换*/
while (BUSY= =0)/*等待转换完成*/
RC=1;BYTE=0/*进入读模式,选择低字节*/
ul=XBYTE[0xffff]/*读转换结果低8位*/
BYTE=1; /*选择高字节*/
uh=XBYTE[0xffff]&0x0f/*读转换结果高4位*/
u=uh*256+ul/*得到12位转换结果*/
if(u>=0x0800)
u=u 0xf000/*如果为负值,则符号扩展*/
return(u)/*返回转换结果*/
}
uoid DAQ(uint interval)
{ uchar th,tl
interval=interval-5/*减去TF0清零和装载计数初值的时间5μs*/
th=255-(interval/256)
tl=255-(interval%256)/*计算计数初值*/
TMOD=0x01/*定时器0,方式1 */
TH0=thTL0=tl;/*装载计数初值*/
TR0=1;/*启动定时*/
for(I=0i<Ni++)
{ do{}whilt(!TF0)/*查询等待TF0复位*/
TF0=0/*清溢出标志*/
TH0=thTL0=tl; /*装载计数初值*/
Array[i]=ADS7804()/*采样、存储*/
}
TR0=0/*停止定时*/
}
6 结束语
ADS7804为12位的A/D转换器,它不仅分辨率高、转换速度快,而且接口方便,电路简单、应用灵活,因而具有广泛的应用前景。笔者在DLRS-1型检波器低频接收灵敏度特性测量仪中使用了ADS7804,取得了很好的效果
//C语言实现:#include<stdio.h>
void main()
{char b[]="0123456789ABCDEF"
long int n,x
int i,a[40]
printf("\n Please input n=")
scanf("%ld",&n)
x=ni=0
while(x>0)
{a[i]=x%16
x=x/16
i++
}
while(i>0)
{printf("%c",b[a[i-1]])
i--
}
printf("\n")
}
对于大数转换可以用如下程序:
#include "Stdio.h"
#include "Conio.h"
char result[100]
int pos
void change(int *num)
int main(void)
{
char str[100]
int num[100]
int bin[300]={0}
int quot[100],residue=0
int i,j,k=0,suffix=0,index=0
puts("Input a decimal number:")
gets(str)
for(i=0i<strlen(str)num[i]=str[i]-48,i++)
j=i-1
while(j>=0)
{
num[j]%2?(bin[k++]=1):(bin[k++]=0)
while(index<洞拍旁=j)
{
residue+=num[index]
if(residue>=2)
quot[suffix++]=residue/2
else if(index)
quot[suffix++]=0
residue=(num[index]%2)*10
index++
}
for(i=0i<suffixnum[i]=quot[i],i++)
j=suffix-1
residue=suffix=index=0
}
for(i=0i<kchange(bin+i),i+=4)
for(i=pos-1i>=0printf("%c",result[i]),i--)
getch()
return 0
}
void change(int *num)
{
if(num[3]==0&&num[2]==0&&num[1]==0&&num[0]==0)
sprintf(result+pos,"%c",'0')
if(num[3]==0&&num[2]==0&&num[1]==0&&num[0]==1)
sprintf(result+pos,"%c",'1')
if(num[3]==0&&num[2]==0&&num[1]==1&&num[0]==0)
sprintf(result+pos,"%c",'2')
if(num[3]==0&&num[2]==0&&num[1]==1&&num[0]==1)
sprintf(result+pos,"%c",'3')
if(num[3]==0&&num[2]==1&&num[1]==0&&num[0]==0)
sprintf(result+pos,"%c",'4')
if(num[3]==0&&num[2]==1&&num[1]==0&&num[0]==1)
sprintf(result+pos,"%c",'5')
if(num[3]==0&&num[2]==1&&num[1]==1&&num[0]==0)
sprintf(result+pos,"%c",'贺孙6')
if(num[3]==0&&num[2]==1&&num[1]==1&&num[0]==1)
sprintf(result+pos,"%c",'7')
if(num[3]==1&&num[2]==0&&num[1]==0&&num[0]==0)
sprintf(result+pos,"%c",'8'纳橡)
if(num[3]==1&&num[2]==0&&num[1]==0&&num[0]==1)
sprintf(result+pos,"%c",'9')
if(num[3]==1&&num[2]==0&&num[1]==1&&num[0]==0)
sprintf(result+pos,"%c",'A')
if(num[3]==1&&num[2]==0&&num[1]==1&&num[0]==1)
sprintf(result+pos,"%c",'B')
if(num[3]==1&&num[2]==1&&num[1]==0&&num[0]==0)
sprintf(result+pos,"%c",'C')
if(num[3]==1&&num[2]==1&&num[1]==0&&num[0]==1)
sprintf(result+pos,"%c",'D')
if(num[3]==1&&num[2]==1&&num[1]==1&&num[0]==0)
sprintf(result+pos,"%c",'E')
if(num[3]==1&&num[2]==1&&num[1]==1&&num[0]==1)
sprintf(result+pos,"%c",'F')
pos++
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)