⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcddriver.s

📁 采用Mega16+VS1011B+SD卡制作的Mp3
💻 S
📖 第 1 页 / 共 3 页
字号:
	.byte 'T,'x
	.byte 0,0
	.byte 0,127
	.byte 'H,'D
	.byte 'D,56
	.byte 0,0
	.byte 0,56
	.byte 'D,'D
	.byte 'D,32
	.byte 0,0
	.byte 0,56
	.byte 'D,'D
	.byte 'H,127
	.byte 0,0
	.byte 0,56
	.byte 'T,'T
	.byte 'T,24
	.byte 0,0
	.byte 0,8
	.byte 126,9
	.byte 1,2
	.byte 0,0
	.byte 0,24
	.byte 164,164
	.byte 164,124
	.byte 0,0
	.byte 0,127
	.byte 8,4
	.byte 4,'x
	.byte 0,0
	.byte 0,0
	.byte 'D,125
	.byte 64,0
	.byte 0,0
	.byte 0,64
	.byte 128,132
	.byte 125,0
	.byte 0,0
	.byte 0,127
	.byte 16,40
	.byte 'D,0
	.byte 0,0
	.byte 0,0
	.byte 'A,127
	.byte 64,0
	.byte 0,0
	.byte 0,124
	.byte 4,24
	.byte 4,'x
	.byte 0,0
	.byte 0,124
	.byte 8,4
	.byte 4,'x
	.byte 0,0
	.byte 0,56
	.byte 'D,'D
	.byte 'D,56
	.byte 0,0
	.byte 0,252
	.byte 36,36
	.byte 36,24
	.byte 0,0
	.byte 0,24
	.byte 36,36
	.byte 24,252
	.byte 0,0
	.byte 0,124
	.byte 8,4
	.byte 4,8
	.byte 0,0
	.byte 0,'H
	.byte 'T,'T
	.byte 'T,32
	.byte 0,0
	.byte 0,4
	.byte 63,'D
	.byte 64,32
	.byte 0,0
	.byte 0,60
	.byte 64,64
	.byte 32,124
	.byte 0,0
	.byte 0,28
	.byte 32,64
	.byte 32,28
	.byte 0,0
	.byte 0,60
	.byte 64,48
	.byte 64,60
	.byte 0,0
	.byte 0,'D
	.byte 40,16
	.byte 40,'D
	.byte 0,0
	.byte 0,28
	.byte 160,160
	.byte 160,124
	.byte 0,0
	.byte 0,'D
	.byte 'd,'T
	.byte 'L,'D
	.byte 0,0
	.byte 0,0
	.byte 8,54
	.byte 'A,0
	.byte 0,0
	.byte 0,0
	.byte 0,'w
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 'A,54
	.byte 8,0
	.byte 0,0
	.byte 0,2
	.byte 1,2
	.byte 4,2
	.byte 0,0
	.byte 0,255
	.byte 255,255
	.byte 255,255
	.byte 0,0
	.byte 60,60
	.byte 60,60
	.byte 60,60
	.byte 60,60
	.byte 0,0
	.byte 127,63
	.byte 31,15
	.byte 0,0
	.dbsym e Ascii _Ascii A[784:98:8]kc
_BattVolPic::
	.byte 255,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,129
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 129,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,129
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 129,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,129
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 129,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,129
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 129,255
	.byte 255,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,189
	.byte 189,255
	.dbsym e BattVolPic _BattVolPic A[240:240]kc
_BanHanzi::
	.byte 0,224
	.byte 16,8
	.byte 8,16
	.byte 224,0
	.byte 0,15
	.byte 16,32
	.byte 32,16
	.byte 15,0
	.dbsym e BanHanzi _BanHanzi A[16:1:16]kc
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
_Hanzi::
	.blkb 2
	.area idata
	.byte 16,96
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 1,134
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 96,4
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 'D,'d
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 'U,'N
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 'D,'d
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 196,4
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 4,0
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 4,4
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 252,3
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 64,48
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 15,0
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 0,127
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 0,63
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 64,64
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 'p,0
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 0,254
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 34,34
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 34,254
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 255,17
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 17,17
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 17,255
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 0,3
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 2,2
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 2,'C
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 32,24
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 7,1
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 1,'A
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 129,127
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.dbsym e Hanzi _Hanzi A[64:64]c
	.area text(rom, con, rel)
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\FontModel.h
	.dbfile D:\学习\AVRpro\Mega16程序\TestLCD\LCDDriver.C
	.dbfunc e Delay_1ms _Delay_1ms fV
;              j -> R16,R17
	.even
_Delay_1ms::
	.dbline -1
	.dbline 14
; //*********************************************
;  //液晶驱动.C
;  //MCU:AVR_MEGA16L ,晶振频率:8.0 MHz
;  //LCD:OCM12864-9 ,并口LCD
;  //制作人:平顶山工学院计算机系,郭猛
; //**********************************************
; # include "iom16v.h"
; # include "macros.h"
; # include "FontModel.h"
; # include "LCDFun.h"
; 
; //延时1ms
; void Delay_1ms(void)
; {	 
	.dbline 16
; 	 unsigned int j;
; 	 for(j=1;j<(unsigned int)(XTAL*143-2);j++) NOP();
	ldi R16,1
	ldi R17,0
	xjmp L5
L2:
	.dbline 16
	nop
L3:
	.dbline 16
	subi R16,255  ; offset = 1
	sbci R17,255
L5:
	.dbline 16
	ldi R24,1142
	ldi R25,4
	cp R16,R24
	cpc R17,R25
	brlo L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r j 16 i
	.dbend
	.dbfunc e Delay _Delay fV
;              i -> R10
;              j -> R20
;              n -> R12,R13
	.even
_Delay::
	xcall push_xgset303C
	movw R12,R16
	.dbline -1
	.dbline 21
; }
; /*******************************************延时子程序**********************************************/
; ///////////////////n的取值最好不要超过500!!!
; void Delay(unsigned int n)
; {
	.dbline 23
; 	uchar i,j;
; 	for(i=0;i<(uchar)(n/100);i++)
	clr R10
	xjmp L10
L7:
	.dbline 24
; 	  for(j=0;j<100;j++) Delay_1ms();   //100mS
	clr R20
	xjmp L14
L11:
	.dbline 24
	xcall _Delay_1ms
L12:
	.dbline 24
	inc R20
L14:
	.dbline 24
	cpi R20,100
	brlo L11
X1:
L8:
	.dbline 23
	inc R10
L10:
	.dbline 23
	ldi R18,100
	ldi R19,0
	movw R16,R12
	xcall div16u
	cp R10,R16
	brlo L7
X2:
	.dbline -2
L6:
	.dbline 0 ; func end
	xjmp pop_xgset303C
	.dbsym r i 10 c
	.dbsym r j 20 c
	.dbsym r n 12 i
	.dbend
	.dbfunc e LCD_AK_Control _LCD_AK_Control fV
;          OnOff -> R16
	.even
_LCD_AK_Control::
	.dbline -1
	.dbline 29
; }
; 
; //*************************************LCD背光控制***************************************
; void LCD_AK_Control(uchar OnOff)			//On0FF=1,背光显示开;
; {
	.dbline 30
;  	SETDDRC(LCD_AK);
	sbi 0x14,3
	.dbline 31
; 	if(OnOff) CLRPORTC(LCD_AK); else SETPORTC(LCD_AK);
	tst R16
	breq L16
X3:
	.dbline 31
	cbi 0x15,3
	xjmp L17
L16:
	.dbline 31
	sbi 0x15,3
L17:
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbsym r OnOff 16 c
	.dbend
	.dbfunc e check_busy _check_busy fV
;      read_data -> R16
	.even
_check_busy::
	.dbline -1
	.dbline 36
; }
; 
; //=====忙检测=================
; void check_busy(void)
; {
	.dbline 37
;   uchar read_data=0xFF;
	ldi R16,255
	.dbline 38
;   SETDDRD();//要输出LCD_DATA_OUT
	ldi R24,255
	out 0x11,R24
	.dbline 39
;   LCD_DATA_OUT=0xFF;
	out 0x12,R24
	.dbline 40
;   CLRPORTC(LCD_RS);
	cbi 0x15,0
	.dbline 41
;   SETPORTC(LCD_RW);       //读命令
	sbi 0x15,1
	.dbline 42
;   CLRPORTC(LCD_CS1);      //片使能
	cbi 0x15,5
	xjmp L20
L19:
	.dbline 44
;   while((read_data&0x80)==0x80)
;   {
	.dbline 45
;     SETPORTC(LCD_E);
	sbi 0x15,2
	.dbline 46
;     ;
	.dbline 47
; 	SETPORTD();
	ldi R24,255
	out 0x12,R24
	.dbline 48
; 	CLRDDRD();//要输入LCD_DATA_IN
	clr R2
	out 0x11,R2
	.dbline 49
; 	SETPORTD();
	out 0x12,R24
	.dbline 50
; 	;
	.dbline 51
;     read_data=LCD_DATA_IN;	
	in R16,0x10
	.dbline 52
;     CLRPORTC(LCD_E);
	cbi 0x15,2
	.dbline 53
;   }
L20:
	.dbline 43
	mov R24,R16
	andi R24,128
	cpi R24,128
	breq L19
X4:
	.dbline 54
;   CLRPORTC(LCD_E); 
	cbi 0x15,2
	.dbline 55
;   SETPORTC(LCD_CS1);      //片禁能 
	sbi 0x15,5
	.dbline -2
L18:
	.dbline 0 ; func end
	ret
	.dbsym r read_data 16 c
	.dbend
	.dbfunc e send_cmd _send_cmd fV
;            cmd -> R10
	.even
_send_cmd::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 59
; }
; //=====写命令到寄存器=========
; void send_cmd(uchar cmd)
; {
	.dbline 60
;   check_busy();
	xcall _check_busy
	.dbline 61
;   CLRPORTC(LCD_RS);
	cbi 0x15,0
	.dbline 62
;   CLRPORTC(LCD_RW);               //写命令
	cbi 0x15,1
	.dbline 63
;   CLRPORTC(LCD_CS1);              //片使能
	cbi 0x15,5
	.dbline 64
;   SETDDRD();					  //要输出LCD_DATA_OUT
	ldi R24,255
	out 0x11,R24
	.dbline 65
;   LCD_DATA_OUT=cmd;
	out 0x12,R10
	.dbline 66
;   SETPORTC(LCD_E);
	sbi 0x15,2
	.dbline 67
;   ;
	.dbline 68
;   CLRPORTC(LCD_E);
	cbi 0x15,2
	.dbline 69
;   ;
	.dbline 70
;   SETPORTC(LCD_CS1);              //片禁能 
	sbi 0x15,5
	.dbline -2
L22:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r cmd 10 c
	.dbend
	.dbfunc e send_dat _send_dat fV
;            dat -> R10
	.even
_send_dat::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 74
; }
; //=====写数据到DDRAM=========
; void send_dat(uchar dat)
; {
	.dbline 75
;   check_busy();
	xcall _check_busy
	.dbline 76
;   SETPORTC(LCD_RS);
	sbi 0x15,0
	.dbline 77
;   CLRPORTC(LCD_RW);               //写数据
	cbi 0x15,1
	.dbline 78
;   CLRPORTC(LCD_CS1);              //片使能
	cbi 0x15,5
	.dbline 79
;   SETDDRD();					  //要输出LCD_DATA_OUT
	ldi R24,255
	out 0x11,R24
	.dbline 80
;   LCD_DATA_OUT=dat;
	out 0x12,R10
	.dbline 81
;   SETPORTC(LCD_E);
	sbi 0x15,2
	.dbline 82
;   ;
	.dbline 83
;   CLRPORTC(LCD_E);
	cbi 0x15,2
	.dbline 84
;   ;
	.dbline 85
;   SETPORTC(LCD_CS1);              //片禁能 
	sbi 0x15,5
	.dbline -2
L23:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r dat 10 c
	.dbend
	.dbfunc e LCD_Ini _LCD_Ini fV
	.even
_LCD_Ini::
	.dbline -1
	.dbline 88
; }//=======初始化==============
; void LCD_Ini(void)
; {
	.dbline 90
;   //控制端口设置为输出:
;   DDRC=0xFF;;
	ldi R24,255
	out 0x14,R24
	.dbline 90
	.dbline 91
;   SETPORTC(LCD_RES);
	sbi 0x15,4
	.dbline 92
;   CLRPORTC(LCD_E);
	cbi 0x15,2
	.dbline 93
;   Delay(50);
	ldi R16,50
	ldi R17,0
	xcall _Delay
	.dbline 94
;   send_cmd(LCD_ADC_NORMAL);
	ldi R16,160
	xcall _send_cmd
	.dbline 95
;   send_cmd(LCD_COMMON_REVERSE);
	ldi R16,200
	xcall _send_cmd
	.dbline 96
;   send_cmd(LCD_BIAS_1DIV9);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -