📄 hd7279a_driver.lst
字号:
C51 COMPILER V7.06 HD7279A_DRIVER 01/08/2009 14:15:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE HD7279A_DRIVER
OBJECT MODULE PLACED IN HD7279A_Driver.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE HD7279A_Driver.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<config.c>//管脚配置文件
2 #include<reg51.h>
3
4
5 #define HD7279A_RESET 0xA4//重启指令
6 #define HD7279A_TEST 0xBF//测试指令
7 #define HD7279A_LEFT 0xA1//左移指令
8 #define HD7279A_RIGHT 0xA0//右移指令
9 #define HD7279A_CLEFT 0xA3//循环左移
10 #define HD7279A_CRIGHT 0xA2//循环右移
11 #define HD7279A_FLASH 0x88//闪烁控制
12 #define HD7279A_VISIBLE 0x98//消隐控制
13 #define HD7279A_SEG_ON 0xE0//段点亮
14 #define HD7279A_SEG_OFF 0xC0//段关闭
15 #define HD7279A_READ_KEY 0x15//读取键盘数据
16
17
18 //sbit HD7279A_LCSPIN=P3^2;//片选指令,低电平有效
19 //sbit HD7279A_CLKPIN=P3^3;//脉冲,上升沿数据有效
20 //sbit HD7279A_DATAPIN=P3^4;//串行数据输入端
21 //sbit HD7279A_KEYPIN=P3^5;//按键有效输出端
22
23 void HD7279A_Delay(unsigned int uiTime);//延迟函数,参数:时间
24 void HD7279A_SendData(unsigned char ucCMD,unsigned char ucData);//传输数据,参数:命令,数据
25 void HD7279A_SendCommand(unsigned char ucByte);//传输命令,参数:命令
26 unsigned char HD7279A_ReadByte(unsigned char ucCMD);//读取字节,参数:命令
27
28
29 void HD7279A_Delay(unsigned int uiTime)
30 {
31 1 unsigned int i;
32 1 for(i=0;i<uiTime;i++)//粗略延时
33 1 {
34 2 ;
35 2 }
36 1 }
37
38 void HD7279A_SendCommand(unsigned char ucByte)
39 {
40 1 unsigned char i;
41 1 HD7279A_LCSPIN=0;//片选
42 1 HD7279A_Delay(0x30);//延迟30us左右
43 1 for(i=0;i<8;i++)//循环左移,串行传输数据
44 1 {
45 2 if(ucByte&0x80)//取最高位
46 2 {
47 3 HD7279A_DATAPIN=1;//传输
48 3 }
49 2 else
50 2 {
51 3 HD7279A_DATAPIN=0;
52 3 }
53 2 HD7279A_CLKPIN=1;//设定上升沿环境
54 2 HD7279A_Delay(0x08);//延时8us
55 2 HD7279A_CLKPIN=0;//设定clk低电平
C51 COMPILER V7.06 HD7279A_DRIVER 01/08/2009 14:15:21 PAGE 2
56 2 HD7279A_Delay(0x08);
57 2 ucByte<<=1;//左移
58 2 }
59 1 HD7279A_DATAPIN=0;
60 1 HD7279A_LCSPIN=1;
61 1 }
62
63 void HD7279A_SendData(unsigned char ucCMD,unsigned char ucData)
64 {
65 1 unsigned char i;
66 1 HD7279A_LCSPIN=0;
67 1 HD7279A_Delay(0x30);
68 1 for (i=0;i<8;i++)//首先传输指令
69 1 {
70 2 if (ucCMD&0x80)
71 2 {
72 3 HD7279A_DATAPIN=1;
73 3 }
74 2 else
75 2 {
76 3 HD7279A_DATAPIN=0;
77 3 }
78 2 HD7279A_CLKPIN=1;
79 2 HD7279A_Delay(0x08);
80 2 HD7279A_CLKPIN=0;
81 2 HD7279A_Delay(0x08);
82 2 ucCMD<<=1;
83 2 }
84 1 HD7279A_Delay(0x11);//延迟,等待传输数据
85 1 for (i=0;i<8;i++)//传输数据
86 1 {
87 2 if(ucData&0x80)
88 2 {
89 3 HD7279A_DATAPIN=1;
90 3 }
91 2 else
92 2 {
93 3 HD7279A_DATAPIN=0;
94 3 }
95 2 HD7279A_CLKPIN=1;
96 2 HD7279A_Delay(0x08);
97 2 HD7279A_CLKPIN=0;
98 2 HD7279A_Delay(0x08);
99 2 ucData<<=1;
100 2 }
101 1 HD7279A_DATAPIN=0;
102 1 HD7279A_Delay(0x08);
103 1 HD7279A_LCSPIN=1;
104 1 HD7279A_Delay(0x08);
105 1
106 1 }
107
108
109
110 unsigned char HD7279A_ReadByte(unsigned char ucCMD)
111 {
112 1 unsigned char i;
113 1 unsigned char ucRec=0;
114 1 HD7279A_LCSPIN=0;
115 1 HD7279A_Delay(0x30);
116 1 for(i=0;i<8;i++)//传输读取字节命令
117 1 {
C51 COMPILER V7.06 HD7279A_DRIVER 01/08/2009 14:15:21 PAGE 3
118 2 if(ucCMD&0x80)
119 2 {
120 3 HD7279A_DATAPIN=1;
121 3 }
122 2 else
123 2 {
124 3 HD7279A_DATAPIN=0;
125 3 }
126 2 HD7279A_CLKPIN=1;
127 2 HD7279A_Delay(0x08);
128 2 HD7279A_CLKPIN=0;
129 2 HD7279A_Delay(0x08);
130 2 ucCMD<<=1;
131 2 }
132 1 // HD7279A_DATAPIN=1;
133 1 HD7279A_Delay(0x14);
134 1 for(i=0;i<8;i++)//开始接受数据
135 1 {
136 2 HD7279A_CLKPIN=1;
137 2 HD7279A_Delay(0x05);
138 2 if(HD7279A_DATAPIN==1)
139 2 {
140 3 ucRec=ucRec|0x01;//存储到ucRec中
141 3 }
142 2 HD7279A_Delay(0x08);
143 2 HD7279A_CLKPIN=0;
144 2 ucRec<<=1;
145 2 }
146 1 HD7279A_DATAPIN=0;
147 1 HD7279A_LCSPIN=1;
148 1 return ucRec;//返回数据
149 1 }
150
151 main()
152 {
153 1 unsigned int i,j;
154 1 while(1)
155 1 {
156 2 for(i=0;i<2000;i++)
157 2 {
158 3 ;
159 3 }
160 2 P0=0xFF;
161 2 HD7279A_SendCommand(HD7279A_RESET);
162 2 HD7279A_SendData(0xc8,0x08);
163 2 HD7279A_SendData(0xc9,0x00);
164 2 HD7279A_SendData(0xca,0x00);
165 2 HD7279A_SendData(0xcb,0x02);
166 2 for (i=0;i<300;i++)
167 2 {
168 3 for (j=0;j<2000;j++)
169 3 {
170 4 ;
171 4 }
172 3 }
173 2 P0=0x00;
174 2 HD7279A_SendCommand(HD7279A_RESET);
175 2 HD7279A_SendCommand(HD7279A_TEST);
176 2 for (i=0;i<300;i++)
177 2 {
178 3 for (j=0;j<2000;j++)
179 3 {
C51 COMPILER V7.06 HD7279A_DRIVER 01/08/2009 14:15:21 PAGE 4
180 4 ;
181 4 }
182 3 }
183 2 P0=0xff;
184 2 HD7279A_SendCommand(HD7279A_RESET);
185 2 }
186 1
187 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 365 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -