救命了!!!

[复制链接]
2238|1
 楼主| colinluan 发表于 2008-9-26 21:31 | 显示全部楼层 |阅读模式
有谁用过LCD控制芯片S6B0724没,写个驱动,液晶一点反应都没有,调了好几天了,不知道错在哪里。高手们帮帮忙看看,单片机用的是PIC16F873,4M晶振,用的是8080的时序。<br /><br />void&nbsp;LCD_WriteCmd(int8&nbsp;cmd)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;output_low(PIN_B2);&nbsp;&nbsp;//A0=0&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;output_high(PIN_B4);&nbsp;//R=1<br />&nbsp;&nbsp;&nbsp;&nbsp;//*(0x07)=cmd;<br />&nbsp;&nbsp;&nbsp;&nbsp;output_c(cmd);<br />&nbsp;&nbsp;&nbsp;&nbsp;#asm<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;#endasm<br />&nbsp;&nbsp;&nbsp;&nbsp;output_low(PIN_B3);&nbsp;//WR=0<br />&nbsp;&nbsp;&nbsp;&nbsp;output_high(PIN_B3);&nbsp;&nbsp;//WR=1<br />}<br /><br /><br />void&nbsp;LCD_WriteDat(int8&nbsp;dat)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;output_high(PIN_B2);&nbsp;&nbsp;//A0=1&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;output_high(PIN_B4);&nbsp;&nbsp;//R=1<br />&nbsp;&nbsp;&nbsp;&nbsp;//*(0x07)=dat;<br />&nbsp;&nbsp;&nbsp;&nbsp;output_c(dat);<br />&nbsp;&nbsp;&nbsp;&nbsp;#asm<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;#endasm<br />&nbsp;&nbsp;&nbsp;&nbsp;output_low(PIN_B3);&nbsp;//WR=0<br />&nbsp;&nbsp;&nbsp;&nbsp;output_high(PIN_B3);&nbsp;&nbsp;//WR=1<br />}<br />int8&nbsp;LCD_ReadStatus()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int8&nbsp;dat;<br />&nbsp;&nbsp;&nbsp;&nbsp;set_tris_c(0xff);<br />&nbsp;&nbsp;&nbsp;&nbsp;output_low(PIN_B2);&nbsp;&nbsp;//A0=0<br />&nbsp;&nbsp;&nbsp;&nbsp;output_high(PIN_B3);&nbsp;&nbsp;//WR=1<br />&nbsp;&nbsp;&nbsp;&nbsp;output_low(PIN_B4);&nbsp;//R=0<br />&nbsp;&nbsp;&nbsp;&nbsp;#asm<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;#endasm<br />&nbsp;&nbsp;&nbsp;&nbsp;dat=input_c();<br />&nbsp;&nbsp;&nbsp;&nbsp;output_high(PIN_B4);&nbsp;&nbsp;//R=1<br />&nbsp;&nbsp;&nbsp;&nbsp;set_tris_c(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dat;<br />}<br /><br />void&nbsp;LCD_Init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;output_low(PIN_B6);&nbsp;&nbsp;//8080<br />&nbsp;&nbsp;&nbsp;&nbsp;output_low(PIN_B5);&nbsp;&nbsp;//CS1=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//液晶复位<br />&nbsp;&nbsp;&nbsp;&nbsp;output_low(PIN_B1);<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_ms(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;output_high(PIN_B1);<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_us(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//ADC&nbsp;select&nbsp;seg0-seg131<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0xa0);<br />&nbsp;&nbsp;&nbsp;&nbsp;//SHL&nbsp;select&nbsp;com0-com64<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0xc8);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//LCD&nbsp;Bias&nbsp;select<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0xa2);<br />&nbsp;&nbsp;&nbsp;&nbsp;//Voltage&nbsp;Converter&nbsp;ON&nbsp;//Voltage&nbsp;Regulator&nbsp;ON&nbsp;//Voltage&nbsp;Follower&nbsp;ON<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x2c);<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_ms(2);<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x2a);<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_ms(2);<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x29);<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_ms(2);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x81);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x27);<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x40);<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0xaf);<br />}<br /><br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int8&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;set_tris_a(0xff);<br />&nbsp;&nbsp;&nbsp;&nbsp;set_tris_b(0x01);<br />&nbsp;&nbsp;&nbsp;&nbsp;set_tris_c(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;port_b_pullups(0xff);<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_Init();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;i=LCD_ReadStatus();<br />&nbsp;&nbsp;&nbsp;&nbsp;putc(i);&nbsp;&nbsp;//串口输出状态<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0xb0);&nbsp;&nbsp;//setpage<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x10);<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt=50;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteDat(0xff);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=51;i&lt=100;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteDat(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0xb1);&nbsp;&nbsp;//setpage<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x10);<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteCmd(0x0a);<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt=50;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteDat(0xff);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=51;i&lt=100;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_WriteDat(0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />}
0x小丑 发表于 2008-9-26 21:47 | 显示全部楼层

寄存器的初始化可能有问题

LCD_WriteCmd(0x81);<br />指令后面应该跟有一个指令的数据的,这个数据会影响显示的灰度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

83

帖子

0

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