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

📄 lcd.psm

📁 PicoBlaze的开发压缩包,PicoBlaze的编译器.
💻 PSM
📖 第 1 页 / 共 3 页
字号:
                       ; KCPSM3 Program - Control and calculation for Frequency Generator design using the
                       ;                 Spartan-3E Starter Kit.
                       ;
                       ; Interfaces with the rotary encoder and LCD display to enable a frequency to be set.
                       ; Converts the BCD frequency value into a binary integer and then performs the high
                       ; precision calculation necessary to derive the control numbers required by the high
                       ; performance Direct Digital Synthesis (DDS) circuit implemented in hardware.
                       ;
                       ; LEDs are connected and used as edit mode indicators.
                       ;
                       ; Substantial comments are included in line with the code below and should be used
                       ; in conjunction with the documentation provided with the complete reference design.
                       ;
                       ;
                       ;
                       ; Ken Chapman - Xilinx Ltd
                       ;
                       ; Version v1.00 - 13th July 2006
                       ;
                       ;**************************************************************************************
                       ;Port definitions
                       ;**************************************************************************************
                       ;
                       ;
                       ;LCD interface ports
                       ;
                       ;The master enable signal is not used by the LCD display itself
                       ;but may be required to confirm that LCD communication is active.
                       ;This is required on the Spartan-3E Starter Kit if the StrataFLASH
                       ;is used because it shares the same data pins and conflicts must be avoided.
                       ;
                       CONSTANT LCD_output_port, 40        ;   LCD character module output data and control
                       CONSTANT LCD_E, 01                  ;   active High Enable        E - bit0
                       CONSTANT LCD_RW, 02                 ;   Read=1 Write=0           RW - bit1
                       CONSTANT LCD_RS, 04                 ;   Instruction=0 Data=1     RS - bit2
                       ;CONSTANT LCD_drive, 08              ;   Master enable (active High) - bit3
                       CONSTANT LCD_DB4, 10                ;   4-bit              Data DB4 - bit4
                       CONSTANT LCD_DB5, 20                ;   interface          Data DB5 - bit5
                       CONSTANT LCD_DB6, 40                ;                      Data DB6 - bit6
                       CONSTANT LCD_DB7, 80                ;                      Data DB7 - bit7
                       ;
                       ;
                       CONSTANT LCD_input_port, 01         ;    LCD character module input data
                       CONSTANT LCD_read_DB4, 10           ;    4-bit           Data DB4 - bit4
                       CONSTANT LCD_read_DB5, 20           ;    interface       Data DB5 - bit5
                       CONSTANT LCD_read_DB6, 40           ;                    Data DB6 - bit6
                       CONSTANT LCD_read_DB7, 80           ;                    Data DB7 - bit7
                       ;
                       ;
                       ;
                       ;Control of frequency selection values
                       ;
                       CONSTANT cursor_position, 10        ; Pointer to edit position on LCD
                       ;
                       ; ************************
                       ;
                       ;Constant to define a software delay of 1us. This must be adjusted to reflect the
                       ;clock applied to KCPSM3. Every instruction executes in 2 clock cycles making the
                       ;calculation highly predictable. The '6' in the following equation even allows for
                       ;'CALL delay_1us' instruction in the initiating code.
                       ;
                       ; delay_1us_constant =  (clock_rate - 6)/4       Where 'clock_rate' is in MHz
                       ;
                       ;Example: For a 50MHz clock the constant value is (50-6)/4 = 11  (0B Hex).
                       ;For clock rates below 10MHz the value of 1 must be used and the operation will
                       ;become lower than intended.
                       ;
                       CONSTANT delay_1us_constant, 0B
                       ;
                       ;
                       ;
                       ;ASCII table
                       ;
                       CONSTANT character_a, 61
                       CONSTANT character_b, 62
                       CONSTANT character_c, 63
                       CONSTANT character_d, 64
                       CONSTANT character_e, 65
                       CONSTANT character_f, 66
                       CONSTANT character_g, 67
                       CONSTANT character_h, 68
                       CONSTANT character_i, 69
                       CONSTANT character_j, 6A
                       CONSTANT character_k, 6B
                       CONSTANT character_l, 6C
                       CONSTANT character_m, 6D
                       CONSTANT character_n, 6E
                       CONSTANT character_o, 6F
                       CONSTANT character_p, 70
                       CONSTANT character_q, 71
                       CONSTANT character_r, 72
                       CONSTANT character_s, 73
                       CONSTANT character_t, 74
                       CONSTANT character_u, 75
                       CONSTANT character_v, 76
                       CONSTANT character_w, 77
                       CONSTANT character_x, 78
                       CONSTANT character_y, 79
                       CONSTANT character_z, 7A
                       CONSTANT character_A, 41
                       CONSTANT character_B, 42
                       CONSTANT character_C, 43
                       CONSTANT character_D, 44
                       CONSTANT character_E, 45
                       CONSTANT character_F, 46
                       CONSTANT character_G, 47
                       CONSTANT character_H, 48
                       CONSTANT character_I, 49
                       CONSTANT character_J, 4A
                       CONSTANT character_K, 4B
                       CONSTANT character_L, 4C
                       CONSTANT character_M, 4D
                       CONSTANT character_N, 4E
                       CONSTANT character_O, 4F
                       CONSTANT character_P, 50
                       CONSTANT character_Q, 51
                       CONSTANT character_R, 52
                       CONSTANT character_S, 53
                       CONSTANT character_T, 54
                       CONSTANT character_U, 55
                       CONSTANT character_V, 56
                       CONSTANT character_W, 57
                       CONSTANT character_X, 58
                       CONSTANT character_Y, 59
                       CONSTANT character_Z, 5A
                       CONSTANT character_0, 30
                       CONSTANT character_1, 31
                       CONSTANT character_2, 32
                       CONSTANT character_3, 33
                       CONSTANT character_4, 34
                       CONSTANT character_5, 35
                       CONSTANT character_6, 36
                       CONSTANT character_7, 37
                       CONSTANT character_8, 38
                       CONSTANT character_9, 39
                       CONSTANT character_colon, 3A
                       CONSTANT character_stop, 2E
                       CONSTANT character_semi_colon, 3B
                       CONSTANT character_minus, 2D
                       CONSTANT character_divide, 2F       ;'/'
                       CONSTANT character_plus, 2B
                       CONSTANT character_comma, 2C
                       CONSTANT character_less_than, 3C
                       CONSTANT character_greater_than, 3E
                       CONSTANT character_equals, 3D
                       CONSTANT character_space, 20
                       CONSTANT character_CR, 0D           ;carriage return
                       CONSTANT character_question, 3F     ;'?'
                       CONSTANT character_dollar, 24
                       CONSTANT character_exclaim, 21      ;'!'
                       CONSTANT character_BS, 08           ;Back Space command character
                       ;
                       ;
                       ;
                       ;**************************************************************************************
                       ;Initialise the system
                       ;**************************************************************************************
                       ;
           cold_start: CALL LCD_reset                      ;initialise LCD display
                       ;
                       ;Write 'Frequency Generator' to LCD display and display for 4 seconds
                       ;
                       LOAD s5, 10                         ;Line 1 position 0
                       CALL LCD_cursor
                       CALL disp_Frequency
                       LOAD s5, 22                         ;Line 2 position 2
                       CALL LCD_cursor
                       CALL disp_Generator
                       CALL delay_1s                       ;wait 4 seconds
                       CALL delay_1s
                       CALL delay_1s
                       CALL delay_1s
                       CALL LCD_clear                      ;clear screen
                       ;
                       ;
                       ;
                       CALL delay_1ms
                       ;
                       ;**************************************************************************************
                       ; Main program
                       ;**************************************************************************************
                       ;
                       ; The main program is centred on the task of editing the frequency. It waits until the
                       ; rotary control is used and then makes the appropriate changes. If the actual digit
                       ; digit value is changed then the calculation to drive the DDS is performed each time.
                       ;
                       ; The start state is that of allowing the edit cursor position to be moved. Rotary
                       ; inputs are detected by the interrupt service routine and set a flag bit which the
                       ; main program then uses to adjust the cursor position and pointer to the corresponding
                       ; BCD digit in memory.
                       ;
                       ; A press of the rotary control is detected by polling and used to change to the digit
                       ; editing mode.
                       ;
                       ;
                       ;**************************************************************************************
                       ; Display frequency on top line of the LCD and DDS data on the lower line
                       ;**************************************************************************************
                       ;
                       ; The BCD value should be stored in scratch pad memory in 9 ascending locations
                       ; called BCD_digit0 to BCD_digit8.

⌨️ 快捷键说明

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