📄 1616led.lst
字号:
C51 COMPILER V7.07 1616LED 06/03/2008 11:47:46 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE 1616LED
OBJECT MODULE PLACED IN 1616LED.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1616LED.C BROWSE DEBUG OBJECTEXTEND TABS(8)
stmt level source
1 #include"reg51.h"
2 typedef unsigned char byte;
3 typedef unsigned int word;
4 sbit datah595=P1^0;
5 sbit datal595=P1^1;
6 sbit clk595=P1^2;
7 sbit str595=P1^3;
8 sbit oe595=P1^4;
9 word data datah,datal; /*datah是行数据,datal是列选通*/
10 /*取模方式:阴码、逐列式、逆向、十六进制、C51格式自定义 (使用Pcto
-lcd2002软件)*/
11 byte code displaydata[]= /*在ROM中定义一个可变长度数组,供用户填充一定个数的字模*/
12 { /*可填充的最大字模数取决于您所选用的单片机ROM空间大小*/
13 0x00,0x00, /*表头*/
14
15 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
16 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
17 //在以下位置插入字模
18 0x14,0x20,0x24,0x10,0x44,0x4C,0x84,0x43,0x64,0x43,0x1C,0x2C,0x20,0x20,0x18,0x10,
19 0x0F,0x0C,0xE8,0x03,0x08,0x06,0x08,0x18,0x28,0x30,0x18,0x60,0x08,0x20,0x00,0x00,/*"欢",0*/
20
21
22
23 0x40,0x40,0x41,0x20,0xCE,0x1F,0x04,0x20,0x00,0x40,0xFC,0x47,0x04,0x42,0x02,0x41,
24 0x02,0x40,0xFC,0x5F,0x04,0x40,0x04,0x42,0x04,0x44,0xFC,0x43,0x00,0x40,0x00,0x00,/*"迎",1*/
25
26
27 0x80,0x00,0x40,0x20,0x30,0x38,0xFC,0x03,0x03,0x38,0x90,0x40,0x68,0x40,0x06,0x49,
28 0x04,0x52,0xF4,0x41,0x04,0x40,0x24,0x70,0x44,0x00,0x8C,0x09,0x04,0x30,0x00,0x00,/*"您",2*/
29
30 0x40,0x00,0x20,0x00,0xF0,0x7F,0x1C,0x00,0x07,0x40,0xF2,0x41,0x94,0x22,0x94,0x14,
31 0x94,0x0C,0xFF,0x13,0x94,0x10,0x94,0x30,0x94,0x20,0xF4,0x61,0x04,0x20,0x00,0x00,/*"使",3*/
32
33 0x00,0x80,0x00,0x40,0x00,0x30,0xFE,0x0F,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,
34 0xFE,0xFF,0x22,0x02,0x22,0x02,0x22,0x42,0x22,0x82,0xFE,0x7F,0x00,0x00,0x00,0x00,/*"用",4*/
35
36 0x08,0x20,0xF8,0x3F,0x88,0x20,0xC0,0x01,0x28,0x26,0x18,0x38,0x08,0x20,0x00,0x00,/*"K",0*/
37 0x08,0x20,0xF8,0x3F,0x08,0x21,0x08,0x01,0x08,0x01,0x08,0x01,0xF0,0x00,0x00,0x00,/*"P", 5*/
38
39 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
40 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"-",6*/
41
42 0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00,/*"5"*/
43 0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"1", 7*/
44
45
46 0x00,0x08,0x00,0x08,0xF8,0x0B,0x28,0x09,0x29,0x09,0x2E,0x09,0x2A,0x09,0xF8,0xFF,
47 0x28,0x09,0x2C,0x09,0x2B,0x09,0x2A,0x09,0xF8,0x0B,0x00,0x08,0x00,0x08,0x00,0x00,/*"单",10*/
48
49 0x00,0x80,0x00,0x40,0x00,0x30,0xFE,0x0F,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,
50 0x10,0x01,0x1F,0x01,0x10,0x01,0x10,0xFF,0x10,0x00,0x18,0x00,0x10,0x00,0x00,0x00,/*"片",11*/
51
52 0x08,0x04,0x08,0x03,0xC8,0x00,0xFF,0xFF,0x48,0x00,0x88,0x41,0x08,0x30,0x00,0x0C,
53 0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x3F,0x00,0x40,0x00,0x78,0x00,0x00,/*"机",12*/
54
C51 COMPILER V7.07 1616LED 06/03/2008 11:47:46 PAGE 2
55
56 0x40,0x00,0x42,0x40,0x42,0x20,0x42,0x10,0x42,0x0C,0xFE,0x03,0x42,0x00,0x42,0x00,
57 0x42,0x00,0x42,0x00,0xFE,0x7F,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x00,0x00,/*"开",0*/
58
59 0x00,0x40,0x10,0x20,0x3E,0x10,0x10,0x88,0x10,0x87,0xF0,0x41,0x9F,0x46,0x90,0x28,
60 0x90,0x10,0x92,0x28,0x94,0x27,0x1C,0x40,0x10,0xC0,0x10,0x40,0x10,0x00,0x00,0x00,/*"发",1*/
61
62 0x10,0x04,0x10,0x03,0xD0,0x00,0xFF,0x7F,0x50,0x00,0x90,0x11,0x00,0x0E,0xFE,0x41,
63 0x62,0x20,0xA2,0x11,0x22,0x0A,0x21,0x0E,0xA1,0x31,0x61,0x60,0x00,0x20,0x00,0x00,/*"板",2*/
64
65
66
67 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
68 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",20*/
69 //至此字模插入结束
70 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
71 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
72 };
73 byte *p=&displaydata[0]; //定义指针p指向字模表的第一个汉字
74 byte *q=&displaydata[32]; //定义指针q指向字模表的第二个汉字,每个汉字含有32个字节
75
76 void delay(word a)
77 {
78 1 word b;
79 1 for(b=0;b<a;b++);
80 1 }
81
82 void senddata(word datah,datal) //向行和列的4个595同时发送数据,显示其中的一列数据
83 {
84 1 byte i=0;
85 1 word m,n;
86 1 oe595=0;
87 1 str595=0;
88 1 for(;i<16;i++) //行和列各有两片595驱动,所以行和列分别需要连续送两个字节
-数据
89 1 {
90 2 clk595=0;
91 2 m=datah; //行为高电平驱动
92 2 n=~datal; //列为低电平驱动
93 2 m&=0x8000;
94 2 n&=0x8000;
95 2 datah595=(bit)m; //在每个clk周期,同时送出行和列的1bit串行数据
96 2 datal595=(bit)n;
97 2 datah<<=1;
98 2 datal<<=1;
99 2 clk595=1;
100 2 }
101 1 str595=1; //一列数据送完,锁存到输出端进行显示
102 1 str595=0;
103 1 }
104
105 void horizontal(byte time,word counth) // ①水平移动子程序
106 {
107 1 byte x,y;
108 1 word j,k,z;
109 1 for(z=0;z<counth;z++) //显示字模表
-中的所有汉字(包括有用字模前后的的清屏数据)
110 1 {
111 2 for(y=0;y<time;y++) //该屏数据重复显示time次
-后刷新,实际上这是水平移动的速度
112 2 {
113 3 datal=0x0001;
C51 COMPILER V7.07 1616LED 06/03/2008 11:47:46 PAGE 3
114 3 for(x=0;x<16;x++) //发送一整屏数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -