LPC2131接24064液晶程序总是停在忙检测

[复制链接]
2818|2
 楼主| lnww 发表于 2008-4-26 16:55 | 显示全部楼层 |阅读模式
我用LPC2131接24064液晶(型号Ocmj4×15D&nbsp;控制器8822&nbsp;金鹏产品)不知为什么屏幕没显示&nbsp;&nbsp;调试发现程序总是停留在判忙信号检测上,谢谢提供解决方法,程序如下&nbsp;&nbsp;数据口接P0.0~P0.7<br /><br />#include&nbsp;&quot;config.h&quot;<br />uint8&nbsp;tab1[]={<br />&nbsp;&nbsp;&quot;冷箱&nbsp;&nbsp;&nbsp;&nbsp;℃&nbsp;&nbsp;时钟显示&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&quot;<br />&nbsp;&nbsp;&quot;冷头&nbsp;&nbsp;&nbsp;&nbsp;℃&nbsp;&nbsp;休眠停止&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<br />&nbsp;&nbsp;&quot;冷台&nbsp;&nbsp;&nbsp;&nbsp;℃&nbsp;&nbsp;休眠开始&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<br />&nbsp;&nbsp;&quot;冷刀&nbsp;&nbsp;&nbsp;&nbsp;℃&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;};<br />&nbsp;&nbsp;<br />#define&nbsp;lcd_rs&nbsp;&nbsp;&nbsp;1&lt&lt8<br />#define&nbsp;lcd_wr&nbsp;&nbsp;&nbsp;1&lt&lt9<br />#define&nbsp;lcd_rd&nbsp;&nbsp;&nbsp;1&lt&lt10<br />#define&nbsp;lcd_cs1&nbsp;&nbsp;1&lt&lt12<br />#define&nbsp;lcd_cs2&nbsp;&nbsp;1&lt&lt13<br />#define&nbsp;lcd_busy&nbsp;1&lt&lt17<br />#define&nbsp;lcd_int&nbsp;&nbsp;1&lt&lt18<br />#define&nbsp;lcd_rst&nbsp;&nbsp;1&lt&lt19<br /><br />/*********************************************************************************************/<br />void&nbsp;delay(uint16&nbsp;k)<br />{<br />&nbsp;&nbsp;uint16&nbsp;i;<br />&nbsp;&nbsp;for(i=0;i&ltk;i++);<br />}<br />void&nbsp;delay1(uint32&nbsp;ms)<br />{<br />&nbsp;&nbsp;uint32&nbsp;i,j;<br />&nbsp;&nbsp;for(i=0;i&ltms;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;j&lt400;j++);<br />}<br />//=============================================<br />void&nbsp;lcd_regwr(uint8&nbsp;regnada)<br />{&nbsp;IO0CLR&nbsp;=&nbsp;0xff;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//先清零<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;regnada;&nbsp;&nbsp;//再送数<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;lcd_cs1;&nbsp;&nbsp;//&nbsp;chip&nbsp;enable.<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_rd;&nbsp;&nbsp;&nbsp;//<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;lcd_rs;&nbsp;&nbsp;&nbsp;//&nbsp;rs&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;lcd_wr;&nbsp;&nbsp;&nbsp;//&nbsp;wr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;delay(10);<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_wr;&nbsp;&nbsp;&nbsp;//&nbsp;wr&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_rs;&nbsp;&nbsp;&nbsp;//&nbsp;rs&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_cs1;&nbsp;&nbsp;//&nbsp;chip&nbsp;disable.<br />}<br /><br />void&nbsp;lcd_regwrite(uint8&nbsp;regname,uint8&nbsp;regdata)&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;//写资料到缓存器<br />&nbsp;&nbsp;lcd_regwr(regname);<br />&nbsp;&nbsp;delay(10);<br />&nbsp;&nbsp;lcd_regwr(regdata);<br />}<br /><br />//.............................................<br />void&nbsp;lcd_datawrite(uint8&nbsp;wrdata)&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;//写资料到DDRAM<br />&nbsp;&nbsp;while(!(IO0PIN&lcd_busy)&nbsp;==&nbsp;0);<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;0xff;&nbsp;&nbsp;&nbsp;//先清零<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;wrdata;&nbsp;//再送数<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;lcd_cs1;&nbsp;//&nbsp;chip&nbsp;enable.<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_rd;&nbsp;//<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_rs;&nbsp;//&nbsp;rs&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;lcd_wr;&nbsp;//&nbsp;wr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;delay(10);<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_wr;&nbsp;//&nbsp;wr&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_rs;&nbsp;//&nbsp;rs&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_cs1;&nbsp;//&nbsp;chip&nbsp;disable.<br />}<br />//.............................................<br />uint8&nbsp;lcd_regread(uint8&nbsp;regname)&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;//读缓存器<br />&nbsp;&nbsp;uint8&nbsp;reg_rddata;&nbsp;&nbsp;<br />&nbsp;&nbsp;lcd_regwr(regname);<br /><br />&nbsp;&nbsp;IO0DIR=0x00;<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;0xff;<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;lcd_cs1;&nbsp;//&nbsp;chip&nbsp;enable.<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_wr;&nbsp;//&nbsp;wr&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;lcd_rs;&nbsp;//&nbsp;rs&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;lcd_rd;&nbsp;//&nbsp;rd&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;;<br />&nbsp;&nbsp;reg_rddata&nbsp;=&nbsp;(IO0PIN&0xff);<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_rd;&nbsp;//&nbsp;rd&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_rs;&nbsp;//&nbsp;rs&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;lcd_cs1;&nbsp;//&nbsp;chip&nbsp;disable.<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;IO0DIR=0xff;<br />&nbsp;&nbsp;return(reg_rddata);<br />}<br />//.............................................<br />&nbsp;void&nbsp;gotoxy(uint8&nbsp;x,uint8&nbsp;y)<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;&nbsp;lcd_regwrite(0x60,x);&nbsp;//&nbsp;active&nbsp;window&nbsp;top&nbsp;register(awtr)<br />&nbsp;&nbsp;lcd_regwrite(0x70,y);&nbsp;//&nbsp;active&nbsp;window&nbsp;top&nbsp;register(awtr)<br />}<br />//=============================================<br /><br />void&nbsp;lcd_reset(void)&nbsp;<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//上电复位<br />&nbsp;&nbsp;delay1(800);&nbsp;//&nbsp;delay&nbsp;120ms&nbsp;等待上电复位<br />&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;0x000e37ff;&nbsp;//&nbsp;lcd_rs/wr/rd/cs1/cs2&nbsp;normal&nbsp;-&nbsp;skeep&nbsp;high.<br />}<br />//.............................................<br />void&nbsp;lcd_initial(void)&nbsp;<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//初始化<br />&nbsp;&nbsp;lcd_regwrite(0x00,0xc9);&nbsp;//&nbsp;lcd&nbsp;control&nbsp;register(lcr)<br />&nbsp;&nbsp;lcd_regwrite(0x01,0xf2);&nbsp;//&nbsp;misc.register(mir)<br />&nbsp;&nbsp;lcd_regwrite(0x02,0x10);&nbsp;//&nbsp;advance&nbsp;power&nbsp;setup&nbsp;register(apsr)<br />&nbsp;&nbsp;lcd_regwrite(0x03,0x80);&nbsp;//&nbsp;advance&nbsp;display&nbsp;setup&nbsp;regiser(adsr)<br />&nbsp;&nbsp;lcd_regwrite(0x10,0x6b);&nbsp;//&nbsp;cursor&nbsp;control&nbsp;register(ccr)<br />&nbsp;&nbsp;lcd_regwrite(0x11,0x00);&nbsp;//&nbsp;distance&nbsp;of&nbsp;word&nbsp;or&nbsp;lines&nbsp;register(dwlr)<br />&nbsp;&nbsp;lcd_regwrite(0x12,0x91);&nbsp;//&nbsp;memory&nbsp;access&nbsp;mode&nbsp;register(awrr)<br />&nbsp;&nbsp;lcd_regwrite(0x21,0x1d);&nbsp;//&nbsp;display&nbsp;window&nbsp;right&nbsp;register(dwrr)&nbsp;<br />&nbsp;&nbsp;lcd_regwrite(0x31,0x3f);&nbsp;//&nbsp;display&nbsp;window&nbsp;bottom&nbsp;register(dwbr)&nbsp;<br />&nbsp;&nbsp;lcd_regwrite(0x41,0x00);&nbsp;//&nbsp;display&nbsp;window&nbsp;left&nbsp;register(dwlr)<br />&nbsp;&nbsp;lcd_regwrite(0x51,0x00);&nbsp;//&nbsp;display&nbsp;window&nbsp;top&nbsp;register(dwtr)<br />&nbsp;&nbsp;lcd_regwrite(0x20,0x1d);&nbsp;//&nbsp;active&nbsp;window&nbsp;right&nbsp;register(awrr)&nbsp;<br />&nbsp;&nbsp;lcd_regwrite(0x30,0x3f);&nbsp;//&nbsp;active&nbsp;window&nbsp;bottom&nbsp;register(awbr)<br />&nbsp;&nbsp;lcd_regwrite(0x40,0x00);&nbsp;//&nbsp;active&nbsp;window&nbsp;left&nbsp;register(awlr)<br />&nbsp;&nbsp;lcd_regwrite(0x50,0x00);&nbsp;//&nbsp;active&nbsp;window&nbsp;top&nbsp;register(awtr)<br />&nbsp;&nbsp;lcd_regwrite(0x60,0x00);&nbsp;//&nbsp;cursor&nbsp;position&nbsp;x&nbsp;register(cpxr)<br />&nbsp;&nbsp;lcd_regwrite(0x61,0x00);&nbsp;//&nbsp;begin&nbsp;segment&nbsp;position&nbsp;register(bgsg)<br />&nbsp;&nbsp;lcd_regwrite(0x70,0x00);&nbsp;//&nbsp;cursor&nbsp;position&nbsp;y&nbsp;register(cpyr)<br />&nbsp;&nbsp;lcd_regwrite(0x71,0x00);&nbsp;//&nbsp;shift&nbsp;action&nbsp;range,begin&nbsp;commom&nbsp;register(bgcm)<br />&nbsp;&nbsp;lcd_regwrite(0x72,0x3f);&nbsp;//&nbsp;shift&nbsp;action&nbsp;range,end&nbsp;commom&nbsp;register(edcm)&nbsp;<br />&nbsp;&nbsp;lcd_regwrite(0x80,0xaa);&nbsp;//&nbsp;blink&nbsp;time&nbsp;register(btr)<br />&nbsp;&nbsp;lcd_regwrite(0x81,0x00);&nbsp;//&nbsp;frame&nbsp;rate&nbsp;polarity&nbsp;change&nbsp;at&nbsp;common_fa&nbsp;register(fdca)<br />&nbsp;&nbsp;lcd_regwrite(0x91,0x00);&nbsp;//&nbsp;frame&nbsp;rate&nbsp;polarity&nbsp;change&nbsp;at&nbsp;common_fb&nbsp;register(fdcb)<br />&nbsp;&nbsp;lcd_regwrite(0x90,0x1e);&nbsp;//&nbsp;shift&nbsp;clock&nbsp;control&nbsp;register(sccr)&nbsp;&nbsp;<br />&nbsp;&nbsp;lcd_regwrite(0xa0,0x08);&nbsp;//&nbsp;interrupt&nbsp;setup&nbsp;&&nbsp;status&nbsp;register(frcb)<br />&nbsp;&nbsp;lcd_regwrite(0xa1,0xf1);&nbsp;//&nbsp;key&nbsp;scan&nbsp;control&nbsp;register(kscr)<br />&nbsp;&nbsp;lcd_regwrite(0xa2,0x00);&nbsp;//&nbsp;key&nbsp;scan&nbsp;data&nbsp;register(ksdr)<br />&nbsp;&nbsp;lcd_regwrite(0xa3,0x00);&nbsp;//&nbsp;key&nbsp;scan&nbsp;data&nbsp;expand&nbsp;register(kser)<br />&nbsp;&nbsp;lcd_regwrite(0xb0,0x1d);&nbsp;//&nbsp;interrupt&nbsp;column&nbsp;setup&nbsp;register(intx)&nbsp;<br />&nbsp;&nbsp;lcd_regwrite(0xb1,0x3f);&nbsp;//&nbsp;interrupt&nbsp;row&nbsp;setup&nbsp;register(inty)&nbsp;&nbsp;<br />&nbsp;&nbsp;lcd_regwrite(0xc0,0x00);&nbsp;//&nbsp;touch&nbsp;panel&nbsp;control&nbsp;register(tpcr)<br />&nbsp;&nbsp;lcd_regwrite(0xc1,0x0a);&nbsp;//&nbsp;adc&nbsp;status&nbsp;register(adcs)<br />&nbsp;&nbsp;lcd_regwrite(0xc8,0x80);&nbsp;//&nbsp;touch&nbsp;panel&nbsp;segment&nbsp;high&nbsp;byte&nbsp;data&nbsp;register(tpxr)<br />&nbsp;&nbsp;lcd_regwrite(0xc9,0x80);&nbsp;//&nbsp;touch&nbsp;panel&nbsp;common&nbsp;high&nbsp;byte&nbsp;data&nbsp;register(tpyr)<br />&nbsp;&nbsp;lcd_regwrite(0xca,0x00);&nbsp;//&nbsp;touch&nbsp;panel&nbsp;segment/common&nbsp;low&nbsp;byte&nbsp;data&nbsp;register(tpzr)<br />&nbsp;&nbsp;lcd_regwrite(0xd0,0x80);&nbsp;//&nbsp;lcd&nbsp;contrast&nbsp;control&nbsp;register&nbsp;(lccr)<br />&nbsp;&nbsp;lcd_regwrite(0xe0,0x00);&nbsp;//&nbsp;pattern&nbsp;data&nbsp;register(pdr)<br />&nbsp;&nbsp;lcd_regwrite(0xf0,0xa0);&nbsp;//&nbsp;font&nbsp;control&nbsp;register(fcr)<br />&nbsp;&nbsp;lcd_regwrite(0xf1,0x0f);&nbsp;//&nbsp;font&nbsp;size&nbsp;control&nbsp;register<br />}<br />//.............................................<br /><br />//.............................................<br />void&nbsp;lcd_character(uint8&nbsp;*cha,uint8&nbsp;count)<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;//显示中文或字符<br />&nbsp;&nbsp;uint8&nbsp;i;<br />&nbsp;&nbsp;for(i=0;i&ltcount;i++)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;lcd_datawrite(*cha);<br />&nbsp;&nbsp;&nbsp;&nbsp;++cha;<br />&nbsp;&nbsp;}<br />}<br /><br />int&nbsp;main&nbsp;(void)<br />{&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;PINSEL0=0x00000000;<br />&nbsp;&nbsp;PINSEL1=0x00000000;<br />&nbsp;&nbsp;IO0DIR=0x000e37ff;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置输出口<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;IO0SET=0x000e37ff;<br />&nbsp;&nbsp;lcd_reset();<br />&nbsp;&nbsp;lcd_initial();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//初始化中&nbsp;液晶关显示<br />&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;lcd_regwrite(0x10,0x6b);<br />&nbsp;&nbsp;lcd_regwrite(0x00,0xcd);&nbsp;&nbsp;&nbsp;//&nbsp;液晶开显示<br />&nbsp;&nbsp;gotoxy(0x00,0x00);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设定显示位置<br />&nbsp;&nbsp;lcd_character(tab1,120);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;while(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}
wishcom 发表于 2008-4-26 17:13 | 显示全部楼层

很怀疑你的忙信号是不是搞反了

检查一下忙信号到底是高有效还是低有效吧
 楼主| lnww 发表于 2008-4-27 08:44 | 显示全部楼层

忙信号是高电平表示忙 没有搞错

忙信号是高电平表示忙&nbsp;&nbsp;没有搞错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

107

帖子

1

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