单片机竞赛程1.docVIP

  • 14
  • 0
  • 约 12页
  • 2016-12-11 发布于河南
  • 举报
1. LED程序: #include reg52.h void delay(void); void main() { unsigned char i; while(1) { for(i=0;i8;i++) { P0 = ~(1i); P2 |= 0xE0; P2 = 0x9F; delay(); } } } //软件延时程序 void delay(void) { unsigned char i,j,k; for(i=20;i0;i--) for(j=20;j0;j--) for(k=248;k0;k--); } 3.1 1602程序: #include reg52.h #include intrins.h unsigned char text1[] = LCD 1602 TEST ; unsigned char text2[] = WWW.GXCT.NET ; sbit RS = P2^0; sbit RW = P2^1; sbit EN = P1^2; void delay_ms(unsigned char t); void init_1602(void); void write_command(unsigned char cmd); void write_data(unsigned char dat); void dsp_onechar(unsigned char pos,unsigned char c); void dsp_string(unsigned char line,unsigned char *p,unsigned char length); void main(void) { init_1602(); delay_ms(15); dsp_string(0,text1,13); dsp_string(1,text2,12); while(1); } void delay_ms(unsigned char t) { unsigned char i; while(t--) { for(i=0;i112;i++); } } void write_command(unsigned char cmd) { delay_ms(5); // check busy flag EN = 0; RS = 0; RW = 0; _nop_(); EN = 1; P0 = cmd; EN = 0; } void write_data(unsigned char dat) { delay_ms(5); //busy flag check EN = 0; RS = 1; RW = 0; _nop_(); EN = 1; P0 = dat; EN = 0; RS = 0; } void dsp_onechar(unsigned char pos,unsigned char c) { unsigned char p; if (pos=0x10) p=pos+0xb0; else p=pos+0x80; write_command(p); write_data(c); } void dsp_string(unsigned char line,unsigned char *p,unsigned char length) { unsigned char l,i; l=line4; for (i=0;ilength;i++) dsp_onechar(l++,*(p+i)); } void init_1602(void) { delay_ms(15); write_command(0x38); write_command(0x38); write_command(0x38); write_command(0x06); write_command(0x0c); write_command(0x01); } 3.2 数码管程序; #include reg52.h unsigned char code dsp_code_ca[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned int tflag; unsigned char dspflag; unsigned char second; unsigned char dflag; void display(unsigned char d); v

文档评论(0)

1亿VIP精品文档

相关文档