📄 hd7279.lst
字号:
C51 COMPILER V7.20 HD7279 04/28/2007 16:48:04 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE HD7279
OBJECT MODULE PLACED IN hd7279.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE hd7279.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /* File Name: hd7279.c */
3 /* Author: Huaming Liu */
4 /* Created: 2007-4-28 */
5 /* Modified: no */
6 /* Revision: V1.0 */
7 /************************************************************************************/
8 /*程序作用:测试hd7279键盘显示芯片是否能正常工作 */
9 /*程序功能:按下0号键点亮4个LED灯 ,按下1号键显示0、1、2、3,按下2号键显示c、d、e、f*/
10 /* 按下3号键显示4、5、6、7,按下4号键显示8、9、a、b*/
11 /************************************************************************************/
12
13 #include <reg52.h> /*定义头文件*/
14 #include <absacc.h>
15 #define Set_Bit(BIT) (BIT = 1) /*定义置1函数*/
16 #define Clear_Bit(BIT) (BIT = 0) /*定义清0函数*/
17 typedef unsigned char BYTE; /*自定义字节类型*/
18
19 BYTE Keyboard_Out; /*定义键值变量*/
20 bit Keyboard_Flag; /*定义按键标志*/
21 /* char* Wdt =DBYTE[0x00A6];/*定义看门狗SFR*/
22
23 sbit Hd7279_CS=P1^0; /*定义HD7279片选信号连接*/
24 sbit Hd7279_Clk=P1^1; /*定义HD7279时钟硬件连接*/
25 sbit Hd7279_Data=P1^2; /*定义HD7279数据硬件连接*/
26 sbit Hd7279_Key=P1^3; /*定义HD7279中断硬件连接*/
27
28 /****** HD7279的指令 ******/
29 #define CMD_RESET 0xa4
30 #define CMD_TEST 0xbf /*所有LED均亮,且闪烁*/
31 #define DECODE0 0x80 /*0位LED按方式0译码,1-7位LED需在低三位改动(000-111)*/
32 #define DECODE1 0xc8 /*0位LED按方式1译码,1-7位LED需在低三位改动(000-111)*/
33 /*都是按BCD译码,只是A-F译码方式不同*/
34 #define UNDE_CODE 0x90 /*0位LED不译码,即是七段码(最高位DP,其次A,B…)*/
35 #define CMD_READ 0x15 /*键盘读取*/
36 #define RL_CYCLE 0xa3 /*左移,循环移位*/
37 #define RR_CYCLE 0xa2 /*右移,循环移位*/
38 #define RL_UNCYL 0xa1 /*左移,非循环移位*/
39 #define RR_UNCYL 0xa0 /*右移,非循环移位*/
40 #define ACT_CTL 0x98 /*消隐控制,被消隐的位不显示但数据被保存*/
41 #define SEG_ON 0xe0 /*段点亮,段值范围0~3FH,LED位从0-7,段位从G-A-DP*/
42 #define SEG_OFF 0xc0
43 #define BLINK_CTL 0x88 /*闪烁控制*/
44
45 void Led_On(BYTE); /*定义点亮LED灯函数*/
46 void Led_Off(BYTE); /*定义熄灭LED灯函数*/
47 void Write_Hd7279(BYTE,BYTE); /*定义HD7279写函数,先写命令再写控制信息*/
48 BYTE Read_Hd7279(BYTE); /*定义HD7279读函数,只需发出命令再读入数据*/
49 void Send_Byte(BYTE); /*定义HD7279发送字节函数*/
50 BYTE Receive_Byte(void); /*定义HD7279接收字节函数*/
51 void Short_Delay(void); /*定义短延时函数*/
52 void Long_Delay(void); /*定义长延时函数*/
53 void Mcu_Init(void); /*定义MCU初始化函数*/
54 void Delay_200_mS(void); /*定义200ms延时函数*/
55
C51 COMPILER V7.20 HD7279 04/28/2007 16:48:04 PAGE 2
56
57 /************************************************************************************/
58 void main(void) /*主函数*/
59 {
60 1 Mcu_Init(); /*MCU初始化*/
61 1 while(1)
62 1 {
63 2 if(Keyboard_Flag) /*if1,有按键按下*/
64 2 {
65 3 Clear_Bit(Keyboard_Flag);
66 3 if(Keyboard_Out==0) /*0号键处理*/
67 3 {/*按下0号键点亮4个LED灯*/
68 4 Led_On(0x00);
69 4 Led_On(0x01);
70 4 Led_On(0x02);
71 4 Led_On(0x03);
72 4 }
73 3 else if(Keyboard_Out==1) /*1号键处理*/
74 3 { /*显示0、1、2、3*/
75 4 Write_Hd7279(0xc9,0x03);
76 4 Write_Hd7279(0xca,0x02);
77 4 Write_Hd7279(0xcb,0x01);
78 4 Write_Hd7279(0xcc,0x00);
-
- Led_Off(0x02);
79 4 }
80 3 else if(Keyboard_Out==2) /*2号键处理*/
81 3 { /*显示c、d、e、f*/
82 4 Write_Hd7279(0xc9,0x0f);
83 4 Write_Hd7279(0xca,0x0e);
84 4 Write_Hd7279(0xcb,0x0d);
85 4 Write_Hd7279(0xcc,0x0c);
-
- Led_Off(0x02);
86 4 }
87 3 else if(Keyboard_Out==3) /*3号键处理*/
88 3 { /*显示4、5、6、7*/
89 4 Write_Hd7279(0xc9,0x07);
90 4 Write_Hd7279(0xca,0x06);
91 4 Write_Hd7279(0xcb,0x05);
92 4 Write_Hd7279(0xcc,0x04);
-
- Led_Off(0x02);
93 4 }
94 3 else /*4号键处理*/
95 3 { /*显示8、9、a、b*/
96 4 Write_Hd7279(0xc9,0x0b);
97 4 Write_Hd7279(0xca,0x0a);
98 4 Write_Hd7279(0xcb,0x09);
99 4 Write_Hd7279(0xcc,0x08);
-
- Led_Off(0x02);
100 4 }
101 3 Delay_200_mS();
102 3 } /*if1*/
103 2 } /*while*/
104 1 } /*main*/
105
106
107 void Delay_200_mS(void) /*200ms延时函数*/
108 {
109 1 BYTE i,j;
C51 COMPILER V7.20 HD7279 04/28/2007 16:48:04 PAGE 3
110 1 i=200;
111 1 while (i--)
112 1 {
113 2 j=228;
114 2 while(j--);
115 2 }
116 1 }
117
118
119 void Mcu_Init(void) /*MCU初始化函数*/
120 {
121 1 Set_Bit(EX0); /*外部中断0使能*/
122 1 Set_Bit(IT0); /*外部中断0下降沿触发*/
123 1 Set_Bit(EA); /*中断使能*/
124 1 DBYTE[0X00A6]=0x1e;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -