📄 up-move.lst
字号:
C51 COMPILER V7.08 UP_MOVE 12/20/2006 21:00:15 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE UP_MOVE
OBJECT MODULE PLACED IN UP-MOVE.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UP-MOVE.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 * *
3 * ME500单片机开发系统演示程序 - 向上滚动显示伟纳电子 *
4 * *
5 * 16×16LED点阵显示
6 * *
7 * 版本: V1.0 (2006/11/20) *
8 * 作者: gguoqing (Email: gguoqing@willar.com) *
9 * 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
10 * 时间: 2006/11/20 *
11 * *
12 *【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
13 *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
14 * *
15 *******************************************************************/
16
17 #include <reg51.h> //51芯片管脚定义头文件
18 #include <intrins.h> //内部包含延时函数 _nop_();
19
20 #define uchar unsigned char
21 #define uint unsigned int
22
23 #define BLKN 2 //列锁存器数
24
25 sbit SDATA_595=P0^0; //串行数据输入
26 sbit SCLK_595 =P2^7; //移位时钟脉冲
27 sbit RCK_595 =P0^2; //输出锁存器控制脉冲
28 sbit G_74138 =P2^4; //显示允许控制信号端口
29
30 uchar data dispram[32]; //显示缓存
31 uchar temp;
32
33 void delay(uint );
34
35 uchar code Bmp[][32]=
36 {
37 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
38 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
39 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
40
41 {0xf7,0xbf,0xf7,0xbf,0xf7,0xbb,0xe8,0x1,0xef,0xbf,0xcf,0xb7,
42 0xa8,0x3,0x6f,0xbf,0xef,0xbb,0xe0,0x1,0xef,0xbb,0xef,0xbb,
43 0xef,0xab,0xef,0xb7,0xef,0xbf,0xef,0xbf},//伟
44
45 {0xef,0xbf,0xef,0xbf,0xdf,0xbb,0xdc,0x1,0xb5,0xbb,0x5,0xbb,
46 0xed,0xbb,0xdd,0xbb,0xbd,0x5b,0x5,0x6b,0xfc,0xeb,0xfd,0xfb,
47 0xe5,0xfb,0x1d,0xfb,0xbd,0xeb,0xfd,0xf7},//纳
48
49 {0xfd,0xff,0xfd,0xff,0xfd,0xef,0x80,0x7,0xbd,0xef,0xbd,0xef,
50 0x80,0xf,0xbd,0xef,0xbd,0xef,0x80,0xf,0xbd,0xef,0xfd,0xff,
51 0xfd,0xfb,0xfd,0xfb,0xfe,0x3,0xff,0xff},//电
52
53 {0xff,0xff,0xc0,0xf,0xff,0xef,0xff,0xdf,0xff,0xbf,0xfe,0x7f,
54 0xfe,0xfb,0x0,0x1,0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,
55 0xfe,0xff,0xfe,0xff,0xfa,0xff,0xfd,0xff}//子
C51 COMPILER V7.08 UP_MOVE 12/20/2006 21:00:15 PAGE 2
56 };
57
58 /********************************************************/
59 /* */
60 /* 主函数 */
61 /* */
62 /********************************************************/
63 void main(void)
64 {
65 1 uchar i,j,k;
66 1 TMOD = 0x01; //定时器T0工作方式1
67 1 TH0 = 0xFC; //1ms定时常数
68 1 TL0 = 0x66;
69 1 G_74138 = 1; //关闭显示
70 1 RCK_595=0;
71 1 P2 =0xF0; //
72 1
73 1 IE = 0x82; //允许定时器T0中断
74 1 TR0 = 1; //启动定时器T0
75 1 while(1)
76 1 {
77 2 for(i=0;i<32;i++) //黑屏
78 2 {
79 3 dispram[i]= Bmp[0][i];
80 3 }
81 2 delay(1000);
82 2
83 2 for(i=0;i<5;i++) //上滚屏显示效果
84 2 {
85 3 for(j=0;j<16;j++)
86 3 {
87 4 for(k=0;k<15;k++)
88 4 {
89 5 dispram[k*BLKN]=dispram[(k+1)*BLKN];
90 5 dispram[k*BLKN+1]=dispram[(k+1)*BLKN+1];
91 5 }
92 4 dispram[30]=Bmp[i][j*BLKN];
93 4 dispram[31]=Bmp[i][j*BLKN+1];
94 4 delay(100);
95 4 }
96 3 }
97 2 delay(2000);
98 2 }// end of while(1)
99 1 }// end of main()
100
101 /********************************************************/
102 /* */
103 /* 延时函数 */
104 /* */
105 /********************************************************/
106 void delay(uint dt)
107 {
108 1 uchar bt;
109 1 for(;dt;dt--)
110 1 for(bt=0;bt<255;bt++);
111 1 }
112
113 /********************************************************/
114 /* */
115 /*将显示数据送入74HC595内部移位寄存器 */
116 /* */
117 /********************************************************/
C51 COMPILER V7.08 UP_MOVE 12/20/2006 21:00:15 PAGE 3
118
119 void WR_595(void)
120 {
121 1 uchar x;
122 1 for (x=0;x<8;x++)
123 1 {
124 2 temp=temp<<1;
125 2 SDATA_595=CY;
126 2 SCLK_595=1; //上升沿发生移位
127 2 _nop_();
128 2 _nop_();
129 2 SCLK_595=0;
130 2 }
131 1 }
132
133 /********************************************************/
134 /* */
135 /* 中断服务函数 */
136 /* */
137 /********************************************************/
138 void leddisplay(void) interrupt 1 using 1
139 {
140 1 register unsigned char i,j=BLKN;
141 1 TH0 = 0xFC; //1ms定时常数
142 1 TL0 = 0x66;
143 1 i=P2; //读取当前显示的行号
144 1 i=++i & 0x0f; //行号加1,屏蔽高4位
145 1 do{
146 2 j--;
147 2 temp = dispram[i*BLKN+j];
148 2 WR_595();
149 2 }while(j);
150 1
151 1 G_74138=1; //关闭显示
152 1 P2 &= 0xf0; //行号端口清零
153 1 RCK_595 = 1; //上升沿将数据送到输出锁存器
154 1 P2 |=i; //写入行号
155 1 RCK_595 = 0; //锁存显示数据
156 1 G_74138=0; //打开显示
157 1 }
158
159 /********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 284 ----
CONSTANT SIZE = 160 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -