📄 ex8-9.lst
字号:
C51 COMPILER V8.18 EX8_9 11/30/2009 12:58:45 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE EX8_9
OBJECT MODULE PLACED IN ex8-9.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ex8-9.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"stc12c5a.h"
2 sbit BLED=P2^2; //背光控制
3 void spi_init(void); //SPI初始化子程序
4 void delay(unsigned int us10); //延时子程序
5 void sendspi(unsigned char spidata,unsigned char read,unsigned char dat); //显示数据发送子程序
6 void lcd_init_usual(void); //液晶初始化子程序
7 void set_position(unsigned char position); //确定光标位置子程序
8 void data_write(unsigned char data1); //显示单个字符子程序
9 void chinese_series(unsigned char *series); //显示汉字字符串子程序
10 void main (void)
11 {
12 1 spi_init();
13 1 lcd_init_usual();
14 1 BLED=0;
15 1 set_position(0x82);
16 1 chinese_series("单片机");
17 1 data_write('0');
18 1 data_write('1');
19 1 while(1);
20 1 }
21 void spi_init(void) //SPI初始化子程序
22 {
23 1 AUXR1=0x20; //将SPI转移到P4口 SPI初始化
24 1 SPCTL=0xd3; //SPI使能,主机模式,/SS无关,先发高(很关键很重要)
25 1 SPSTAT=0xC0; //清传输完成标志和写冲突标志
26 1 }
27 void delay(unsigned int us10) //延时子程序
28 {
29 1 while(us10--);
30 1 }
31 void sendspi(unsigned char spidata,unsigned char read,unsigned char dat) //显示数据发送子程序
32 {
33 1 unsigned char cmd,dat1,dat2,spi1_status=0;
34 1 cmd=(0xf8|read|(dat<<1));
35 1 SPDAT=cmd;
36 1 while(spi1_status==0) //等起始命令传输完毕
37 1 {
38 2 spi1_status=SPSTAT;
39 2 spi1_status=spi1_status&0x80;
40 2 }
41 1 SPSTAT=0xC0; //写1清SPIF标志位
42 1 spi1_status=0;
43 1 dat1=spidata&0xf0;
44 1 SPDAT=dat1;
45 1 while(spi1_status==0) //等高4位数据传输完毕
46 1 {
47 2 spi1_status=SPSTAT;
48 2 spi1_status=spi1_status&0x80;
49 2 }
50 1 SPSTAT=0xC0; //写1清SPIF标志位
51 1 spi1_status=0;
52 1 dat2=(spidata<<4)&0xf0;
53 1 SPDAT=dat2;
54 1 while(spi1_status==0) //等低4位传输完毕
55 1 {
C51 COMPILER V8.18 EX8_9 11/30/2009 12:58:45 PAGE 2
56 2 spi1_status=SPSTAT;
57 2 spi1_status=spi1_status&0x80;
58 2 }
59 1 SPSTAT=0xC0; //写1清SPIF标志位
60 1 }
61 void lcd_init_usual(void) //液晶初始化子程序
62 {
63 1 sendspi(0x30,0,0); //基本指令集
64 1 sendspi(0x01,0,0); //清显示,地址复位
65 1 delay(2000);
66 1 sendspi(0x0e,0,0); //整体显示,开游标,关位置
67 1 sendspi(0x06,0,0); //游标方向及移位
68 1 }
69 void set_position(unsigned char position) //确定光标位置子程序
70 {
71 1 sendspi(position,0,0);
72 1 }
73 void data_write(unsigned char data1) //显示单个字符子程序
74 {
75 1 sendspi(data1,0,1);
76 1 }
77 void chinese_series(unsigned char *series) //显示汉字字符串子程序
78 {
79 1 for(series;*series!=0;series++)
80 1 data_write(*series);
81 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 200 ----
CONSTANT SIZE = 7 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
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 + -