训练项目4手册.docVIP

  • 0
  • 0
  • 约7.57千字
  • 约 10页
  • 2018-08-22 发布于贵州
  • 举报
训练项目4手册

PAGE \* MERGEFORMAT 4 【训练项目4】实训手册 【任务1】实现简易时钟的00.00~59.59分、秒显示 1.在PROTEUS软件中,绘制如4-1所示的6位数码管(共阳)动态显示仿真电路图。 图4-1 6位数码管(共阳)动态显示仿真电路 2.在KEIL软件中,新建工程、新建文件,编写如下程序。 #include reg51.h //头文件 unsigned char code led_code[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90, //0--8显示代码 0X88,0X83,0XC6,0XA1,0X86,0X8E,0X8C,0X89,0XC7,0XFF}; //A--灭显示代码 unsigned char led_reg[6]={0X00,0X00,0X00,0X00,0x00,0x00}; //定义显示数码缓存器 sbit P2_0 = P2^0; //用sbit 关键字定义P2.0端口 sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit P2_4 = P2^4; sbit P2_5 = P2^5; /************************************************************************************************ **function:delay(unsigned char i) **功 能:延时程序 ************************************************************************************************/ void delay(unsigned char i) { unsigned int j; for(;i0;i--) { for(j=200;j0;j--) { ; } } } /************************************************************************************************ **function:led_show() **功 能:显示函数 ************************************************************************************************/ void led_show( ) { static unsigned char led_shift=0x00; //定义静态变量 P2 = P2|0x3F; //关闭数码管控制端口 P0 = led_code[led_reg[led_shift]]; //把字符代码送到端口P0 switch(led_shift) //选择数码管控制位 { case 0: P2_0 =0 ;break; //控制左1数码管 case 1: P0=P00X7F; P2_1 =0 ;break; //控制左2数码管 case 2: P2_2 =0 ;break; //控制左3数码管 case 3: P0=P00X7F; P2_3 =0 ;break; case 4: P2_4 =0 ;break; case 5: P2_5 =0 ;break; //控制左6数码管 default:break; } led_shift++; //数码管控制变量自加 if(led_shift==0x06) //判断是否扫描一轮 led_shift=0x00; //归零进行下一轮扫描 } /************************************************************************************************ mian() ************************************************************************************************/ main() { while(1) { led_show(); //调用显示函数 delay(2); //调用延时函数 } } 3.编译程序,直到程序无错误为止,设置HEX文件

文档评论(0)

1亿VIP精品文档

相关文档