📄 xqdz.lst
字号:
C51 COMPILER V9.00 XQDZ 05/06/2012 14:23:38 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE XQDZ
OBJECT MODULE PLACED IN xqdz.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE xqdz.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 /*头文件*/
4 #include <reg52.h>
5 #include <intrins.h>
6 #define uint unsigned int
7 #define uchar unsigned char
8 #define NOP() _nop_()
9
10 /*端口定义*/
11
12 sbit EN_port = P1^3;
13 sbit DA_in_port = P1^2;
14 sbit CLK_port = P1^1;
15 sbit Latch_port = P1^0;
16
17 #define ABCD_port P1 //HC138 ABCD端口定义
18 //sbit D_port = P1^7;
19 //sbit C_port = P1^6;
20 //sbit B_port = P1^5;
21 //sbit A_port = P1^4;
22
23 uchar code ziku_table[]={
24
25 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/
26 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
27
28 0xF3,0xFC,0xF3,0xCC,0x83,0xC4,0x83,0xF0,0xF3,0xFC,0x93,0x9C,0x83,0x80,0xE3,0xC1,
29 0x7F,0xFE,0x7F,0xFE,0x00,0x80,0x00,0x80,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0xFF,0xFF,/*"毕",0*/
30
31 0x9F,0xFC,0x9F,0xFC,0x9F,0xFC,0x9F,0xFC,0x99,0xCC,0x99,0xCC,0x99,0xCC,0x93,0xE4,
32 0x93,0xE4,0x93,0xE4,0x9F,0xFC,0x9F,0xFC,0x9F,0xFC,0x00,0x80,0x00,0x80,0xFF,0xFF,/*"业",0*/
33
34
35 0x3B,0xF0,0x33,0xF0,0x27,0xF3,0x37,0xF3,0x1F,0x83,0x90,0x87,0x10,0xE0,0x13,0xE0,
36 0x33,0xE7,0x33,0xF3,0x73,0xF2,0xC3,0xF8,0x63,0xF0,0x13,0x86,0x9F,0xCF,0xFF,0xFF,/*"设",0*/
37
38 0xFF,0xFF,0xFB,0xF9,0xF3,0xF9,0xE7,0xF9,0xFF,0xF9,0x10,0x80,0x10,0x80,0xF3,0xF9,
39 0xF3,0xF9,0xF3,0xF9,0xF3,0xF9,0xD3,0xF9,0xC3,0xF9,0xE3,0xF9,0xF3,0xF9,0xFF,0xFF,/*"计",0*/
40
41
42
43 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/
44 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
45
46 };
47
48
49 uchar data disp_buff[32]; //32 个显示数据缓存
50 //数据格式为 第1级第1行高八位,低八位,第1级第2行高八位。。。。。。
51 uchar data disp_han; //目前显示到第几行
52
53
54 void T0_Set() /*定义中断方式,中断时间*/
55 {
C51 COMPILER V9.00 XQDZ 05/06/2012 14:23:38 PAGE 2
56 1 TMOD = 0x01; //定时0,工作在方式1
57 1 TH0 = (65536-1000)/256;
58 1 TL0 = (65536-1000)/256;
59 1 TR0 = 1; //启动计数
60 1 EA = 1; //开总中断
61 1 ET0 = 1; //开定时器0中断
62 1 return;
63 1 }
64
65 void delay_1ms(uchar x)
66 {
67 1 uchar j;
68 1 while(x--){
69 2 for(j=0;j<125;j++)
70 2 {;}
71 2 }
72 1 }
73
74
75 void main()
76 {
77 1 uchar i;
78 1 uint data_temp[2];
79 1 uint temp,temp1;
80 1 uchar hanzi;
81 1 uchar han;
82 1 uchar shift=1;
83 1 for(i=0;i<32;i++) disp_buff[i]=0xff;
84 1 T0_Set();
85 1 while(1){
86 2 for(hanzi=0;hanzi<4;hanzi++){ //最多显示多少个字
87 3 for(shift=0;shift<16;shift++){ //一个字移位16位
88 4 for(han=0;han<16;han++){ //一个字有16行数据
89 5 //取字库里面数据
90 5 data_temp[0]=ziku_table[(hanzi*32)+(han*2)+1]*0x100 + ziku_table[(hanzi*32)+(han*2)];
91 5 data_temp[1]=ziku_table[((hanzi+1)*32)+(han*2)+1]*0x100 + ziku_table[((hanzi+1)*32)+(han*2)];
92 5
93 5 //右往左移动
94 5 temp = data_temp[0];
95 5 temp1 = data_temp[1];
96 5 for(i=shift;i>0;i--){
97 6 temp = (temp>>1) ;
98 6 if((temp1&0x0001)!=0) temp = temp + 0x8000; //将TMEP1的最低位移位到TMEP的最高位
99 6 temp1 = (temp1>>1);
100 6 }
101 5 disp_buff[han*2+1]=temp/0x100;
102 5 disp_buff[han*2+0]=temp%0x100;
103 5 //------------------------------
104 5 }
105 4 delay_1ms(100); //移位速度
106 4 }
107 3 }
108 2 }
109 1 }
110
111
112
113
114 void SLED_Disp() interrupt 1 using 3
115 {
116 1 uchar i;
117 1 uchar data_buff;
C51 COMPILER V9.00 XQDZ 05/06/2012 14:23:38 PAGE 3
118 1 uchar temp;
119 1 uchar han;
120 1 TH0 = (65536-1000)/256;
121 1 TL0 = (65536-1000)/256;
122 1 Latch_port = 0; //HC595锁定输出,避免数据传输过程中,屏数据变化从而显示闪烁
123 1 CLK_port = 0;
124 1 han=disp_han;
125 1 //74HC595输出数据
126 1 temp = disp_han*2+1;
127 1 data_buff = disp_buff[temp];
128 1 for(i=0;i<8;i++){
129 2 if((data_buff&0x80)!=0) DA_in_port = 1;
130 2 else DA_in_port = 0;
131 2 CLK_port = 1;
132 2 CLK_port = 0;
133 2 data_buff <<= 1;
134 2 }
135 1 temp = disp_han*2;
136 1 data_buff = disp_buff[temp];
137 1 for(i=0;i<8;i++){
138 2 if((data_buff&0x80)!=0) DA_in_port = 1;
139 2 else DA_in_port = 0;
140 2 CLK_port = 1;
141 2 CLK_port = 0;
142 2 data_buff <<= 1;
143 2 }
144 1 //74HC138输出控制
145 1 EN_port = 1; //关屏显示,原理为使HC138输出全为1,从而三极管截止,点阵不显示
146 1 ABCD_port = (ABCD_port & 0x0f)|(han<<4); //HC138译码输出
147 1 Latch_port = 1; //允许HC595数据输出到Q1-Q8端口
148 1 EN_port = 0; //HC138输出有效,打开显示
149 1 Latch_port = 0; //锁定HC595数据输出
150 1
151 1 disp_han++; //显示下一行数据
152 1 if(disp_han>=16) disp_han=0;
153 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 445 ----
CONSTANT SIZE = 192 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 6
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 + -