📄 newyear.lst
字号:
C51 COMPILER V8.08 NEWYEAR 01/21/2008 01:17:24 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE NEWYEAR
OBJECT MODULE PLACED IN newyear.OBJ
COMPILER INVOKED BY: D:\Keilc51V808a\C51\BIN\C51.EXE newyear.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include <reg51.h> //51芯片管脚定义头文件
3 #include <intrins.h> //内部包含延时函数 _nop_();
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 #define BLKN 2 //列锁存器数
9
10 sbit SDATA_595=P0^0; //串行数据输入
11 sbit SCLK_595 =P2^7; //移位时钟脉冲
12 sbit RCK_595 =P0^2; //输出锁存器控制脉冲
13 sbit G_74138 =P2^4; //显示允许控制信号端口
14
15 uchar data dispram[32]; //显示缓存
16 uchar temp;
17
18 void delay(uint );
19
20 uchar code Bmp[][32]=
21 {
22 {0xff,0x7f,0xff,0x7f,0xfe,0xbf,0xfe,0xbf,0xfd,0xdf,0x83,0xe0,0xdf,0xfd,0xef,0xfb,0xf7,0xf7,0xfb,0xef,0x
-f7,0x77,0xf6,0xb7,0xe9,0xcb,0xe7,0xf3,0xdf,0xfd,0xff,0xff},
23
24 {0xff,0x7f,0xff,0x7f,0xfe,0x3f,0xfe,0x3f,0xfc,0x1f,0x80,0x0,0xc0,0x1,0xe0,0x3,0xf0,0x7,0xf8,0xf,0xf0,0x
-7,0xf0,0x87,0xe1,0xc3,0xe7,0xf3,0xdf,0xfd,0xff,0xff},
25
26 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
27 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
28 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
29
30 {0x7F,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,0xFF,0xF7,0xFF,0xFB,0xFF,
31 0xFD,0xFF,0xFE,0xFF,0xFF,0x7F,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,
32 0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0xFF,0xFE},
33
34 {0xef,0xf7,0xf5,0xe3,0x80,0x9f,0xff,0xbf,0xdd,0xbf,0xeb,0xbb,0x0,0x1,0xf5,0xb7,0x80,0xb7,0xf7,0xb7,0xf5
-,0xb7,0xd6,0x77,0xb7,0x77,0x76,0xf7,0xd7,0xf7,0xef,0xf7},//新
35
36 {0xf7,0xff,0xf7,0xf7,0xe0,0x3,0xee,0xff,0xde,0xff,0xbe,0xef,0xe0,0x7,0xee,0xff,0xee,0xff,0xee,0xfb,0x0,
-0x1,0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff},//年
37
38 {0xef,0x7f,0xef,0x7f,0xef,0x7f,0xef,0x77,0xa4,0x3,0xab,0x77,0xaf,0x77,0x6f,0x77,0xef,0x77,0xe0,0x1,0xef
-,0x7f,0xee,0xbf,0xee,0xdf,0xed,0xef,0xeb,0xf1,0xe7,0xfb},//快
39
40 {0xff,0xdf,0xff,0xf,0xe0,0xff,0xef,0xff,0xee,0xff,0xee,0xff,0xde,0xfb,0x80,0x1,0xfe,0xff,0xfe,0xff,0xf6
-,0xdf,0xf6,0xef,0xee,0xf7,0xde,0xf3,0xba,0xfb,0xfd,0xff}//乐
41 };
42
43 /*******************************************************
44 * *
45 * 延时函数 *
46 * *
47 *******************************************************/
48 void delay(uint dt)
49 {
C51 COMPILER V8.08 NEWYEAR 01/21/2008 01:17:24 PAGE 2
50 1 uchar bt;
51 1 for(;dt;dt--)
52 1 for(bt=0;bt<255;bt++);
53 1 }
54
55 /**********************************************************/
56 void delay0(uint x) //x*0.14MS
57 {
58 1 uchar b;
59 1 while(x--)
60 1 {
61 2 for (b = 0; b<13; b++) {}
62 2 }
63 1 }
64 /*******************************************************
65 * *
66 *将显示数据送入74HC595内部移位寄存器 *
67 * *
68 *******************************************************/
69 void WR_595(void)
70 {
71 1 uchar x;
72 1 for (x=0;x<8;x++)
73 1 {
74 2 temp=temp<<1;
75 2 SDATA_595=CY;
76 2 SCLK_595=1; //上升沿发生移位
77 2 _nop_();
78 2 _nop_();
79 2 SCLK_595=0;
80 2 }
81 1 }
82
83 /*******************************************************
84 * *
85 * 主函数 *
86 * *
87 *******************************************************/
88 void main(void)
89 {
90 1 uchar i,k,h,s;
91 1 TMOD = 0x01; //定时器T0工作方式1
92 1 TH0 = 0xFC; //1ms定时常数
93 1 TL0 = 0x66;
94 1 G_74138 = 1; //关闭显示
95 1 RCK_595=0;
96 1 P2 =0xF0; //行号端口清零
97 1
98 1 IE = 0x82; //允许定时器T0中断
99 1 TR0 = 1; //启动定时器T0
100 1 while(1)
101 1 {
102 2 for(k=0;k<3;k++)
103 2 {
104 3 for(i=0;i<32;i++)
105 3 {
106 4 dispram[i]= Bmp[k][i];
107 4 }
108 3 delay(1500);
109 3 }
110 2
111 2 TR0=0;
C51 COMPILER V8.08 NEWYEAR 01/21/2008 01:17:24 PAGE 3
112 2 s=0;
113 2 h=0;
114 2 while(s!=32)
115 2 {
116 3 G_74138=1; //关闭显示
117 3 s++;
118 3 temp = Bmp[3][s];
119 3 WR_595();
120 3 s--;
121 3 temp = Bmp[3][s];
122 3 WR_595();
123 3 s++;
124 3 s++;
125 3
126 3 RCK_595 = 1; //上升沿将数据送到输出锁存器
127 3 _nop_();
128 3 RCK_595 = 0; //锁存显示数据
129 3
130 3 G_74138=0; //打开显示
131 3
132 3 for(i=0;i<16;i++)
133 3 {
134 4 while(h!=0x10)
135 4 {
136 5 P2=h;
137 5 h++;
138 5 delay0(10);
139 5 }
140 4 h=0;
141 4 }
142 3 }
143 2
144 2 temp = 0x00;
145 2 WR_595();
146 2 WR_595();
147 2 RCK_595 = 1; //上升沿将数据送到输出锁存器
148 2 _nop_();
149 2 RCK_595 = 0; //锁存显示数据
150 2 h=0;
151 2 while(h!=0x10)
152 2 {
153 3 P2=h;
154 3 h++;
155 3 delay0(2000);
156 3 }
157 2 TR0=1;
158 2
159 2 for(k=4;k<8;k++) //显示"伟纳电子"
160 2 {
161 3 for(i=0;i<32;i++)
162 3 {
163 4 dispram[i]= Bmp[k][i];
164 4 }
165 3 delay(1500);
166 3 }
167 2
168 2 } //end of while(1)
169 1 } //end of main()
170
171
172
173 /*******************************************************
C51 COMPILER V8.08 NEWYEAR 01/21/2008 01:17:24 PAGE 4
174 * *
175 * 中断服务函数 *
176 * *
177 *******************************************************/
178 void leddisplay(void) interrupt 1 using 1
179 {
180 1 uchar i,j=BLKN;
181 1 TH0 = 0xFC; //1ms定时常数
182 1 TL0 = 0x66;
183 1 i=P2; //读取当前显示的行号
184 1 i=++i & 0x0f; //行号加1,屏蔽高4位
185 1 do{
186 2 j--;
187 2 temp = dispram[i*BLKN+j];
188 2 WR_595();
189 2 }while(j);
190 1
191 1 G_74138=1; //关闭显示
192 1 P2 &= 0xf0; //行号端口清零
193 1 RCK_595 = 1; //上升沿将数据送到输出锁存器
194 1 P2 |=i; //写入行号
195 1 RCK_595 = 0; //锁存显示数据
196 1 G_74138=0; //打开显示
197 1 }
198
199 /******************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 367 ----
CONSTANT SIZE = 256 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 1
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 + -