This is my version of the bar graph.
Code:'**************************************************************** '* Name : Bargraph.BAS * '* Author : Chris Bezuidenhout * '* Notice : Copyright (c) 2005 Micro Developments * '* : All Rights Reserved * '* Date : 2005/07/19 * '* Version : 1.0 * '* URL : http://www.patenttrade.net * '* E-mail : [email protected] * '* Mobile : +27-72-795-0107 * '* Notes : This is a bargraph demo for a 2X20 LCD Display * '* : it is free to use and distribute by any one * '* : as long as this Copyright note is not altered or * '* : removed, can be used as an analog meter. * '* Device : PIC16F877 can be altered to work on other devices * '**************************************************************** INCLUDE "Modedefs.Bas" DEFINE OSC 4 ' Set Xtal Frequency DEFINE LCD_DREG PORTA ' Set LCD Data port DEFINE LCD_DBIT 0 ' Set starting Data BIT (0 OR 4) IF 4-BIT bus DEFINE LCD_RSREG PORTA ' Set LCD Register Select port DEFINE LCD_RSBIT 4 ' Set LCD Register Select BIT DEFINE LCD_EREG PORTE ' Set LCD Enable port, for other devices, use PORT A or B DEFINE LCD_EBIT 0 ' Set LCD Enable BIT DEFINE LCD_BITS 4 ' Set LCD bus side (4 OR 8 bits) DEFINE LCD_LINES 2 ' Set number of lines ON LCD ' md Declare the Variables md counter VAR BYTE Text VAR BYTE[20] X VAR BYTE Y VAR BYTE PAUSE 500 Main: '*********Modefy first 5 characters in LCD character generator to display bargraph********** LCDOut $fe,%1000000 'SET CG RAM ADD. FOR X =1 TO 8 LCDOUT %10000 next x FOR X=1 TO 8 LCDOUT %11000 NEXT X FOR X=1 TO 8 LCDOUT %11100 NEXT X FOR X=1 TO 8 LCDOUT %11110 NEXT X FOR X=1 TO 8 LCDOUT %11111 NEXT X LCDOut $fe,%10000000 'SET DD RAM ADD. ' FOR X = 0 TO 255 ' LCDOUT $FE,1,#X,X ' PAUSE 100 ' NEXT X LOOP1: LCDOUT $FE,1,"This is a test" LCDOUT $FE,$C0 'clear second line and display bar graph LCDOUT 0 'print first character for X= 0 TO 19 'change 19 to 15 for 16 character display PAUSE 100 LCDOUT $FE,$10,1 'move curser back and overprint previous character PAUSE 100 LCDOUT $FE,$10,2 'move curser back and overprint previous character PAUSE 100 LCDOUT $FE,$10,3 'move curser back and overprint previous character PAUSE 100 LCDOUT $FE,$10,4 'move curser back and overprint previous character PAUSE 100 LCDOUT $FE,$14 'print next character LCDOUT $FE,0 NEXT X GOTO LOOP1 END




Bookmarks