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

📄 lcd.prep

📁 e1c0df5d-c8bc-48a5-bc02-a2b7c51c0dbf是做mp3的源代码
💻 PREP
📖 第 1 页 / 共 2 页
字号:
# 1 "<stdin>"# 1 "<built-in>"# 1 "<command line>"# 1 "<stdin>"# 45 "<stdin>"# 1 "lcd.h" 1# 40 "lcd.h"# 1 "const.h" 1# 41 "lcd.h" 2# 46 "<stdin>" 2        .comm lcd_x,1        .comm lcd_y,1        .comm bkg_color,1        .comm text_color,1        .comm setcolmark,1        .text.extern vs1001_init_io.extern delay10;************************************************wrtab1: clr r24wrl1: rcall lcd_wrdata                subi r24,lo8(-2)                cpi r24,8                brne wril2                inc r24wril2: cpi r24,0x11                brne wrl1                ret;************************************************;LCD control routine;void lcd_init(u08 mode)        .global lcd_initlcd_init:                clr r24                sts bkg_color,r24                dec r24                sts text_color,r24                sbi PORTB,PB4 ;deselect Display                sbi DDRB,PB4 ;                call vs1001_init_io ;init SPI; According to the datasheet for S1D15G17 controllers CS must go high between command & data bytes; so PB4 handling has been moved to SPI routines. If the Philips / other Epson controller doesn`t work; with this setting, remove comment marks and drop me a mail at sebi@justmail.de;; cbi PORTB,PB4 ;select Display                ldi r24,0x01 ;Reset                rcall lcd_wrcmd                call delay100                ldi r24,0xB6 ; Display control                rcall lcd_wrcmd                ldi r24,0x7f ; default values according to datasheet                rcall lcd_wrdata ; these values set N line inversion, bias rate,                ldi r24,0x84 ; no. of lines (arg. 5) and some other parameters                rcall lcd_wrdata                ldi r24,0x8c                rcall lcd_wrdata                ldi r24,0x86                rcall lcd_wrdata                ldi r24,0x84; the gamma table is initialized after hardware reset; if that isn`t reliable,; uncomment these lines although I had no problems; values are defaults from datasheet;; ldi r24,0xB4 ;gray scale table; rcall lcd_wrcmd; ldi r24,0x01; rcall lcd_wrdata; ldi r24,10; rcall lcd_wrdata; ldi r24,18; rcall lcd_wrdata; ldi r24,26; rcall lcd_wrdata; ldi r24,35; rcall lcd_wrdata; ldi r24,43; rcall lcd_wrdata; ldi r24,51; rcall lcd_wrdata; ldi r24,60; rcall lcd_wrdata; ldi r24,68; rcall lcd_wrdata; ldi r24,76; rcall lcd_wrdata; ldi r24,85; rcall lcd_wrdata; ldi r24,93; rcall lcd_wrdata; ldi r24,101; rcall lcd_wrdata; ldi r24,110; rcall lcd_wrdata; ldi r24,118; rcall lcd_wrdata; ldi r24,126; rcall lcd_wrdata                ldi r24,0xBB ; behaviour of MADCTL values                rcall lcd_wrcmd                ldi r24,0 ; set to standard mode (no inversion)                rcall lcd_wrdata                ldi r24,0xBE ;power control                rcall lcd_wrcmd                ldi r24,0x54 ;boosting circuit freq., high output capacity for Vcout                rcall lcd_wrdata                ldi r24,0x02                rcall lcd_wrdata                ldi r24,0xBA ;voltage control                rcall lcd_wrcmd                ldi r24,0x60 ;voltage for full mode                rcall lcd_wrdata                ldi r24,0x02 ;voltage for partial mode                rcall lcd_wrdata                ldi r24,63                rcall lcd_contrast                ldi r24,0xb7                rcall lcd_wrcmd                clr r22                clr r24tempset: rcall lcd_wrdata                inc r22                cpi r22,0x0f                brne tempset                ldi r24,0x20 ; Non Invert mode                rcall lcd_wrcmd                ldi r24,0x13 ; normal mode                rcall lcd_wrcmd# 208 "<stdin>"                ldi r24,0x36 ;Memory data acces control                rcall lcd_wrcmd                ldi r24,0x00 ;X Mirror and BGR format (needed)                rcall lcd_wrdata# 224 "<stdin>"                ldi r24,0x3A ;Colour mode                rcall lcd_wrcmd                ldi r24,0x02 ;256 colour mode select                rcall lcd_wrdata# 253 "<stdin>"; the new epson controller is very picky about too early sleepout / dispon commands!; display works, but has way too high contrast setting and random colors                ldi r24,0x11 ;Sleep_out                rcall lcd_wrcmd                call delay100                ldi r24,0x29 ;display on                rcall lcd_wrcmd                ;fall trough;************************************************;clear LCD;void lcd_clrscr(void)        .global lcd_clrscrlcd_clrscr: cli                sts lcd_x,r1                sts lcd_y,r1; cbi PORTB,PB4 ;select Display                ser r24                ser r22                ldi r20,0x80                mov r18,r20                rcall lcd_window1                ldi r24,0x2C ;write memory                rcall lcd_wrcmd                ldi r31, 0x42                ldi r30, 0x04                lds r24,bkg_colorLCD_CLEAR_1: rcall lcd_wrdata                sbiw r30,1                brne LCD_CLEAR_1; sbi PORTB,PB4 ;deselect Display                sei                ret;************************************************;void lcd_off(void)        .global lcd_offlcd_off: rcall lcd_clrscr; cbi PORTB,PB4 ;select Display                ldi r24,0x10 ;Sleep_IN                rcall lcd_wrcmd; sbi PORTB,PB4 ;deselect Display                ret;************************************************;void lcd_color(u08 bkg, u08 text)        .global lcd_colorlcd_color: sts bkg_color,r24                sts text_color,r22                ret;************************************************; r24;void lcd_contrast(u08 cont)        .global lcd_contrastlcd_contrast: mov r25,r24; cbi PORTB,PB4 ;select Display                ldi r24,0x25 ;set contrast cmd.                rcall lcd_wrcmd                mov r24,r25 ;contrast value                subi r24,lo8(-10)                rcall lcd_wrdata; sbi PORTB,PB4 ;deselect Display                ret;************************************************;display a bar;Lenght(on display) is in r25 and value(how much is filled) in r24;; r25 r24 r23 r22;void lcd_bar(u16 len:val, u16 bkgcol:fillcol)        .global lcd_barlcd_bar: mov r21,r24; cbi PORTB,PB4 ;select Display                ldi r24,0x36 ;Memory data acces control                rcall lcd_wrcmd                ldi r24,0x20 ;X Mirror + vertical addresing mode                rcall lcd_wrdata                push r22                lds r24,lcd_y                lds r22,lcd_x                mov r18,r22                add r18,r25                inc r18                mov r20,r24; add r20,13                subi r20,lo8(-13); ldi r24,50; ldi r22,0; ldi r20,63; ldi r18,100                rcall lcd_window1 ;create window xlen = R25, ylen = 14                pop r22                ldi r24,0x2C ;write memory command                rcall lcd_wrcmd                rcall send_beginbar_lop: tst r21                brne bar_2                rcall send_empty                inc r21                rjmp bar_3bar_2: rcall send_fullbar_3: dec r21                dec r25                brne bar_lop                rcall send_begin                ldi r24,0x36 ;Memory data acces control                rcall lcd_wrcmd                ldi r24,0x00 ;Return to horizontal addresing                rcall lcd_wrdata; sbi PORTB,PB4 ;deselect Display                retsend_begin: ldi r20,14 ;send vertical line of bar                clr r24sb1: rcall lcd_wrdata                dec r20                brne sb1                retsend_full: rcall sf2 ;send full bar patterrn                mov r24,r23                rcall lcd_wrdata                rcall lcd_wrdata                ldi r20,8                mov r24,r22sf1: rcall lcd_wrdata                dec r20                brne sf1                mov r24,r23                rcall lcd_wrdata                rcall lcd_wrdatasf2: clr r24                rjmp lcd_wrdatasend_empty: rcall sf2 ;send empty bar patterrn                ldi r20,12                mov r24,r23se1: rcall lcd_wrdata                dec r20                brne se1                rjmp sf2;************************************************; r24 r22;void lcd_gotoxy(u08 x, u08 y) Assume as this display is used in 128x128 pixels mode        .global lcd_gotoxylcd_gotoxy:                sts lcd_x,r24                sts lcd_y,r22                ldi r20,0x81                mov r18,r20; r24 r22 r20 r18;void lcd_window(u08 xp, u08 yp, u08 xe, u08 ye)        .global lcd_windowlcd_window:; cbi PORTB,PB4 ;select Display                rcall lcd_window1; sbi PORTB,PB4 ;deselect Display

⌨️ 快捷键说明

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