|
我写的代码和教程的差不多,为什么没有显示数字0~7,还一直响,下面是我写的- #include "reg52.h"
- typedef unsigned char u8;
- typedef unsigned int u16;
- #define smg_k P0//定义P0口
- sbit LA=P2^3;
- sbit LB=P2^4;
- sbit LC=P2^5;
- u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管显示0~9,A~F
- void delay_10us(u16 x)
- {
- while(x--);
- }//延时函数
- void smg_play()
- {
- u8 i=0;
- for(i=0;i<8;i++)
- {
- switch(i)
- {
- case 0:LA=1;LB=1;LC=1;break;
- case 1:LA=1;LB=1;LC=0;break;
- case 2:LA=1;LB=0;LC=1;break;
- case 3:LA=1;LB=0;LC=0;break;
- case 4:LA=0;LB=1;LC=1;break;
- case 5:LA=0;LB=1;LC=0;break;
- case 6:LA=0;LB=0;LC=1;break;
- case 7:LA=0;LB=0;LC=0;break;
- }
- smg_k=gsmg_code[i];
- delay_10us(100);
- smg_k=0x00;
- }
- }
-
- void mian()
- {
- while(1)
- {
- smg_play();
- }
- }
复制代码 教程的代码如下- /**************************************************************************************
- 深圳市普中科技有限公司(PRECHIN 普中)
- 技术支持:www.prechin.net
- PRECHIN
- 普中
- 实验名称:动态数码管实验
- 接线说明:
- 实验现象:下载程序后“数码管模块”显示01234567
- 注意事项:
- ***************************************************************************************/
- #include "reg52.h"
- typedef unsigned int u16; //对系统默认数据类型进行重定义
- typedef unsigned char u8;
- #define SMG_A_DP_PORT P0 //使用宏定义数码管段码口
- //定义数码管位选信号控制脚
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- //共阴极数码管显示0~F的段码数据
- u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- /*******************************************************************************
- * 函 数 名 : delay_10us
- * 函数功能 : 延时函数,ten_us=1时,大约延时10us
- * 输 入 : ten_us
- * 输 出 : 无
- *******************************************************************************/
- void delay_10us(u16 ten_us)
- {
- while(ten_us--);
- }
- /*******************************************************************************
- * 函 数 名 : smg_display
- * 函数功能 : 动态数码管显示
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void smg_display(void)
- {
- u8 i=0;
- for(i=0;i<8;i++)
- {
- switch(i)//位选
- {
- case 0: LSC=1;LSB=1;LSA=1;break;
- case 1: LSC=1;LSB=1;LSA=0;break;
- case 2: LSC=1;LSB=0;LSA=1;break;
- case 3: LSC=1;LSB=0;LSA=0;break;
- case 4: LSC=0;LSB=1;LSA=1;break;
- case 5: LSC=0;LSB=1;LSA=0;break;
- case 6: LSC=0;LSB=0;LSA=1;break;
- case 7: LSC=0;LSB=0;LSA=0;break;
- }
- SMG_A_DP_PORT=gsmg_code[i];//传送段选数据
- delay_10us(100);//延时一段时间,等待显示稳定
- SMG_A_DP_PORT=0x00;//消音
- }
- }
- /*******************************************************************************
- * 函 数 名 : main
- * 函数功能 : 主函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void main()
- {
- while(1)
- {
- smg_display();
- }
- }
复制代码
|
|