资源预览内容
第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
第9页 / 共49页
第10页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
一些实用的单片机一些实用的单片机 c 程序程序发布: 2009-4-13 08:19 | 作者: hnrain | 查看: 324 次/16 进制10 进制互换程序 unsigned char d10; /用于显示的 10 位显示缓存/=/16 进制 to10 进制输出子程序:显示数据,起始位,结束位,有无小数点/=void output(unsigned long dd,unsigned char s,unsigned chare,unsigned char dip) unsigned long div;unsigned char tm8,i,j;div=10000000;for (i=0;ii nclude i nclude #define e 8#define p 9#define l 10sbit led=P32;sbit p27=P27;sbit p26=P26;sbit p36=P36;sbit p37=P37;sbit rst=P33;sbit ale=P35;sbit vpp=P34;bit b_break;unsigned int adds;/ 13.8mSvoid int_t0(void) interrupt 1 TH0=-100;b_break=1;void wait(unsigned char w) unsigned int t=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_();_nop_();_nop_();unsigned char command(void) TH0=-100;b_break=0;while (RI=0) if (b_break=1) return(0);RI=0;return(SBUF);void earsure(unsigned char cpu) switch (cpu) case 1: /89C51case 2:rst=p26=1;p27=p36=p37=0;nop();vpp=1;nop();ale=0;wait(110);ale=1;nop();break;case 3:case 4:break;case 5:case 6:break;void program(unsigned char cpu) unsigned int bdata adds=0;unsigned char d;switch (cpu) case 1: /89C51case 2:p36=p37=1;rst=1;while (1) TH0=-100;b_break=0;while (RI=0) if (b_break=1) return;RI=0;d=SBUF;/addressP0=adds%256;P2=adds/256;p27=1;/dataP1=d;nop(); /48clcl/vppvpp=1;nop(); /48clcl/aleale=0;wait(1);/100uSale=1;nop(); /10uSvpp=0;nop(); /48clclp27=0;nop(); /48clclP1=0xff;TH0=-100;b_break=0;while (d!=P1) if (b_break=1) return; /datapollingSBUF=d;adds+;break;case 3:case 4:case 5:case 6:break;void lock(unsigned char cpu) unsigned char i;switch (cpu) case 1: /89c51case 2:/lock 1rst=p26=p36=p27=p37=1;nop();vpp=1;nop();ale=0;/ for (i=0;iflash) disp=0;led=!led;/HT1380 实时时钟驱动程序sbit clock_dat=P01;sbit clock_clk=P02;sbit clock_rst=P03;sbit a0=ACC0;sbit a1=ACC1;sbit a2=ACC2;sbit a3=ACC3;sbit a4=ACC4;sbit a5=ACC5;sbit a6=ACC6;sbit a7=ACC7;void clock_out(unsigned char dd) 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;unsigned char clock_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);unsigned char read_clock(unsigned char ord) unsigned char 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);void write_clock(unsigned char ord,unsigned char 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“i nclude “dos.h“i nclude “process.h“i nclude “string.h“void main(void) long int num_bytes,qm,wm;unsigned char d,i,j,k,a132,b132;unsigned char * data;unsigned char * hz;static unsigned char dd103;FILE *fp;if (fp=fopen(“hzk16f“,“rb“)=NULL) printf(“cant open hzk16n“);exit(1);clrscr();while (1) data=(unsigned char *) malloc(33);printf(“please input:n“);scanf(“%s“,dd); /*输入一个汉字*/qm=* dd; /*通过区位码计算其在 hzk16f 文件中的偏移地址*/qm=qm-161;if (qm87) exit(0);wm=* (dd+1);wm=wm-161;if (wm94) exit(0);num_bytes=(long)qm*94+wm)*32;fseek(fp,num_bytes,SEEK_SET);fgets(data,33,fp);for (i=0;i=0x80) switch (i) case 0:d+=1;break;case 1:d+=2;break;case 2:d+=4;break;case 3:d+=8;break;case 4:d+=0x10;break;case 5:d+=0x20;break;case 6:d+=0x40;break;case 7:d+=0x80;break;for (i=0;i30)if (+key_h)200) key_h=200;key_l=0;if (key=0x80) key=0; /如果之前的按键为长按 1 秒,清除键值 else kpush=P1key_l+;if (key_l800)key_h=0;key_l=0;void main(void) TMOD=0x1;TR0=1;ET0=1;EA=1;while (1) while (!key) switch (key) case 1:break;case 2:break;/串行驱动 led 显示,/一个 74hc595 位移寄存器驱动三极管驱动 led 位,/两个 74hc595 驱动 led 段,方式位 5 位 x8 段 x2=10 个数码管/5 分频,每次扫描时间位 1.25ms/定义特殊符号#define nul 0xf#define qc 0xc#define qb 0xb#define q_ 0xa#define q_ 0xd#define q_ 0xe#define qp 0x10#define qe 0x11#define qj 0x12#define qn 0x13#define qf 0x14#define qa 0x15#define qr 0x16#define qd 0x17#define qu 0x18#define ql 0x19#define qh 0x1a#define qwen 0x1b#define qt 0x1c#define qla 0x1d#define qlb 0x1e#define qlc 0x1f#define qld 0x20#define qle 0x21#define qlf 0x22#define qlg 0x23#define qldp 0x24/显示段信息,不同 led 排列组合的段信息只需更改 8 个数值即可。/因此,该定义具有通用性。/ 显示 / -d 20/ |c 40 |e 10/ - g 80 / |b 2 |f 4/ _a1 .dp 8#define pa 1#define pb 2#de
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号