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

📄 18lcd.lst

📁 atmega128 adc LCD
💻 LST
📖 第 1 页 / 共 3 页
字号:
__text_start:
__start:
    03E3 EFCF      LDI	R28,0xFF
    03E4 E0D4      LDI	R29,4
    03E5 BFCD      OUT	0x3D,R28
    03E6 BFDE      OUT	0x3E,R29
    03E7 51C0      SUBI	R28,0x10
    03E8 40D0      SBCI	R29,0
    03E9 EA0A      LDI	R16,0xAA
    03EA 8308      STD	Y+0,R16
    03EB 2400      CLR	R0
    03EC E0E6      LDI	R30,6
    03ED E0F1      LDI	R31,1
    03EE E011      LDI	R17,1
    03EF 30E6      CPI	R30,6
    03F0 07F1      CPC	R31,R17
    03F1 F011      BEQ	0x03F4
    03F2 9201      ST	R0,Z+
    03F3 CFFB      RJMP	0x03EF
    03F4 8300      STD	Z+0,R16
    03F5 ECE0      LDI	R30,0xC0
    03F6 E0F7      LDI	R31,7
    03F7 E0A0      LDI	R26,0
    03F8 E0B1      LDI	R27,1
    03F9 E017      LDI	R17,7
    03FA 3CE6      CPI	R30,0xC6
    03FB 07F1      CPC	R31,R17
    03FC F021      BEQ	0x0401
    03FD 95C8      LPM
    03FE 9631      ADIW	R30,1
    03FF 920D      ST	R0,X+
    0400 CFF9      RJMP	0x03FA
    0401 940E0425  CALL	_main
_exit:
    0403 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\main.c
(0001) /*
(0002) 实验十八:
(0003) 	LCD12864液晶屏显示实验。
(0004) 	1、LCD12864显示实验。显示AVR开发网及网址信息。
(0005) 	2、内部1 M晶振,程序采用单任务方式,软件延时。
(0006) 	3、进行此实验需要接上外置LCD12864液晶显示屏。
(0007) 	4、RW1用于调节显示屏的对比度。
(0008) 
(0009) 	AVR  mega128学习板
(0010) 	www.iccavr.com 阿发
(0011) 	16:22 2007-10-18
(0012) */
(0013) 
(0014) #include <iom128v.h>
(0015) #include "font.h"
(0016) #include "lcd12864.h"
(0017) 
(0018) /*IO口初始化函数*/
(0019) void io_init(void) {
(0020) 
(0021) 	DDRA = 0xFF;										/*方向输出*/
_io_init:
    0404 EF8F      LDI	R24,0xFF
    0405 BB8A      OUT	0x1A,R24
(0022) 	PORTA = 0xFF;										/*高电平*/
    0406 BB8B      OUT	0x1B,R24
(0023) 	DDRB = 0x00;										/*方向输入*/
    0407 2422      CLR	R2
    0408 BA27      OUT	0x17,R2
(0024) 	PORTB = 0xFF;										/*打开上拉*/
    0409 BB88      OUT	0x18,R24
(0025) 	DDRC = 0xFF;										/*不用的IO口建议设置为输入带上拉*/
    040A BB84      OUT	0x14,R24
(0026) 	PORTC = 0x00;
    040B BA25      OUT	0x15,R2
(0027) 	DDRD = 0x00;
    040C BA21      OUT	0x11,R2
(0028) 	PORTD = 0xFF;
    040D BB82      OUT	0x12,R24
(0029) 	DDRE = 0x00;
    040E B822      OUT	0x02,R2
(0030) 	PORTE = 0xFF;
    040F B983      OUT	0x03,R24
(0031) 	DDRF = 0x00;
    0410 E6E1      LDI	R30,0x61
    0411 E0F0      LDI	R31,0
    0412 8220      STD	Z+0,R2
(0032) 	PORTF = 0xFF;
    0413 E6E2      LDI	R30,0x62
    0414 8380      STD	Z+0,R24
(0033) 	DDRG = 0x00;
    0415 E6E4      LDI	R30,0x64
    0416 8220      STD	Z+0,R2
(0034) 	PORTG = 0xFF;
    0417 E6E5      LDI	R30,0x65
    0418 8380      STD	Z+0,R24
    0419 9508      RET
(0035) }
(0036) unsigned int get_ad(void) {
(0037) 
(0038) 	unsigned int i;
(0039) 											
(0040) 	
(0041) 	ADMUX = (1 << REFS0);								/*基准AVCC、通道0*/
_get_ad:
  i                    --> R16
    041A E480      LDI	R24,0x40
    041B B987      OUT	0x07,R24
(0042) 	ADCSRA = (1 << ADEN) | (1 << ADSC)					/*使能、开启*/
    041C EC83      LDI	R24,0xC3
    041D B986      OUT	0x06,R24
(0043) 			| (1 << ADPS1) | (1 << ADPS0);				/*8分频*/
(0044) 	while(!(ADCSRA & (1 << ADIF)));						/*等待采样结束*/
    041E 9B34      SBIS	0x06,4
    041F CFFE      RJMP	0x041E
(0045) 	
(0046) 	   i = ADC;	                                           /*读取AD结果*/
    0420 B104      IN	R16,0x04
    0421 B115      IN	R17,0x05
(0047) 	ADCSRA &= ~(1 << ADIF);								/*清标志*/
    0422 9834      CBI	0x06,4
(0048) 	ADCSRA &= ~(1 << ADEN);								/*关闭转换*/
    0423 9837      CBI	0x06,7
(0049)    
(0050) 	return i;										/*返回结果*/
    0424 9508      RET
_main:
  t                    --> R20
    0425 9722      SBIW	R28,2
(0051)      }
(0052) void main(void) {
(0053) int t;
(0054) 	io_init();											/*IO口初始化*/
    0426 DFDD      RCALL	_io_init
(0055) 	disp_init();										/*LCD初始化*/
    0427 940E06AC  CALL	_disp_init
(0056) 	disp_clear(0, 128, 0);								/*清除四行显示*/
    0429 2422      CLR	R2
    042A 8228      STD	Y+0,R2
    042B E820      LDI	R18,0x80
    042C 2700      CLR	R16
    042D 940E0570  CALL	_disp_clear
(0057) 	disp_clear(0, 128, 2);
    042F E082      LDI	R24,2
    0430 8388      STD	Y+0,R24
    0431 E820      LDI	R18,0x80
    0432 2700      CLR	R16
    0433 940E0570  CALL	_disp_clear
(0058) 	disp_clear(0, 128, 4);
    0435 E084      LDI	R24,4
    0436 8388      STD	Y+0,R24
    0437 E820      LDI	R18,0x80
    0438 2700      CLR	R16
    0439 940E0570  CALL	_disp_clear
(0059) 	disp_clear(0, 128, 6);
    043B E086      LDI	R24,6
    043C 8388      STD	Y+0,R24
    043D E820      LDI	R18,0x80
    043E 2700      CLR	R16
    043F 940E0570  CALL	_disp_clear
(0060) 	
(0061) 	
(0062) 	disp_myself(0,0,124);
    0441 E78C      LDI	R24,0x7C
    0442 8388      STD	Y+0,R24
    0443 2722      CLR	R18
    0444 2700      CLR	R16
    0445 940E06BC  CALL	_disp_myself
(0063) 	disp_myself(0,1,124);
    0447 E78C      LDI	R24,0x7C
    0448 8388      STD	Y+0,R24
    0449 E021      LDI	R18,1
    044A 2700      CLR	R16
    044B 940E06BC  CALL	_disp_myself
(0064) 	disp_myself(0,2,124);
    044D E78C      LDI	R24,0x7C
    044E 8388      STD	Y+0,R24
    044F E022      LDI	R18,2
    0450 2700      CLR	R16
    0451 940E06BC  CALL	_disp_myself
(0065) 	disp_myself(0,3,124);
    0453 E78C      LDI	R24,0x7C
    0454 8388      STD	Y+0,R24
    0455 E023      LDI	R18,3
    0456 2700      CLR	R16
    0457 940E06BC  CALL	_disp_myself
(0066) 	disp_myself(0,4,124);
    0459 E78C      LDI	R24,0x7C
    045A 8388      STD	Y+0,R24
    045B E024      LDI	R18,4
    045C 2700      CLR	R16
    045D 940E06BC  CALL	_disp_myself
(0067) 	disp_myself(0,5,124);
    045F E78C      LDI	R24,0x7C
    0460 8388      STD	Y+0,R24
    0461 E025      LDI	R18,5
    0462 2700      CLR	R16
    0463 940E06BC  CALL	_disp_myself
(0068) 	disp_myself(0,6,124);
    0465 E78C      LDI	R24,0x7C
    0466 8388      STD	Y+0,R24
    0467 E026      LDI	R18,6
    0468 2700      CLR	R16
    0469 940E06BC  CALL	_disp_myself
(0069) 	disp_myself(0,7,124);
    046B E78C      LDI	R24,0x7C
    046C 8388      STD	Y+0,R24
    046D E027      LDI	R18,7
    046E 2700      CLR	R16
    046F 940E06BC  CALL	_disp_myself
(0070) 	disp_myself(8,0,124);
    0471 E78C      LDI	R24,0x7C
    0472 8388      STD	Y+0,R24
    0473 2722      CLR	R18
    0474 E008      LDI	R16,0x8
    0475 940E06BC  CALL	_disp_myself
(0071) 	disp_myself(8,1,124);
    0477 E78C      LDI	R24,0x7C
    0478 8388      STD	Y+0,R24
    0479 E021      LDI	R18,1
    047A E008      LDI	R16,0x8
    047B 940E06BC  CALL	_disp_myself
(0072) 	disp_myself(8,2,124);
    047D E78C      LDI	R24,0x7C
    047E 8388      STD	Y+0,R24
    047F E022      LDI	R18,2
    0480 E008      LDI	R16,0x8
    0481 940E06BC  CALL	_disp_myself
(0073) 	disp_myself(8,3,124);
    0483 E78C      LDI	R24,0x7C
    0484 8388      STD	Y+0,R24
    0485 E023      LDI	R18,3
    0486 E008      LDI	R16,0x8
    0487 940E06BC  CALL	_disp_myself
(0074) 	disp_myself(8,4,124);
    0489 E78C      LDI	R24,0x7C
    048A 8388      STD	Y+0,R24
    048B E024      LDI	R18,4
    048C E008      LDI	R16,0x8
    048D 940E06BC  CALL	_disp_myself
(0075) 	disp_myself(8,5,124);
    048F E78C      LDI	R24,0x7C
    0490 8388      STD	Y+0,R24
    0491 E025      LDI	R18,5
    0492 E008      LDI	R16,0x8
    0493 940E06BC  CALL	_disp_myself
(0076) 	disp_myself(8,6,124);
    0495 E78C      LDI	R24,0x7C
    0496 8388      STD	Y+0,R24
    0497 E026      LDI	R18,6
    0498 E008      LDI	R16,0x8
    0499 940E06BC  CALL	_disp_myself
(0077) 	disp_myself(8,7,124);
    049B E78C      LDI	R24,0x7C
    049C 8388      STD	Y+0,R24
    049D E027      LDI	R18,7
    049E E008      LDI	R16,0x8
    049F 940E06BC  CALL	_disp_myself
(0078) 	disp_myself(112,0,124);
    04A1 E78C      LDI	R24,0x7C
    04A2 8388      STD	Y+0,R24
    04A3 2722      CLR	R18
    04A4 E700      LDI	R16,0x70
    04A5 940E06BC  CALL	_disp_myself
(0079) 	disp_myself(112,1,124);
    04A7 E78C      LDI	R24,0x7C
    04A8 8388      STD	Y+0,R24
    04A9 E021      LDI	R18,1
    04AA E700      LDI	R16,0x70
    04AB 940E06BC  CALL	_disp_myself
(0080) 	disp_myself(112,2,124);
    04AD E78C      LDI	R24,0x7C
    04AE 8388      STD	Y+0,R24
    04AF E022      LDI	R18,2
    04B0 E700      LDI	R16,0x70
    04B1 940E06BC  CALL	_disp_myself
(0081) 	disp_myself(112,3,124);
    04B3 E78C      LDI	R24,0x7C
    04B4 8388      STD	Y+0,R24
    04B5 E023      LDI	R18,3
    04B6 E700      LDI	R16,0x70
    04B7 940E06BC  CALL	_disp_myself
(0082) 	disp_myself(112,4,124);
    04B9 E78C      LDI	R24,0x7C
    04BA 8388      STD	Y+0,R24
    04BB E024      LDI	R18,4
    04BC E700      LDI	R16,0x70
    04BD 940E06BC  CALL	_disp_myself
(0083) 	disp_myself(112,5,124);
    04BF E78C      LDI	R24,0x7C
    04C0 8388      STD	Y+0,R24
    04C1 E025      LDI	R18,5
    04C2 E700      LDI	R16,0x70
    04C3 940E06BC  CALL	_disp_myself
(0084) 	disp_myself(112,6,124);
    04C5 E78C      LDI	R24,0x7C
    04C6 8388      STD	Y+0,R24
    04C7 E026      LDI	R18,6
    04C8 E700      LDI	R16,0x70
    04C9 940E06BC  CALL	_disp_myself
(0085) 	disp_myself(112,7,124);
    04CB E78C      LDI	R24,0x7C
    04CC 8388      STD	Y+0,R24
    04CD E027      LDI	R18,7
    04CE E700      LDI	R16,0x70
    04CF 940E06BC  CALL	_disp_myself
(0086) 	disp_myself(120,0,124);
    04D1 E78C      LDI	R24,0x7C
    04D2 8388      STD	Y+0,R24
    04D3 2722      CLR	R18
    04D4 E708      LDI	R16,0x78
    04D5 940E06BC  CALL	_disp_myself
(0087) 	disp_myself(120,1,124);
    04D7 E78C      LDI	R24,0x7C
    04D8 8388      STD	Y+0,R24
    04D9 E021      LDI	R18,1
    04DA E708      LDI	R16,0x78
    04DB 940E06BC  CALL	_disp_myself
(0088) 	disp_myself(120,2,124);
    04DD E78C      LDI	R24,0x7C
    04DE 8388      STD	Y+0,R24
    04DF E022      LDI	R18,2
    04E0 E708      LDI	R16,0x78
    04E1 940E06BC  CALL	_disp_myself
(0089) 	disp_myself(120,3,124);
    04E3 E78C      LDI	R24,0x7C
    04E4 8388      STD	Y+0,R24
    04E5 E023      LDI	R18,3
    04E6 E708      LDI	R16,0x78
    04E7 940E06BC  CALL	_disp_myself
(0090) 	disp_myself(120,4,124);
    04E9 E78C      LDI	R24,0x7C
    04EA 8388      STD	Y+0,R24
    04EB E024      LDI	R18,4
    04EC E708      LDI	R16,0x78
    04ED 940E06BC  CALL	_disp_myself
(0091) 	disp_myself(120,5,124);
    04EF E78C      LDI	R24,0x7C
    04F0 8388      STD	Y+0,R24
    04F1 E025      LDI	R18,5
    04F2 E708      LDI	R16,0x78
    04F3 940E06BC  CALL	_disp_myself
(0092) 	disp_myself(120,6,124);
    04F5 E78C      LDI	R24,0x7C
    04F6 8388      STD	Y+0,R24
    04F7 E026      LDI	R18,6
    04F8 E708      LDI	R16,0x78
    04F9 940E06BC  CALL	_disp_myself
(0093) 	disp_myself(120,7,124);
    04FB E78C      LDI	R24,0x7C
    04FC 8388      STD	Y+0,R24
    04FD E027      LDI	R18,7
    04FE E708      LDI	R16,0x78
    04FF 940E06BC  CALL	_disp_myself
(0094) 	disp_myself(0,5,123);
    0501 E78B      LDI	R24,0x7B
    0502 8388      STD	Y+0,R24
    0503 E025      LDI	R18,5
    0504 2700      CLR	R16
    0505 940E06BC  CALL	_disp_myself
(0095) 	
(0096) 	t=get_ad();
    0507 DF12      RCALL	_get_ad
    0508 01A8      MOVW	R20,R16
(0097)     disp_to_bcd(t);
    0509 940E06F8  CALL	_disp_to_bcd
(0098) 	 
(0099) 	
(0100) 
(0101)     disp_char_str(58, 0, "m");				/*显示网址信息*/
    050B E080      LDI	R24,0
    050C E091      LDI	R25,1
    050D 8399      STD	Y+1,R25
    050E 8388      STD	Y+0,R24
    050F 2722      CLR	R18
    0510 E30A      LDI	R16,0x3A
    0511 940E0691  CALL	_disp_char_str
(0102)     while (1);
    0513 CFFF      RJMP	0x0513
    0514 9622      ADIW	R28,2
    0515 9508      RET
FILE: C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\lcd12864.c
(0001) /*
(0002) 	LCD12864液晶屏驱动模块
(0003) 	1、可直接嵌入到项目中使用
(0004) 	2、晶振频率:1M
(0005) 	3、如晶振提高低层驱动延时要作相应修改
(0006) 
(0007) 	AVR_AFA
(0008) 	www.iccavr.com
(0009) */
(0010) 
(0011) #include <iom128v.h>
(0012) #include "font.h"
(0013) 
(0014) #define RS_CLR	PORTC &= ~(1 << PC2)		/*命令或数据选择*/
(0015) #define RS_SET	PORTC |= (1 << PC2)			/*RS = 1命令,RS = 0数据*/
(0016) 
(0017) #define RW_CLR	PORTC &= ~(1 << PC3)		/*读取或写入选择*/
(0018) #define RW_SET	PORTC |= (1 << PC3)			/*RW = 1读,RW = 0写*/
(0019) 
(0020) #define EN_CLR	PORTC &= ~(1 << PC4)		/*读写使能信号*/
(0021) #define EN_SET	PORTC |= (1 << PC4)			/*下降沿有效*/
(0022) 
(0023) #define RST_CLR	PORTC &= ~(1 << PC5)		/*芯片复位脚*/
(0024) #define RST_SET	PORTC |= (1 << PC5)			/*高电平复位*/
(0025) 
(0026) #define CSA_CLR	PORTC &= ~(1 << PC7)		/*左半屏片选*/
(0027) #define CSA_SET	PORTC |= (1 << PC7)			/*高电平选中*/
(0028) 
(0029) #define CSB_CLR	PORTC &= ~(1 << PC6)		/*右半屏片选*/
(0030) #define CSB_SET	PORTC |= (1 << PC6)			/*高电平选中*/
(0031) 
(0032) /*延时函数*/
(0033) void delay_us(unsigned int n) {
(0034) 
(0035) 	if (n == 0) {
_delay_us:
  n                    --> R16
    0516 3000      CPI	R16,0
    0517 0701      CPC	R16,R17
    0518 F409      BNE	0x051A
(0036) 		return ;
    0519 C006      RJMP	0x0520
(0037) 		}
(0038) 	while (--n);
    051A 01C8      MOVW	R24,R16
    051B 9701      SBIW	R24,1
    051C 018C      MOVW	R16,R24
    051D 3000      CPI	R16,0
    051E 0701      CPC	R16,R17
    051F F7D1      BNE	0x051A
    0520 9508      RET
_delay_ms:
  a                    --> R20
  b                    --> R22
  i                    --> R16
    0521 940E07CE  CALL	push_gset2
(0039) }
(0040) 
(0041) /*延时函数*/
(0042) void delay_ms(unsigned char i) {
(0043) 
(0044) 	unsigned char a, b;
(0045) 	for (a = 1; a < i; a++) {
    0523 E041      LDI	R20,1
    0524 C006      RJMP	0x052B
(0046) 		for (b = 1; b; b++) {
    0525 E061      LDI	R22,1
    0526 C001      RJMP	0x0528
    0527 9563      INC	R22
    0528 2366      TST	R22
    0529 F7E9      BNE	0x0527
    052A 9543      INC	R20
    052B 1740      CP	R20,R16
    052C F3C0      BCS	0x0525
    052D 940E07BC  CALL	pop_gset2
    052F 9508      RET
_LCD0_write_com:
  com                  --> R20
    0530 940E07D0  CALL	push_gset1
    0532 2F40      MOV	R20,R16
(0047) 			;
(0048) 			}
(0049) 		}
(0050) }
(0051) 
(0052) /*显示屏命令写入函数前半屏*/
(0053) void LCD0_write_com(unsigned char com) {
(0054) 	
(0055) 	RS_CLR;
    0533 98AA      CBI	0x15,2
(0056) 	RW_CLR;
    0534 98AB      CBI	0x15,3
(0057) 	CSA_SET;
    0535 9AAF      SBI	0x15,7
(0058) 	CSB_CLR;
    0536 98AE      CBI	0x15,6
(0059) 	EN_SET;
    0537 9AAC      SBI	0x15,4
(0060) 	PORTA = com;
    0538 BB4B      OUT	0x1B,R20
(0061) 	delay_us(1);
    0539 E001      LDI	R16,1
    053A E010      LDI	R17,0
    053B DFDA      RCALL	_delay_us
(0062) 	EN_CLR;
    053C 98AC      CBI	0x15,4
    053D 940E07D3  CALL	pop_gset1
    053F 9508      RET
_LCD1_write_com:
  com                  --> R20
    0540 940E07D0  CALL	push_gset1
    0542 2F40      MOV	R20,R16
(0063) }
(0064) 
(0065) /*显示屏命令写入函数后半屏*/
(0066) void LCD1_write_com(unsigned char com) {
(0067) 	
(0068) 	RS_CLR;
    0543 98AA      CBI	0x15,2
(0069) 	RW_CLR;
    0544 98AB      CBI	0x15,3
(0070) 	CSA_CLR;
    0545 98AF      CBI	0x15,7

⌨️ 快捷键说明

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