7300|64

3401

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

按键控制8X8LED点阵屏显示图形 程序的几个问题 [复制链接]

 

/*    名称:按键控制8X8LED点阵屏显示图形
    说明:每次按下K1时,会使8X8LED点阵屏循环显示不同图形。
          本例同时使用外部中断和定时中断。
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//待显示图形编码
uchar code M[][8]=
{
    {0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00},        //图1
    {0x00,0x38,0x44,0x54,0x44,0x38,0x00,0x00},        //图2
    {0x00,0x20,0x30,0x38,0x3c,0x3e,0x00,0x00}        //图3
};
uchar i,j;
//主程序
void main()
{
    P0=0xff;
    P1=0xff;                
    TMOD=0x01;                //T0方式1
    TH0=(65536-2000)/256;    //2ms定时
    TL0=(65536-2000)%256;
    IT0=1;                    //下降沿触发
    IE=0x83;                //允许定时器0、外部0中

    i=0xff;                    //i的初值设为0xff,加1
后将从0开始
    while(1);
}
//T0中断控制点阵屏显示
void Show_Dot_Matrix() interrupt 1
{
    TH0=(65536-2000)/256;    //恢复初值
    TL0=(65536-2000)%256;
    P0=0xff;                //输出位码和段码
    P0=~M[i][j];
    P1=_crol_(P1,1);        
    j=(j+1)%8;
}
//INT0中断(定时器由键盘中断启动)
void Key_Down() interrupt 0
{
    P0=0xff;
    P1=0x80;
    j=0;
    i=(i+1)%3;                //i在0,1,2中取值,因为只要3个图形

 

 

 

问题如下
1.P0=0xff;P1=0xff-------这条语句是端口初始化不?

2.IE=0x83 ---- 1000 0011为什么是这个值?寄存器配置?

3.P0=0xff;                
  P0=~M[i][j];
  P1=_crol_(P1,1);        
  j=(j+1)%8;-----------------P0赋初值?P0给值?后面的就看不懂了

4.我用proteus仿真试了下,只有在按键按下的时候,才会显示图形,这样就是外
部中断。那定制器中断有何意义呢?

5.i=(i+1)%3---------为什么要(i+1)%3这样一个表达式再赋值给i呢?
 

此帖出自单片机论坛

最新回复

是循环右移和右移的区别 ,!是逻辑非~是所有位取反 ,%这样的符号都是特殊意义的asc码  详情 回复 发表于 2020-7-8 20:52
点赞 关注
 

回复
举报

2万

帖子

0

TA的资源

超级版主

沙发
 

"IE=0x83 ---- 1000 0011为什么是这个值?寄存器配置?"

你那段程序中的注解里面已经说明了:

IE=0x83;                //允许定时器0、外部0中断

 

此帖出自单片机论坛

点评

这是5 1单片机  对应的哪个寄存器控制?  详情 回复 发表于 2020-7-6 17:35
 
 

回复

2万

帖子

0

TA的资源

超级版主

板凳
 

“P0=0xff;P1=0xff-------这条语句是端口初始化不?”

是端口初始化。但51单片机上电复位后端口为高电平,这两句可以去掉不用。更何况定时器中断和外部中断程序里面都有 P0=0xff 这句。

此帖出自单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

4
 

“那定制器中断有何意义呢?”

P0口每次只能输出一个字节,即8X8点阵的一行。而8X8点阵共8行。

此帖出自单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

5
 

未按键时,第一次定时器中断,显示的是0x00,第二次定时器中断,显示的是,0x7e,的三次定时器中断,显示的是,0x7e……一直到第八次,显示的是0X00。

 j=(j+1)%8;就是为了显示下一个数据。

按键后,第一次定时器中断显示的是0X00,第二次定时器中断,显示的是0X38,第三次定时器中断,显示的是0X44……

此帖出自单片机论坛

点评

P0=~M[j];   P1=_crol_(P1,1);           j=(j+1)%8   这三个语句再详细的讲下啊  老师  详情 回复 发表于 2020-7-6 18:23
0X38-----是怎么来的  详情 回复 发表于 2020-7-6 17:40
第三次不应该是0XF2?  详情 回复 发表于 2020-7-6 17:40
 
 
 

回复

3401

帖子

0

TA的资源

五彩晶圆(中级)

6
 
maychang 发表于 2020-7-6 11:44 "IE=0x83 ---- 1000 0011为什么是这个值?寄存器配置?" 你那段程序中的注解里面已经说明了: IE ...

这是5 1单片机  对应的哪个寄存器控制?

此帖出自单片机论坛

点评

"对应的哪个寄存器控制?" 就是IE,中断寄存器。地址0XA8。  详情 回复 发表于 2020-7-6 18:02
 
 
 

回复

3401

帖子

0

TA的资源

五彩晶圆(中级)

7
 
maychang 发表于 2020-7-6 12:15 未按键时,第一次定时器中断,显示的是0x00,第二次定时器中断,显示的是,0x7e,的三次定时器中断,显示的 ...

第三次不应该是0XF2?

此帖出自单片机论坛

点评

在1楼,没有找到0XF2。  详情 回复 发表于 2020-7-6 18:16
 
 
 

回复

3401

帖子

0

TA的资源

五彩晶圆(中级)

8
 
maychang 发表于 2020-7-6 12:15 未按键时,第一次定时器中断,显示的是0x00,第二次定时器中断,显示的是,0x7e,的三次定时器中断,显示的 ...

0X38-----是怎么来的

此帖出自单片机论坛

点评

把0X83写成二进制,一位一位地对应11楼中图片中IE寄存器各位功能,就明白是怎么来的了。  详情 回复 发表于 2020-7-6 18:10
[attachimg]487611[/attachimg] 就是这么来的。  详情 回复 发表于 2020-7-6 18:08
在1楼你贴出的是【 IE=0x83;                //允许定时器0、外部0中断】 不是0X38。  详情 回复 发表于 2020-7-6 18:04
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

9
 
QWE4562009 发表于 2020-7-6 17:35 这是5 1单片机  对应的哪个寄存器控制?

"对应的哪个寄存器控制?"

就是IE,中断寄存器。地址0XA8。

此帖出自单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

10
 
QWE4562009 发表于 2020-7-6 17:40 0X38-----是怎么来的

在1楼你贴出的是【 IE=0x83;                //允许定时器0、外部0中断】

不是0X38。

此帖出自单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

11
 
QWE4562009 发表于 2020-7-6 17:40 0X38-----是怎么来的

就是这么来的。

此帖出自单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

12
 
QWE4562009 发表于 2020-7-6 17:40 0X38-----是怎么来的

把0X83写成二进制,一位一位地对应11楼中图片中IE寄存器各位功能,就明白是怎么来的了。

此帖出自单片机论坛

点评

按键后,第一次定时器中断显示的是0X00,第二次定时器中断,显示的是0X38,第三次定时器中断,显示的是0X44……-----------我说的是这里的0X38怎么来的  详情 回复 发表于 2020-7-6 18:18
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

13
 
QWE4562009 发表于 2020-7-6 17:40 第三次不应该是0XF2?

在1楼,没有找到0XF2。

此帖出自单片机论坛
 
 
 

回复

3401

帖子

0

TA的资源

五彩晶圆(中级)

14
 
maychang 发表于 2020-7-6 18:10 把0X83写成二进制,一位一位地对应11楼中图片中IE寄存器各位功能,就明白是怎么来的了。

按键后,第一次定时器中断显示的是0X00,第二次定时器中断,显示的是0X38,第三次定时器中断,显示的是0X44……-----------我说的是这里的0X38怎么来的

此帖出自单片机论坛

点评

[attachimg]487622[/attachimg] 你是说这个0X38?  详情 回复 发表于 2020-7-6 18:26
 
 
 

回复

3401

帖子

0

TA的资源

五彩晶圆(中级)

15
 
maychang 发表于 2020-7-6 12:15 未按键时,第一次定时器中断,显示的是0x00,第二次定时器中断,显示的是,0x7e,的三次定时器中断,显示的 ...

P0=~M[j];
  P1=_crol_(P1,1);        
  j=(j+1)%8   这三个语句再详细的讲下啊  老师

此帖出自单片机论坛

点评

[attachimg]487623[/attachimg]没有 P0=~M[j]; 这句。  详情 回复 发表于 2020-7-6 18:34
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

16
 
QWE4562009 发表于 2020-7-6 18:18 按键后,第一次定时器中断显示的是0X00,第二次定时器中断,显示的是0X38,第三次定时器中断,显示的是0X ...

你是说这个0X38?

此帖出自单片机论坛

点评

恩  为什么第一行数组的值是0X00 接下来都是0X7?而第二行和第三行那些数组的元素是那样的值  我想知道怎么算的  详情 回复 发表于 2020-7-6 18:41
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

17
 
QWE4562009 发表于 2020-7-6 18:23 P0=~M[j];   P1=_crol_(P1,1);           j=(j+1)%8   ...

没有 P0=~M[j]; 这句。

此帖出自单片机论坛

点评

对  我要说的是这个  详情 回复 发表于 2020-7-6 18:39
 
 
 

回复

3401

帖子

0

TA的资源

五彩晶圆(中级)

18
 
maychang 发表于 2020-7-6 18:34 没有 P0=~M[j]; 这句。

对  我要说的是这个

此帖出自单片机论坛

点评

这句是说 M[j] 这个数组中第一维为 i ,第二维为 j 的那个元素装入P0。  详情 回复 发表于 2020-7-6 19:02
 
 
 

回复

3401

帖子

0

TA的资源

五彩晶圆(中级)

19
 
maychang 发表于 2020-7-6 18:26 你是说这个0X38?

恩  为什么第一行数组的值是0X00 接下来都是0X7?而第二行和第三行那些数组的元素是那样的值  我想知道怎么算的

此帖出自单片机论坛

点评

[attachimg]487624[/attachimg] 这个数组的某一行,猜测是8X8点阵显示的内容,而且为0代表 “灭”,为1代表 “亮”。第一行第一列数为0X00,这是8X8点阵的第一行(或者第一列,与硬件联接有关  详情 回复 发表于 2020-7-6 18:57
这是你copy的程序中数组内容,不是算出来的,是程序编写者自己根据要显示的图形而定的。  详情 回复 发表于 2020-7-6 18:48
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

20
 
QWE4562009 发表于 2020-7-6 18:41 恩  为什么第一行数组的值是0X00 接下来都是0X7?而第二行和第三行那些数组的元素是那样的值   ...

这是你copy的程序中数组内容,不是算出来的,是程序编写者自己根据要显示的图形而定的。

此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表