价值1000元的程序在这

[复制链接]
4054|14
 楼主| wangkj 发表于 2008-3-4 12:01 | 显示全部楼层 |阅读模式
sd, se, CD, LCD, IO
#include&nbsp;&quot;main.h&quot;<br />#include&nbsp;&quot;io.h&quot;<br />#include&nbsp;&ltstdio.h&gt<br />#include&nbsp;&ltstdarg.h&gt<br />#include&nbsp;&ltmemory.h&gt<br />#include&nbsp;&lterrno.h&gt<br />#include&nbsp;&ltsys/types.h&gt<br />#include&nbsp;&ltsys/socket.h&gt<br />#include&nbsp;&ltsys/mman.h&gt<br />#include&nbsp;&ltsys/ioctl.h&gt<br />#include&nbsp;&ltfcntl.h&gt<br />#include&nbsp;&ltsignal.h&gt<br />#include&nbsp;&quot;gpio.h&quot;<br />/*&nbsp;HW&nbsp;size(bit)&nbsp;*/<br />#define&nbsp;&nbsp;LCD_WIDTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;320<br />#define&nbsp;&nbsp;LCD_HEIGHT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;240<br /><br />//sd133x&nbsp;status<br />//#define&nbsp;LCDC_REG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((volatile&nbsp;unsigned&nbsp;char&nbsp;*)map_base_LCDC))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;LCDC_REG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*map_base_LCDC)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />//#define&nbsp;LCDC_REG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*((volatile&nbsp;unsigned&nbsp;char&nbsp;*)0x40000000))&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;FIRSTPAGE&nbsp;0&nbsp;<br />#define&nbsp;BEEP&nbsp;0x7<br />#define&nbsp;CLRSCR&nbsp;0x1B<br /><br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*map_base;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//phy&nbsp;0xffff&nbsp;f000&nbsp;virtual&nbsp;address<br />volatile&nbsp;unsigned&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*map_base_LCDC;&nbsp;//LCDC(0x40000000&nbsp;virtual&nbsp;address<br /><br />#define&nbsp;__lcd_param()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOB_OFFSET&nbsp;+&nbsp;AT91_PIO_CODR))))&nbsp;=&nbsp;0x1&lt&lt9;&nbsp;//PB9&nbsp;as&nbsp;0<br />#define&nbsp;__lcd_cmd()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOB_OFFSET&nbsp;+&nbsp;AT91_PIO_SODR))))&nbsp;=&nbsp;0x1&lt&lt9;&nbsp;//PB9&nbsp;as&nbsp;1<br />//0&nbsp;input;1&nbsp;output<br /><br />#define&nbsp;SD1335_TIMEOUT&nbsp;20000<br />unsigned&nbsp;short&nbsp;cur_add=0xffff;<br />//unsigned&nbsp;short&nbsp;layer_size&nbsp;=&nbsp;((LCD_WIDTH&nbsp;)&nbsp;/&nbsp;8-1)&nbsp;*&nbsp;LCD_HEIGHT&nbsp;;<br />unsigned&nbsp;short&nbsp;layer_size&nbsp;=&nbsp;((LCD_WIDTH&nbsp;+&nbsp;4)&nbsp;/&nbsp;8)&nbsp;*&nbsp;LCD_HEIGHT&nbsp;;<br />//4&nbsp;pixel&nbsp;cross&nbsp;,&nbsp;maybe&nbsp;can&nbsp;use&nbsp;the&nbsp;comment&nbsp;value<br /><br />//Send&nbsp;command&nbsp;to&nbsp;LCD&nbsp;controller&nbsp;<br />void&nbsp;sd1335_cmd(unsigned&nbsp;char&nbsp;val)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;timeout&nbsp;=&nbsp;SD1335_TIMEOUT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((LCDC_REG&nbsp;&&nbsp;0x40)&nbsp;&&&nbsp;&nbsp;&nbsp;&nbsp;(timeout--&nbsp;!=&nbsp;0));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_cmd();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCDC_REG&nbsp;=&nbsp;(val);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;timeout&nbsp;==&nbsp;0&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LedMove();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;<br /><br />//send&nbsp;command&nbsp;or&nbsp;data&nbsp;to&nbsp;LCD&nbsp;controller&nbsp;port<br />void&nbsp;sd1335_outb(unsigned&nbsp;char&nbsp;&nbsp;val)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;timeout&nbsp;=&nbsp;SD1335_TIMEOUT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((LCDC_REG&nbsp;&&nbsp;0x40)&nbsp;&&&nbsp;&nbsp;(timeout--&nbsp;!=&nbsp;0));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCDC_REG=&nbsp;(val);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;timeout&nbsp;==&nbsp;0&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LedMove();<br />&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />//LCD&nbsp;controller&nbsp;init<br />void&nbsp;device_init(unsigned&nbsp;int&nbsp;width,&nbsp;unsigned&nbsp;int&nbsp;height)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;p[10];<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;//set&nbsp;PIOC&nbsp;pin11&nbsp;as&nbsp;NCS5&nbsp;and&nbsp;use&nbsp;up&nbsp;resistor&nbsp;and&nbsp;...........&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//AT91F_PIO_CfgPeriph(AT91C_BASE_PIOC,&nbsp;AT91C_PC11_NCS5_CFCE1,&nbsp;0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//AT91C_BASE_EBI-&gtEBI_CFGR&nbsp;=&nbsp;(AT91C_EBI_DBPUC&nbsp;&&nbsp;0x00)&nbsp;|&nbsp;(AT91C_EBI_EBSEN&nbsp;&&nbsp;0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOC_OFFSET&nbsp;+&nbsp;AT91_PIO_PDR&nbsp;))))&nbsp;=&nbsp;0x1&lt&lt11;&nbsp;//PC11&nbsp;not&nbsp;as&nbsp;gpio<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOC_OFFSET&nbsp;+&nbsp;AT91_PIO_PUER))))&nbsp;=&nbsp;0x1&lt&lt11;&nbsp;//use&nbsp;internal&nbsp;up&nbsp;resistor<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOC_OFFSET&nbsp;+&nbsp;AT91_PIO_ASR))))&nbsp;=&nbsp;0x1&lt&lt11;&nbsp;&nbsp;//&nbsp;as&nbsp;function&nbsp;A&nbsp;(NCS5)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//PB9&nbsp;as&nbsp;gpio&nbsp;output<br />&nbsp;&nbsp;&nbsp;&nbsp;//AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,&nbsp;AT91C_PIO_PB9);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOB_OFFSET&nbsp;+&nbsp;AT91_PIO_PER&nbsp;))))&nbsp;=&nbsp;0x1&lt&lt9;&nbsp;//PB9&nbsp;as&nbsp;gpio<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOB_OFFSET&nbsp;+&nbsp;AT91_PIO_OER&nbsp;))))&nbsp;=&nbsp;0x1&lt&lt9;&nbsp;//PB9&nbsp;as&nbsp;output<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//NCS5&nbsp;Static&nbsp;mem&nbsp;controler&nbsp;register<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//*((unsigned&nbsp;long*)(map_base&nbsp;+0x0f70+0x14))=&nbsp;0x54c0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[0]&nbsp;=&nbsp;0x30;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[1]&nbsp;=&nbsp;0x87;&nbsp;&nbsp;&nbsp;//Font&nbsp;width&nbsp;8*8<br />&nbsp;&nbsp;&nbsp;&nbsp;p[2]&nbsp;=&nbsp;0x07;<br />&nbsp;&nbsp;&nbsp;&nbsp;//p[3]&nbsp;=&nbsp;width&nbsp;/&nbsp;8-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[3]&nbsp;=&nbsp;width&nbsp;/&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[4]&nbsp;=&nbsp;p[3]&nbsp;+&nbsp;4;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[5]&nbsp;=&nbsp;height&nbsp;-&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;//p[6]&nbsp;=&nbsp;(width&nbsp;/&nbsp;8-1)&nbsp;%&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[6]&nbsp;=&nbsp;(width&nbsp;/&nbsp;8)&nbsp;%&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;//p[7]&nbsp;=&nbsp;(width&nbsp;/&nbsp;8-1)&nbsp;/&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[7]&nbsp;=&nbsp;(width&nbsp;/&nbsp;8)&nbsp;/&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x40);&nbsp;//init&nbsp;device&nbsp;and&nbsp;dispaly<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;&nbsp;i&lt8;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(p);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;p[0]&nbsp;=&nbsp;0x00;&nbsp;&nbsp;//page1&nbsp;address&nbsp;and&nbsp;length<br />&nbsp;&nbsp;&nbsp;&nbsp;p[1]&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[2]&nbsp;=&nbsp;height;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[3]&nbsp;=&nbsp;layer_size&nbsp;&&nbsp;0xff;//page2&nbsp;address&nbsp;and&nbsp;length<br />&nbsp;&nbsp;&nbsp;&nbsp;p[4]&nbsp;=&nbsp;layer_size&nbsp;&gt&gt&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[5]&nbsp;=&nbsp;height;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[6]&nbsp;=&nbsp;0x00;//page3&nbsp;address<br />&nbsp;&nbsp;&nbsp;&nbsp;p[7]&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;p[8]&nbsp;=&nbsp;0x00;//page4&nbsp;address<br />&nbsp;&nbsp;&nbsp;&nbsp;p[9]&nbsp;=&nbsp;0x00;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x44);&nbsp;//set&nbsp;dispaly&nbsp;all&nbsp;page&nbsp;start&nbsp;adress<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;&nbsp;i&lt10;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(p);&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x5a);&nbsp;//horizontal&nbsp;scroll&nbsp;&nbsp;is&nbsp;00<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x5b);&nbsp;//dispaly&nbsp;overlay&nbsp;format&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();&nbsp;&nbsp;&nbsp;&nbsp;//OV=0&nbsp;two&nbsp;layer&nbsp;composition<br />//&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x0c);//DM1/2=1&nbsp;graphics&nbsp;mode&nbsp;;&nbsp;&nbsp;MX=0&nbsp;OR&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);//DM1/2=1&nbsp;graphics&nbsp;mode&nbsp;;&nbsp;&nbsp;MX=0&nbsp;OR&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//page1&nbsp;is&nbsp;text,page2&nbsp;is&nbsp;graphics<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//page1&nbsp;addr:00<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//page2&nbsp;address&nbsp;and&nbsp;length<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//value&nbsp;is:&nbsp;layer_size&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//display&nbsp;result:page1&nbsp;OR&nbsp;page2<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x58);&nbsp;//display&nbsp;on/off&nbsp;and&nbsp;flash&nbsp;&nbsp;(set&nbsp;Off)<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x59);<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />//&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x16);//Flash&nbsp;2hz,Page0&nbsp;flash&nbsp;0;Page1&nbsp;flash&nbsp;2;page3&nbsp;off<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x4c);&nbsp;//set&nbsp;direction&nbsp;of&nbsp;cursor&nbsp;movment&nbsp;(right)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x46);&nbsp;//set&nbsp;cursor&nbsp;address&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();&nbsp;&nbsp;&nbsp;&nbsp;//at&nbsp;0000<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x42);&nbsp;//write&nbsp;to&nbsp;all&nbsp;layer,clear&nbsp;all&nbsp;screen<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&lt(layer_size)&nbsp;*&nbsp;3;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x5d);&nbsp;//Set&nbsp;cursor&nbsp;type<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x07);//width&nbsp;8<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x87);//block&nbsp;cursor,high&nbsp;8<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x59);//display&nbsp;on/off&nbsp;and&nbsp;flash&nbsp;&nbsp;(set&nbsp;On)<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x16);//Flash&nbsp;2hz,Page0&nbsp;flash&nbsp;0;Page1&nbsp;flash&nbsp;2;page3&nbsp;off<br /><br />}<br /><br />#if&nbsp;0<br />//static&nbsp;unsigned&nbsp;int&nbsp;hacking_count&nbsp;=&nbsp;0;<br />//8bit&nbsp;reverse<br />//0-&gt7<br />//1-&gt6<br />//....<br />//7-&gt0<br />static&nbsp;inline&nbsp;unsigned&nbsp;char&nbsp;byte_rev(unsigned&nbsp;char&nbsp;b)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;ii;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;ddd[8]&nbsp;=&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80,&nbsp;0x40,&nbsp;0x20,&nbsp;0x10,&nbsp;0x08,&nbsp;0x04,&nbsp;0x02,&nbsp;0x01<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;sss[8]&nbsp;=&nbsp;{&nbsp;7,&nbsp;5,&nbsp;3,&nbsp;1,&nbsp;1,&nbsp;3,&nbsp;5,&nbsp;7};<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(ii=0;&nbsp;ii&lt4;&nbsp;ii++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;|=&nbsp;((b&nbsp;&&nbsp;ddd[ii])&nbsp;&gt&gt&nbsp;sss[ii]);<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(ii=0;&nbsp;ii&lt4;&nbsp;ii++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;|=&nbsp;((b&nbsp;&&nbsp;ddd[ii&nbsp;+&nbsp;4])&nbsp;&lt&lt&nbsp;sss[ii&nbsp;+&nbsp;4]);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;tmp;&nbsp;&nbsp;<br />}<br />#else<br />#define&nbsp;byte_rev(b)&nbsp;(b)&nbsp;&nbsp;<br />#endif&nbsp;//&nbsp;Bug&nbsp;hacking<br />//put&nbsp;all&nbsp;date&nbsp;in&nbsp;buffer&nbsp;to&nbsp;screen<br />void&nbsp;_sd1335_putscrn(unsigned&nbsp;char&nbsp;*map_buf)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x46);<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x42);<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&ltlayer_size;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(byte_rev(map_buf[j++]));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /><br /><br />//LCD&nbsp;clear&nbsp;screen<br />/*------------------------------------------------------------------------------<br />-*/<br />void&nbsp;_sd133x_clrscr(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,&nbsp;j;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x46);<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x42);<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&ltlayer_size;i++)&nbsp;{&nbsp;//clear&nbsp;text&nbsp;screen<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb('&nbsp;');<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=layer_size;i&lt2*layer_size;i++)&nbsp;{&nbsp;//clear&nbsp;graph&nbsp;screen<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x46);<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur_add=0;<br />}<br /><br /><br /><br />//sed133x&nbsp;lcd&nbsp;controler&nbsp;init<br />void&nbsp;_sd133x_init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;device_init(LCD_WIDTH,&nbsp;LCD_HEIGHT);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x46);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(00);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(00);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur_add=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />/*------------------------------------------------------------------------------<br />set&nbsp;display&nbsp;mem&nbsp;address,only&nbsp;use&nbsp;internal&nbsp;call,user&nbsp;cannot&nbsp;use&nbsp;directly<br />16bit&nbsp;address.<br />--<br />--------------------------------------------------------------------------------<br />-*/<br />void&nbsp;_sd133x_SetAddress(signed&nbsp;&nbsp;&nbsp;short&nbsp;add)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;cc1,cc2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signed&nbsp;&nbsp;&nbsp;short&nbsp;add1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add1=add;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x46);&nbsp;&nbsp;//set&nbsp;address<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc1=add1%256;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc2=add1/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(cc1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(cc2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur_add=add1;<br />}<br /><br />/*------------------------------------------------------------------------------<br />set&nbsp;text&nbsp;cursor&nbsp;position<br />x&nbsp;&nbsp;0..39&nbsp;<br />y&nbsp;&nbsp;0..29&nbsp;<br />--------------------------------------------------------------------------------*/<br /><br />void&nbsp;_sd133x_text_cursor(signed&nbsp;&nbsp;&nbsp;short&nbsp;x,signed&nbsp;&nbsp;&nbsp;short&nbsp;y)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_SetAddress(x+y*LCD_WIDTH/8);<br />}<br />/*------------------------------------------------------------------------------<br />set&nbsp;graphics&nbsp;cursor,our&nbsp;display&nbsp;struct&nbsp;is&nbsp;&nbsp;page0&nbsp;is&nbsp;text,and&nbsp;page1&nbsp;is&nbsp;graphics.<br />if&nbsp;use&nbsp;other&nbsp;struct,the&nbsp;function&nbsp;have&nbsp;to&nbsp;modify&nbsp;for&nbsp;that&nbsp;display&nbsp;struct<br />x&nbsp;&nbsp;0..319<br />y&nbsp;&nbsp;0..239<br />--------------------------------------------------------------------------------*/<br /><br />void&nbsp;_sd133x_graph_cursor(signed&nbsp;&nbsp;&nbsp;short&nbsp;x,signed&nbsp;&nbsp;&nbsp;short&nbsp;y)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_SetAddress(layer_size+x/8+y*LCD_WIDTH/8);<br />}<br />/*------------------------------------------------------------------------------<br />putpixel()&nbsp;of&nbsp;graphics&nbsp;<br />if&nbsp;put&nbsp;chinese&nbsp;character&nbsp;should&nbsp;not&nbsp;use&nbsp;the&nbsp;function,if&nbsp;use&nbsp;the&nbsp;function&nbsp;to&nbsp;put<br />chinese&nbsp;it&nbsp;will&nbsp;be&nbsp;&nbsp;slow&nbsp;15x&nbsp;than&nbsp;putpixel&nbsp;in&nbsp;every&nbsp;16&nbsp;pixcel<br />if&nbsp;cursor&nbsp;dispaly&nbsp;,&nbsp;the&nbsp;raad&nbsp;date&nbsp;will&nbsp;be&nbsp;two&nbsp;position&nbsp;ahead&nbsp;of&nbsp;the&nbsp;cursor<br />*/<br /><br />void&nbsp;_sd133x_putpixel(signed&nbsp;short&nbsp;x,signed&nbsp;short&nbsp;y)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;ch,ch1;<br />&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_graph_cursor(x,y);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x43);&nbsp;//read&nbsp;from&nbsp;display&nbsp;mem<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_cmd();<br />&nbsp;&nbsp;&nbsp;&nbsp;ch=LCDC_REG;&nbsp;//get&nbsp;an&nbsp;old&nbsp;value&nbsp;in&nbsp;that&nbsp;position,can&nbsp;get&nbsp;continous<br />&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_graph_cursor(x,y);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x42);&nbsp;//write&nbsp;to&nbsp;display&nbsp;mem<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ch1=&nbsp;ch&nbsp;|&nbsp;(1&lt&lt(7-(x&nbsp;%&nbsp;8)));<br />&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;x=&nbsp;%d,&nbsp;y=&nbsp;%d,&nbsp;ch&nbsp;=%x,&nbsp;ch1=%x&nbsp;&nbsp;\n\r&quot;,x,y,ch,ch1);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(ch1);<br />}<br />/*------------------------------------------------------------------------------<br />clearpixel()&nbsp;of&nbsp;graphics&nbsp;<br />*/<br />void&nbsp;_sd133x_clearpixel(signed&nbsp;short&nbsp;x,signed&nbsp;short&nbsp;y)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;ch,ch1;<br />&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_graph_cursor(x,y);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x43);&nbsp;//read&nbsp;from&nbsp;display&nbsp;mem<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;ch=LCDC_REG;&nbsp;//get&nbsp;an&nbsp;old&nbsp;value&nbsp;in&nbsp;that&nbsp;position,can&nbsp;get&nbsp;continous<br />&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_graph_cursor(x,y);<br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x42);&nbsp;//write&nbsp;to&nbsp;display&nbsp;mem<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;ch1=&nbsp;ch&nbsp;&&nbsp;(~(1&lt&lt(7-(x&nbsp;%&nbsp;8))));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(ch1);<br />}<br />/*------------------------------------------------------------------------------<br />get&nbsp;the&nbsp;text&nbsp;position&nbsp;of&nbsp;current&nbsp;cursor&nbsp;include&nbsp;&nbsp;graphics&nbsp;mode<br />x&nbsp;&nbsp;0..121<br />y&nbsp;&nbsp;0..3<br />In&nbsp;text&nbsp;area&nbsp;return&nbsp;0;<br />In&nbsp;graph&nbsp;area&nbsp;return&nbsp;1;&nbsp;<br />--------------------------------------------------------------------------------*/<br /><br />unsigned&nbsp;char&nbsp;_sd133x_curr_cursor(signed&nbsp;&nbsp;&nbsp;short&nbsp;*x,&nbsp;signed&nbsp;&nbsp;&nbsp;short&nbsp;*y)<br />{&nbsp;&nbsp;&nbsp;//no&nbsp;check&nbsp;over&nbsp;limit&nbsp;of&nbsp;text&nbsp;or&nbsp;graph<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(cur_add&nbsp;&lt&nbsp;layer_size)&nbsp;//in&nbsp;page1&nbsp;of&nbsp;text&nbsp;area&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*x=cur_add&nbsp;%&nbsp;(LCD_WIDTH/8)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*y=cur_add&nbsp;/&nbsp;(LCD_WIDTH/8);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*x=(cur_add&nbsp;-&nbsp;layer_size)&nbsp;&nbsp;%&nbsp;(LCD_WIDTH/8)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*y=(cur_add&nbsp;-&nbsp;layer_size)&nbsp;&nbsp;/&nbsp;(LCD_WIDTH/8)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;<br /><br />/*------------------------------------------------------------------------------<br />every&nbsp;english&nbsp;charset&nbsp;is&nbsp;8x8&nbsp;bitmap<br />only&nbsp;display&nbsp;from&nbsp;0x20&nbsp;to&nbsp;0x7f&nbsp;&nbsp;,&nbsp;all&nbsp;ASCIII&nbsp;code.<br />--------------------------------------------------------------------------------*/<br />void&nbsp;_sd133x_LcdPutCh(unsigned&nbsp;char&nbsp;ch)<br />{<br />&nbsp;&nbsp;&nbsp;signed&nbsp;short&nbsp;x,y;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if&nbsp;(ch=='\r')&nbsp;&nbsp;//no&nbsp;need&nbsp;to&nbsp;do&nbsp;any&nbsp;thing<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;if&nbsp;(ch=='\n')&nbsp;&nbsp;//need&nbsp;to&nbsp;&ltCR&gt<br />&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_curr_cursor(&x,&y);<br />&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_text_cursor(0,y+1);&nbsp;&nbsp;&nbsp;&nbsp;<br />//&nbsp;&nbsp;&nbsp;&nbsp;ser_send_int16(0,x);<br />//&nbsp;&nbsp;&nbsp;&nbsp;ser_send_char(0,'&nbsp;');<br />//&nbsp;&nbsp;&nbsp;&nbsp;ser_send_int16(0,y);<br />//&nbsp;&nbsp;&nbsp;&nbsp;ser_send_char(0,'\n');<br />//&nbsp;&nbsp;&nbsp;&nbsp;ser_send_char(0,'\r');<br />&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sd1335_cmd(0x42);&nbsp;//write&nbsp;to&nbsp;display&nbsp;mem<br />&nbsp;&nbsp;&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(ch);<br /><br />}<br />/*------------------------------------------------------------------------------<br />--<br />write&nbsp;a&nbsp;string&nbsp;to&nbsp;LCD<br />\n&nbsp;will&nbsp;&ltCR&gt,<br />string&nbsp;length&nbsp;must&nbsp;be&nbsp;less&nbsp;then&nbsp;255.<br />It&nbsp;will&nbsp;be&nbsp;display&nbsp;line&nbsp;by&nbsp;line,<br />if&nbsp;display&nbsp;after&nbsp;last&nbsp;line,it&nbsp;will&nbsp;be&nbsp;&nbsp;display&nbsp;in&nbsp;first&nbsp;line<br />--------------------------------------------------------------------------------*/<br />void&nbsp;_sd133x_LcdPutS(unsigned&nbsp;char&nbsp;*Str)<br />{&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;sd1335_cmd(0x42);&nbsp;//write&nbsp;to&nbsp;display&nbsp;mem<br />&nbsp;&nbsp;__lcd_param();<br />&nbsp;&nbsp;while&nbsp;(((*Str)!=0))<br />&nbsp;&nbsp;{<br />//&nbsp;&nbsp;&nbsp;&nbsp;sd1335_outb(*Str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_LcdPutCh(*Str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Str++;&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />}<br />//main&nbsp;fuction&nbsp;of&nbsp;LCD<br />#define&nbsp;DEBUGMSG(x,&nbsp;y,&nbsp;args...)&nbsp;printf(y,&nbsp;##args)<br />//#define&nbsp;DEBUGMSG(x,&nbsp;y,&nbsp;args...)<br />int&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;fd,i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;short&nbsp;x,y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;str1[]&nbsp;=&nbsp;&quot;&nbsp;--&nbsp;Aerospace&nbsp;Information&nbsp;-1234566&nbsp;\n\r&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;ch,ch1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((fd&nbsp;=&nbsp;open(&quot;/dev/mem&quot;,&nbsp;O_RDWR&nbsp;|&nbsp;O_SYNC))&nbsp;==&nbsp;-1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUGMSG(DEBUG_ERR,&nbsp;&quot;gpio:&nbsp;Error&nbsp;opening&nbsp;/dev/mem\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(-1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;//map&nbsp;0xffff<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map_base&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;mmap(0,&nbsp;MAP_SIZE,&nbsp;PROT_READ&nbsp;|&nbsp;PROT_WRITE,&nbsp;MAP_SHARED,&nbsp;fd,&nbsp;AT91_SYS);//AT91_SYS&nbsp;=&nbsp;0xffff&nbsp;f000<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map_base_LCDC&nbsp;=&nbsp;mmap(0,&nbsp;65535,&nbsp;PROT_READ&nbsp;|&nbsp;PROT_WRITE,&nbsp;MAP_SHARED,&nbsp;fd,&nbsp;0x40000000);&nbsp;//LCDC&nbsp;address<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOA_OFFSET&nbsp;+&nbsp;AT91_PIO_PER&nbsp;))))&nbsp;=&nbsp;0x3;&nbsp;//PA0:PA1&nbsp;as&nbsp;gpio<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOA_OFFSET&nbsp;+&nbsp;AT91_PIO_OER&nbsp;))))&nbsp;=&nbsp;0x3;&nbsp;//PA0:PA1&nbsp;as&nbsp;output<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOB_OFFSET&nbsp;+&nbsp;AT91_PIO_PER&nbsp;))))&nbsp;=&nbsp;0x1&lt&lt27;&nbsp;//PB27&nbsp;as&nbsp;gpio<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOB_OFFSET&nbsp;+&nbsp;AT91_PIO_OER&nbsp;))))&nbsp;=&nbsp;0x1&lt&lt27;&nbsp;//PB27&nbsp;as&nbsp;output<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOB_OFFSET&nbsp;+&nbsp;AT91_PIO_CODR))))&nbsp;=&nbsp;0x1&lt&lt27;&nbsp;//PB27&nbsp;light&nbsp;(0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&lt5;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOA_OFFSET&nbsp;+&nbsp;AT91_PIO_SODR))))&nbsp;=&nbsp;0x3;&nbsp;//PA0:PA1=1,Led&nbsp;will&nbsp;not&nbsp;light<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usleep(50000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOA_OFFSET&nbsp;+&nbsp;AT91_PIO_CODR))))&nbsp;=&nbsp;i&nbsp;&&nbsp;0x3;&nbsp;//PA0:PA1=0,Led&nbsp;will&nbsp;&nbsp;light<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usleep(50000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;long*)(map_base&nbsp;+&nbsp;((PIOB_OFFSET&nbsp;+&nbsp;AT91_PIO_SODR))))&nbsp;=&nbsp;0x1&lt&lt27;&nbsp;//PB27&nbsp;not&nbsp;light&nbsp;(1)<br />&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Unmap&nbsp;previously&nbsp;mapped&nbsp;page&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&lt100;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_text_cursor(0,8);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_clrscr();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_LcdPutS(str1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(x=0;x&lt320;x++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_putpixel(x,0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_putpixel(x,239);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(y=0;y&lt240;y++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_putpixel(0,y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_putpixel(319,y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(x=40;&nbsp;x&lt320-40;&nbsp;x++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(y=30;y&lt240-30;y++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_sd133x_putpixel(x,y);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(munmap(map_base,&nbsp;MAP_SIZE)&nbsp;==&nbsp;-1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEBUGMSG(DEBUG_ERR,&nbsp;&quot;Error&nbsp;unmapping&nbsp;memory\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(fd);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(-1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;close(fd);<br />}<br />
5_0_5 发表于 2008-3-4 12:02 | 显示全部楼层

沙发

  
 楼主| wangkj 发表于 2008-3-4 12:02 | 显示全部楼层

也不用给我了,请大家吃饭或者看电影或者什么活动的就行

如果muniu不讲信用,大家看怎么办?
 楼主| wangkj 发表于 2008-3-4 12:03 | 显示全部楼层

2楼太tmd快了

  
icecut 发表于 2008-3-4 12:14 | 显示全部楼层

1千元也不是个大数

怎么也能拿的起。。。。。
41689739 发表于 2008-3-4 13:03 | 显示全部楼层

什么功能至少先说下撒&nbsp;&nbsp;
wkman 发表于 2008-3-4 13:48 | 显示全部楼层

AT91 ARM 驱动sed1335液晶程序????

  
 楼主| wangkj 发表于 2008-3-4 17:34 | 显示全部楼层

at91rm9200 驱动 320×240的程序

应用软件直接访问硬件的技术
phoenixmy 发表于 2008-3-4 20:51 | 显示全部楼层

??

<br /><br />王会计你的那个网站是建立在ARM9上的吗?<br /><br />跑的啥操作系统?<br />用的是阿帕奇服务器软件吗?<br />
 楼主| wangkj 发表于 2008-3-4 23:20 | 显示全部楼层

非常正确

  
phoenixmy 发表于 2008-3-5 08:07 | 显示全部楼层

有意思

<br /><br />是linux+apache???<br /><br />硬盘是多大的?有显示器没有?是远程控制吗?
 楼主| wangkj 发表于 2008-3-5 08:51 | 显示全部楼层

那个网站都写着呢

另外,你可以访问www.08680.com&nbsp;那个是pc版本的,两个是一样的
5_0_5 发表于 2008-3-5 12:43 | 显示全部楼层

哈哈,俺见钱眼开

想学ARM,就先来潭子里抢个沙发的了
wangharry 发表于 2008-3-5 14:28 | 显示全部楼层

沙发

  
lrzxc 发表于 2008-3-5 23:02 | 显示全部楼层

楼上的,都14楼了,是什么沙发

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

580

主题

9972

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部