📄 hc74164_7seg.lst
字号:
C51 COMPILER V7.06 HC74164_7SEG 10/11/2008 15:12:38 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE HC74164_7SEG
OBJECT MODULE PLACED IN HC74164_7SEG.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE HC74164_7SEG_driver\HC74164_7SEG.c BROWSE DEBUG OBJECTEXTEND PRINT(.\HC7416
-4_7SEG.lst) OBJECT(HC74164_7SEG.obj)
stmt level source
1 //************************************************************
2 //Copyright(C)2008,桂林电子科技大学电子工程学院科技协会
3 // HC74164_7SEG 四位数码管驱动源文件
4 //文件名称:HC74164_7SEG.c
5 //文件标识:(内参)
6 //摘 要:
7 // 1.配合头文件使用;
8 // 2.硬件参考作品;
9 // 3.
10 //
11 //当前版本:1.0
12 //作 者:覃秋霖
13 //完成日期:2008.10.10
14 //
15 //取代版本:无
16 //原 作 者:无
17 //完成日期:无
18 //
19 // HC74164_7SEG_SER ---------- P0^0
20 // HC74164_7SEG_CLK ---------- P0^1
21 // HC74164_7SEG_MR ---------- P0^2
22 // HC74164_7SEG_S0 ---------- P0^6
23 // HC74164_7SEG_S1 ---------- P0^5
24 // HC74164_7SEG_S2 ---------- P0^4
25 // HC74164_7SEG_S3 ---------- P0^3
26 //
27 //***********************************************************
28
29 #include<reg52.h>
30 #include"Mylib.h"
31 #include"./HC74164_7SEG_driver/HC74164_7SEG.h"
32
33 static uchar DDRAM[]={ 0x00,0x00,0x00,0x00 };
34
35 uchar code TAB_SEG[16]={
36 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//0,1,2,3,4,5,6,7
37 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//8,9,a,b,c,d,e,f
38
39 //*******************模块内部函数声明************************
40 static void delay10ms(void);
41 static void Set_Pos_7seg(uchar position);
42 static void show_pattern(uchar Pos, uchar *pattern, uchar Len);
43
44 //*******************************************
45 //函数名称:static void delay10ms(void)
46 //函数功能: 延时函数
47 //形式参数: 无
48 //行参说明: 无
49 //返回参数: 无
50 //使用说明: 无
51 //*******************************************
52 static void delay10ms(void)
53 {
54 1 uchar i,j;
C51 COMPILER V7.06 HC74164_7SEG 10/11/2008 15:12:38 PAGE 2
55 1 for(i=0;i<50;i++)
56 1 for(j=0;j<10;j++);
57 1 }
58
59 //*******************************************
60 //函数名称:static void Set_Pos_7seg(uchar position)
61 //函数功能: 使能数码管的指定位
62 //形式参数: uchar position
63 //行参说明: 位置(从 0 到 4)
64 //返回参数: 无
65 //使用说明: position 数值为0时表示关闭显示
66 //*******************************************
67 static void Set_Pos_7seg(uchar position)
68 {
69 1 switch(position)
70 1 {
71 2 case 0:
72 2 HC74164_7SEG_S0 = 0;
73 2 HC74164_7SEG_S1 = 0;
74 2 HC74164_7SEG_S2 = 0;
75 2 HC74164_7SEG_S3 = 0;
76 2 break;
77 2 case 1:
78 2 HC74164_7SEG_S0 = 0;
79 2 HC74164_7SEG_S1 = 1;
80 2 HC74164_7SEG_S2 = 1;
81 2 HC74164_7SEG_S3 = 1;
82 2 break;
83 2 case 2:
84 2 HC74164_7SEG_S0 = 1;
85 2 HC74164_7SEG_S1 = 0;
86 2 HC74164_7SEG_S2 = 1;
87 2 HC74164_7SEG_S3 = 1;
88 2 break;
89 2 case 3:
90 2 HC74164_7SEG_S0 = 1;
91 2 HC74164_7SEG_S1 = 1;
92 2 HC74164_7SEG_S2 = 0;
93 2 HC74164_7SEG_S3 = 1;
94 2 break;
95 2 case 4:
96 2 HC74164_7SEG_S0 = 1;
97 2 HC74164_7SEG_S1 = 1;
98 2 HC74164_7SEG_S2 = 1;
99 2 HC74164_7SEG_S3 = 0;
100 2 break;
101 2 }
102 1 }
103
104 //*******************************************
105 //函数名称:extern void show_DDRAM()
106 //函数功能: 把显示缓存的数据送往数码管显示
107 //形式参数: 无
108 //行参说明: 无
109 //返回参数: 无
110 //使用说明: 调用 DDRAM 显示缓存的数据
111 //*******************************************
112 extern void show_DDRAM()
113 {
114 1 uchar i;
115 1 uchar j;
116 1 uchar ucDTemp;
C51 COMPILER V7.06 HC74164_7SEG 10/11/2008 15:12:38 PAGE 3
117 1 uchar ucBit;
118 1
119 1 Set_Pos_7seg(0);
120 1 HC74164_7SEG_MR = 0;
121 1
122 1 for(i = 0; i<4; i++)
123 1 {
124 2 ucDTemp = DDRAM[i];
125 2 ucBit = 0x80;
126 2 HC74164_7SEG_MR = 1;
127 2
128 2 for(j = 0; j<8; j++)
129 2 {
130 3 HC74164_7SEG_CLK = 0;
131 3 HC74164_7SEG_SER = ucDTemp & (ucBit >> j);
132 3 HC74164_7SEG_CLK = 1;
133 3 }
134 2
135 2 Set_Pos_7seg(i+1);
136 2 delay10ms();
137 2 HC74164_7SEG_MR = 0;
138 2 Set_Pos_7seg(0);
139 2 }
140 1 }
141
142 //*******************************************
143 //函数名称:static void show_pattern(uchar Pos, uchar *pattern, uchar Len)
144 //函数功能: 把Len长度的数据填到显示缓存的Pos位置
145 //形式参数: uchar Pos, uchar *pattern, uchar Len
146 //行参说明: 无
147 //返回参数: 无
148 //使用说明: Len 以字节为单位
149 //*******************************************
150 static void show_pattern(uchar Pos, uchar *pattern, uchar Len)
151 {
152 1 uchar i;
153 1
154 1 for(i = 0; (i<Len) && ((Pos + i) < 4 ); i++)
155 1 {
156 2 DDRAM[Pos + i] = *pattern;
157 2 pattern ++;
158 2 }
159 1 }
160
161 //*******************************************
162 //函数名称:extern void clear_DDRAM(void)
163 //函数功能: 无
164 //形式参数: 无
165 //行参说明: 无
166 //返回参数: 无
167 //使用说明: 无
168 //*******************************************
169 extern void clear_DDRAM(void)
170 {
171 1 uchar i;
172 1
173 1 for(i = 0; i<4; i++)
174 1 {
175 2 DDRAM[i] = 0x00;
176 2 }
177 1 }
178
C51 COMPILER V7.06 HC74164_7SEG 10/11/2008 15:12:38 PAGE 4
179 //*******************************************
180 //函数名称:extern void display_LED_number_int(uchar Pos, ulong Num)
181 //函数功能: 无
182 //形式参数: 无
183 //行参说明: 无
184 //返回参数: 无
185 //使用说明: 无
186 //*******************************************
187 extern void display_LED_number_int(uchar Pos, uint Num)
188 {
189 1
190 1 uchar count,temp[5],Flag = 1;
191 1
192 1 for(count=5;count;) //将Num的高(低)位放在数组temp的低(高)位中
193 1 {
194 2 temp[--count]=Num%10;
195 2 Num/=10;
196 2 }
197 1 for(count=0;count<10;count++) //从Num的高位开始显示
198 1 {
199 2 if (temp[count] != 0||Flag==0) //巧妙采用一个标志位来消除前面显示的零
200 2 {
201 3 show_pattern( Pos, TAB_SEG + temp[count], 1);
202 3 Pos ++;
203 3 Flag = 0;
204 3 }
205 2 }
206 1 }
207
208
209
210
211
212
213
214
215
216
217
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 307 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 14
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 + -