《单片机的C语言程序设计与运用(第2版)》期末复习题及答案2 联系客服

发布时间 : 星期四 文章《单片机的C语言程序设计与运用(第2版)》期末复习题及答案2更新完毕开始阅读f6d628b70042a8956bec0975f46527d3250ca618

.

}

else k=k<<1; } m=m+4;

scancode=~scancode; 1

scancode=scancode>>1; scancode=~scancode; } } } }

void main() //主函数 { uchar *s; uchar z;

uchar i=0,j=0; //i为LCD的行,j为LCD的列 delay_LCM(15);

init_1602(); //1602初始化 s=\

display_1602(s,0,0); //第一行显示\ delay_LCM(200); delay_LCM(200); delay_LCM(200); while(1) {

if (checkkey()==0x00) continue; else

{

{i=1; //LCD在第二行显示 z= keyscan(); if (j>=16)

{j=0;i=1; break; }

//为scancode右移时,移入的数为

可编辑

.

}

else

DisplayOneChar(j,i,a[z]);j++;

delay(100); } }

} 第七章

【例7-4】采用DAC0832实现的波形发生器

#include #include

#define uchar unsigned char #define DAC0832 XBYTE[0x7fff]

code uchar sintab[ ]={0x7f,0x89,0x94,0x9f,0xaa, 0xb4,0xbe,0xc8,0xd1,0xd9, 0xe0,0xe7,0xed,0xf2,0xf7, 0xfa,0xfc,0xfe,0xff}; sbit P10=P1^0; sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; uchar m=0;

可编辑

void delay( ) {uchar j;

for(j=0;j<250;j++);} void int0( ) interrupt 0 { P1=0xff; if(P10==0) { m=1;} if(P11==0) { m=2;} if(P12==0) { m=3;} if(P13==0) { m=4;} }

void main( ) { uchar data i; EA=1; EX0=1; IT0=1; while(1) { kkk: switch(m)

{ case 0: goto kk;break; case 1: goto k0;break; case 2: goto k1;break; case 3: goto k2;break; case 4: goto k3;break; default:break; }

k0: while(1)

{for(i=0;i<0xff;i++)

.

可编辑

.

{ DAC0832=i; } goto kkk; } k1:while(1)

{ for(i=0;i<0xff;i++) {DAC0832=i;} for(i=0xff;i>0;i--) {DAC0832=i;} goto kkk; } k2: while(1) { DAC0832=0xff; delay( ); DAC0832=0; delay( ); delay( ); goto kkk; }

k3: while(1)

{ for(i=0;i<18;i++) { DAC0832=sintab[i];} for(i=18;i>0;i--) { DAC0832=sintab[i];} for(i=0;i<18;i++) { DAC0832=~sintab[i];} for(i=18;i>0;i--) { DAC0832=~sintab[i];} goto kkk; }

kk:DAC0832=0; } }

【例7-6】1路模拟输入A/D转换示例

可编辑