📄 leddisp.lst
字号:
C51 COMPILER V8.08 LEDDISP 10/02/2007 07:17:24 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LEDDISP
OBJECT MODULE PLACED IN LedDisp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LedDisp.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*--------------------------------------------------------------------*-
2
3 LedDisp.C (V1.00)
4
5
6 -*---------------------------------------------------------------------*/
7
8 /*
9 * Copyright (c) 2006,wsl
10 * All rights reserved
11 *
12 * 文件名称: LedDisp.C
13 * 文件标识:
14 * 摘 要: 数码显示
15 *
16 * 当前版本: V1.0 * 取代版本:
17 * 作 者: wsl * 修 改:
18 * 版本信息: 2006-09-14 * 修改信息:
19 */
20 //***********************************************************************
21
22 #include"main.H"
23 #include"Port.H"
24 #include"MMI.h"
25 #include"SCH51.H"
26 #include"Uart.h"
27 #include"LedDisp.h"
28
29 /*************************************************************************/
30 /*动态数码管个数*/
31 #define LED_NUMBER (4)
32
33 extern time_str now;
34
35
36 /*数码管显示段码表,不带点*/
37 unsigned char code DispCode[]=
38 {
39 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92,
40 0x82, 0xf8, 0x80, 0x90, 0xff, 0x92,/*s*/ 0x86,/*E*/ 0x87/*t*/
41 };
42
43 /*数码管扫描码表*/
44 unsigned char code ScanCode[4]=
45 {
46 0xfe, 0xfd, 0xfb, 0xf7
47 };
48 /*数码管显示缓冲区*/
49 unsigned char dispbuf[4]=
50 {
51 1,2,3,4
52 };
53
54 /*LED数码管工作模式控制字*/
55 /*工作模式分三种, 1> 点位同时闪烁(LED_TMOD = 0x00)
C51 COMPILER V8.08 LEDDISP 10/02/2007 07:17:24 PAGE 2
56 2> 点位分别闪烁(LED_TMOD = 0x01)
57 3> 点位不闪烁 (LED_TMOD = 0x10)
58 */
59 unsigned char LED_TMOD = 0x00;
60 /*更新显示数据标志*/
61 bit g_UpdataFlagEn = 1; /*(1)可以更新;(0)不可以更新*/
62
63 /*点闪烁总使能标志为1点闪动*/
64 bit g_DFlashEn = 0;
65 /*位闪烁总使能标志为1位闪动*/
66 bit g_BFlashEn = 0;
67
68 /*用于切换点的闪烁状态,闪烁或不闪烁*/
69 static bit DFlash;
70 /*用于切换位的闪烁状态,闪烁或不闪烁*/
71 static bit BFlash;
72
73 /*数码管闪烁标志*/
74 unsigned char bdata Flag;
75 // 闪烁点:Blink,为1的位闪动
76 sbit Dlink1 = Flag^0; /*时十位点 为1的位闪动*/
77 sbit Dlink2 = Flag^1;
78 sbit Dlink3 = Flag^2;
79 sbit Dlink4 = Flag^3; /*分个位点 为1的位闪动*/
80 // 闪烁位:Blink,为1的位闪动
81 sbit Blink1 = Flag^4; /*时十位*/
82 sbit Blink2 = Flag^5; /*时个位*/
83 sbit Blink3 = Flag^6; /*分十位*/
84 sbit Blink4 = Flag^7; /*分个位*/
85
86 /*用于显示刷新的频率*/
87 /*
88 g_DispFreq = 0 动态扫描的频是200HZ
89 g_DispFreq = 1 动态扫描的频是100HZ
90 g_DispFreq = 2 动态扫描的频是66HZ
91 g_DispFreq = 3 动态扫描的频是50HZ
92 g_DispFreq = 4 动态扫描的频是40HZ
93 g_DispFreq = 5 动态扫描的频是33HZ
94 g_DispFreq = 6 动态扫描的频是28HZ
95 g_DispFreq = 7 动态扫描的频是25HZ
96 */
97 unsigned char g_DispScanFreq = 4; /*最小为0,最大为7*/
98
99 /*私有函数*/
100
101
102
103 /**************************************************************************-
104 关于数码管显示的各寄存器的应用说明:
105 g_DispScanFreq: 用于显示刷新的频率,最小为0,最大为7
106 // 任意位和任意点可以同时闪烁(点位总使能开同时开)
107 #define LED_DISP_MODE0() {LED_TMOD = 0x00; g_DFlashEn = 1; g_BFlashEn = 1;}
108 // 只能任意点可以闪烁(点总使能开)
109 #define LED_DISP_MODE1_D() {LED_TMOD = 0x01; g_DFlashEn = 1; g_BFlashEn = 0;}
110 // 只能任意位可以闪烁(位总使能开)
111 #define LED_DISP_MODE1_B() {LED_TMOD = 0x01; g_DFlashEn = 0; g_BFlashEn = 1;}
112 // 点和位都不会闪烁
113 #define LED_DISP_MODE2() {LED_TMOD = 0x10; g_DFlashEn = 0; g_BFlashEn = 0;}
114
115 -**************************************************************************/
116 /*-----------------------------------------------------------------------*-
117 * 函数名称: LedDisplay()
C51 COMPILER V8.08 LEDDISP 10/02/2007 07:17:24 PAGE 3
118 * 参 数: XX
119 * 返 回: XX
120 * 函数功能: 数码显示
121 *
122 * 说 明:
123 *
124 * 当前版本: V1.0 * 取代版本:
125 * 作 者: wsl * 修 改:
126 * 版本信息: 2006-09-14 * 修改信息:
127 -*-----------------------------------------------------------------------*/
128 void LedDisplay(void)
129 {
130 1 unsigned char i, BitCnt;
131 1
132 1 if ( g_UpdataFlagEn ) /*是否更新显示数据*/
133 1 { /*更新时钟数据*/
134 2 dispbuf[0] = now.hour / 10;
135 2 dispbuf[1] = now.hour % 10;
136 2 dispbuf[2] = now.min / 10;
137 2 dispbuf[3] = now.min % 10;
138 2 }
139 1
140 1 /*动态扫描*/
141 1 for (BitCnt=0; BitCnt<LED_NUMBER; BitCnt++)
142 1 {
143 2 LedCont = ScanCode[BitCnt];
144 2
145 2 switch (LED_TMOD)
146 2 {
147 3 case 0x00:
148 3 if ( DFlash ) /*否则是点闪烁*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -