进制转换算成进制程序Word格式.docx
- 文档编号:17429463
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:18
- 大小:47.67KB
进制转换算成进制程序Word格式.docx
《进制转换算成进制程序Word格式.docx》由会员分享,可在线阅读,更多相关《进制转换算成进制程序Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
ﻫ
unsigned chard[10];
//用于显示的10位显示缓存
//========================================================
//16进制to10进制输出子程序:
显示数据,起始位,结束位,有无小数点ﻫ
//========================================================
voidoutput(unsignedlongdd,unsignedchars,unsignedcharﻫ
e,unsignedchardip){
unsignedlong div;
unsignedchar tm[8],i,j;
div=10000000;
for(i=0;
i<
8;
i++){
tm[i]=dd/div;
dd%=div;
div/=10;
}
for (i=0;
i<
6;
i++){
if(tm[i]!
=0)break;
tm[i]=nul;
}ﻫ
tm[5]|=dip;
//小数点控制,请看“串行LED数码管显示驱动程序”ﻫ
j=7;
for(i=s;
e;
i++) {ﻫ
d[i]=tm[j];
j--;
}
}
//把显示位5-9位的10进制数转换成为16进制数
unsignedint input(void){ﻫ
unsignedintdd,dat;
dd=10000;
dat=0;
for(i=5;
10;
i++){ﻫ
dat+=dd*temp;
dd/=10;
return(dat);
}ﻫ
/*
89C51系列CPU编程器接收CPU程序*/
#i nclude<
reg51.h>
#include<
intrins.h>
#include<
absacc.h>
#definee8
#definep9
#definel 10
sbit led=P3^2;
sbitp27=P2^7;
sbitp26=P2^6;
sbit p36=P3^6;
sbitp37=P3^7;
sbitrst=P3^3;
sbitale=P3^5;
sbitvpp=P3^4;
bitb_break;
unsignedintadds;
//
13.8mS
voidint_t0(void)interrupt1{ﻫ
TH0=-100;
b_break=1;
voidwait(unsignedcharw){
unsigned intt=w*184;
b_break=0;
TL0=-t%256-1;
TH0=-t/256;
while(b_break==0){}ﻫ
void nop(void){
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
unsigned char command(void){ﻫ
TH0=-100;
b_break=0;
while (RI==0){if(b_break==1)return(0);
RI=0;
return(SBUF);
}
voidearsure(unsigned char cpu) {
switch(cpu){
case1:
//89C51
case2:
rst=p26=1;
p27=p36=p37=0;
nop();
vpp=1;
nop();
ale=0;
wait(110);
ale=1;
nop();
break;
case3:
case 4:
break;
case5:
case 6:
break;
void program(unsignedcharcpu) {
unsignedint bdataadds=0;
unsignedchard;
switch(cpu){
case1:
//89C51
case2:
p36=p37=1;
rst=1;
while
(1){
TH0=-100;
b_break=0;
while (RI==0){if(b_break==1)return;
RI=0;
d=SBUF;
//address
P0=adds%256;
P2=adds/256;
p27=1;
//dataﻫ
P1=d;
nop();
//48clclﻫ
//vpp
vpp=1;
nop();
//48clcl
//ale
ale=0;
wait
(1);
//100uS
ale=1;
nop();
//10uSﻫ
vpp=0;
nop();
//48clclﻫ
p27=0;
nop();
//48clclﻫ
P1=0xff;
TH0=-100;
b_break=0;
while (d!
=P1){if (b_break==1) return;
}
//data
polling
SBUF=d;
adds++;
break;
case3:
case4:
case5:
case6:
voidlock(unsigned charcpu){
unsignedchari;
switch(cpu) {ﻫ
case1:
//89c51
case 2:
//lock1
rst=p26=p36=p27=p37=1;
nop();
vpp=1;
nop();
ale=0;
//
for(i=0;
6;
i++)wait(100);
wait
(1);
ale=1;
nop();
vpp=0;
//lock2ﻫ
rst=p26=p27=1;
p36=p37=0;
vpp=1;
ale=0;
//
for(i=0;
i++)wait(100);
wait
(1);
ale=1;
nop();
vpp=0;
nop();
//lock3ﻫ
rst=p26=p36=1;
p27=p37=0;
vpp=1;
nop();
ale=0;
for(i=0;
i++)wait(100);
wait
(1);
ale=1;
vpp=0;
break;
case 3:
case4:
case5:
case6:
break;
}ﻫ
voidmain(void) {ﻫ
unsignedchardisp,flash,temp,cpu;
EA=1;
SCON=0xd8;
PCON=0x80;
TMOD=0x21;
TL1=TH1=0xff;
TR1=1;
TH0=-100;
ET0=TR0=1;
flash=0x80;
while
(1){
temp=command();
switch(temp){ﻫ
case0:
case 1:
//89c51ﻫ
//89C52ﻫ
case 3:
//80f51
case4:
//80F52ﻫ
case5:
//87F51ﻫ
cpu=temp;
SBUF=temp;
break;
//87f52
case e:
SBUF=temp;
earsure(cpu);
break;
//erasure
casep:
SBUF=temp;
program(cpu);
break;
//programﻫ
casel:
lock(cpu);
SBUF=temp;
//lock
default:
SBUF=temp;
break;
b_break=0;
if ((++disp)>flash){disp=0;
led=!
led;
//HT1380实时时钟驱动程序
sbitclock_dat=P0^1;
sbitclock_clk=P0^2;
sbitclock_rst=P0^3;
sbita0=ACC^0;
sbita1=ACC^1;
sbit a2=ACC^2;
sbita3=ACC^3;
sbita4=ACC^4;
sbita5=ACC^5;
sbita6=ACC^6;
sbita7=ACC^7;
voidclock_out(unsigned chardd) {ﻫ
ACC=dd;
clock_dat=a0;
clock_clk=1;
clock_clk=0;
clock_dat=a1;
clock_clk=1;
clock_clk=0;
clock_dat=a2;
clock_clk=1;
clock_clk=0;
clock_dat=a3;
clock_clk=1;
clock_clk=0;
clock_dat=a4;
clock_clk=1;
clock_clk=0;
clock_dat=a5;
clock_clk=1;
clock_clk=0;
clock_dat=a6;
clock_clk=1;
clock_clk=0;
clock_dat=a7;
clock_clk=1;
clock_clk=0;
unsignedcharclock_in(void){ﻫ
clock_dat=1;
a0=clock_dat;
clock_clk=1;
clock_clk=0;
a1=clock_dat;
clock_clk=1;
clock_clk=0;
a2=clock_dat;
clock_clk=1;
clock_clk=0;
a3=clock_dat;
clock_clk=1;
clock_clk=0;
a4=clock_dat;
clock_clk=1;
clock_clk=0;
a5=clock_dat;
clock_clk=1;
clock_clk=0;
a6=clock_dat;
clock_clk=1;
clock_clk=0;
a7=clock_dat;
return(ACC);
unsignedcharread_clock(unsignedchar ord){
unsignedchar dd=0;
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
dd=clock_in();
clock_rst=0;
clock_clk=1;
return(dd);
voidwrite_clock(unsignedcharord,unsignedchar dd){
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
clock_out(dd);
clock_rst=0;
clock_clk=1;
/*单个汉字库字摸提取程序,tc2.0编译*/ﻫ
#i nclude"
stdio.h"
#include"dos.h"
#i nclude "
process.h"
#include"string.h"
voidmain(void) {
long intnum_bytes,qm,wm;
unsignedchard,i,j,k,a[132],b[132];
unsignedchar* data;
unsignedchar * hz;
staticunsigned
chardd[103];
FILE*fp;
if((fp=fopen("hzk16f","rb"
))==NULL){ﻫ
printf("
can'topen hzk16\n");
exit
(1);
clrscr();
while
(1){
data=(unsigned char *)malloc(33);
printf("
pleaseinput:
\n"
);
scanf("
%s"
dd);
/*输入一个汉字*/
qm=*dd;
/*通过区位码计算其在hzk16f文件中的偏移地址*/
qm=qm-161;
if(qm>
87) exit(0);
wm=* (dd+1);
wm=wm-161;
if(wm>
94)exit(0);
num_bytes=((long)qm*94+wm)*32;
fseek(fp,num_bytes,SEEK_SET);
fgets(data,33,fp);
for (i=0;
i<32;
i++)b[i]=* data++;
for (i=0;
32;
i+=2)a[i/2]=b[i];
for(i=0;
i<32;
i+=2)a[i/2+16]=b[i+1];
for(i=8;
16;
i++)b[i]=a[i];
for(i=8;
16;
i++)a[i]=a[i+8];
for(i=8;
16;
i++)a[i+8]=b[i];
/*转换,hzf16f在电脑的储存格式是以行为字节计算的,一般的lcd都采用以列为字节计算*/
for (k=0;
k<32;
k+=8){ﻫ
for(j=0;
j<
8;
j++){
d=0;
for (i=0;
i++){
if(a[i+k]>=0x80){
switch(i){
case0:
d+=1;
case 1:
d+=2;
break;
case2:
d+=4;
break;
case3:
d+=8;
break;
case 4:
d+=0x10;
break;
case5:
d+=0x20;
d+=0x40;
case 7:
d+=0x80;
i++)a[i+k]<<
=1;
b[j+k]=d;
clrscr();
/*%s:
*/\n"
dd);
/*输出0x00格式的16进制数*/ﻫ
for(k=0;
k<
k+=8){ﻫ
for(j=0;
j<
j++)printf("
0x%x,",b[j+k]);
printf("\n"
getch();
//按键扫描驱动程序
unsigned charkey,key_h,kpush;
unsignedintkey_l;
//按键连接到p1.0、p1.1、p1.2
voidint_t0(void)interrupt1{
unsigned chardd,i;
TL0=TL0+30;
TH0=0xfb;
//800ﻫ
/*
按键判别
*/ﻫ
if ((P1&
0x7)==0x7) {
if ((key_l>
30)&
&
(key_l<
800)&
&(key_h>
30)){
//释放按键,如果之前按键时间少于1秒,读入键值ﻫ
key=kpush;
}
if((++key_h)>
200)key_h=200;
key_l=0;
if(key>=0x80)key=0;
ﻫ
//如果之前的按键为长按1秒,清除键值ﻫ
} else{
kpush=P1&
0x7;
key_l++;
if((key_l>
800)&&
(key_h>30)){
//如果按键超过1秒,键值加0x80标志长按键ﻫ
key=kpush|0x80;
key_h=0;
key_l=0;
voidmain(void){
TMOD=0x1;
TR0=1;
ET0=1;
EA=1;
while
(1){
while (!
key){}
switch(key){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 转换 算成进制 程序