基于proteus仿真的数字电子秤内容摘要:

WDLCM)。 //写数据到 LCM子函数 void DisplayOneChar(uchar X,uchar Y,uchar DData)。 //显示指定坐标的一个字符子函数 void DisplayListChar(uchar X,uchar Y,uchar code *DData)。 //显示指定坐标的一串字符子函数 void weishu(uint m)。 void weishu1(uint m)。 void display(void)。 uchar Adc0832(unsigned char channel)。 void alarm(void)。 void data_pro(void)。 /**********main funcation************/ void main(void) { delay(500)。 //系统延时 500ms启动 //ad_data=0。 //采样值存储单元初始化为 0 initLCM( )。 WriteCommandLCM(0x01,1)。 //清显示屏 DisplayListChar(0,0,str0)。 DisplayListChar(0,1,str2)。 while(1) { ad_data =Adc0832(0)。 //采样值存储单元初始 化为 0 alarm()。 data_pro()。 display()。 if(k==1) { DisplayOneChar((s+7),1,table2[num1])。 x1=m。 y1=n。 y1=y1*10+x1。 } if(k==39。 *39。 ) { data_pro()。 WriteCommandLCM(0x01,1)。 weishu(z1)。 k=0。 } if(k==39。 =39。 ) { z1=z1*temp1。 WriteCommandLCM(0x01,1)。 DisplayListChar(0,1,str3)。 s=0。 weishu1(765)。 k=0。 } if(k==39。 39。 ) { WriteCommandLCM(0x80+0x40,1)。 WriteCommandLCM(0x01,1)。 z1=0。 s=0。 //防止清零时指针后移动 } } } /*********延时 K*1ms,**********/ void delay(uint k) { uint i,j。 for(i=0。 ik。 i++) for(j=0。 j100。 j++)。 } /**********写指令到 ICM子函数 ************/ void WriteCommandLCM(uchar WCLCM,uchar BusyC) { if(BusyC) lcd_wait()。 DATAPORT=WCLCM。 LCM_RS=0。 // 选中指令寄存器 LCM_RW=0。 LCM_RW=0。 // 写模式 LCM_EN=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 LCM_EN=0。 } /**********写数据到 LCM子函数 ************/ void WriteDataLCM(uchar WDLCM) { lcd_wait( )。 //检测忙信号 DATAPORT=WDLCM。 LCM_RS=1。 // 选中数据寄存器 LCM_RW=0。 // 写模式 LCM_EN=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 LCM_EN=0。 } /***********lcm内部等待函数 *************/ void lcd_wait(void) { DATAPORT=0xff。 //读 LCD 前若单片机输出低电平 ,而读出 LCD 为高电平 ,则冲突 ,Proteus仿真会有显示逻辑黄色 LCM_EN=1。 LCM_RS=0。 LCM_RW=0。 LCM_RW=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 while(DATAPORTamp。 BUSY) { LCM_EN=0。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 LCM_EN=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 } LCM_EN=0。 } /**********LCM初始化子函数 ***********/ void initLCM( ) { LCM_EN=0。 DATAPORT=0。 delay(15)。 WriteCommandLCM(0x38,0)。 //三次显示模式设置,不检测忙信号 delay(5)。 WriteCommandLCM(0x38,0)。 delay(5)。 WriteCommandLCM(0x38,0)。 delay(5)。 WriteCommandLCM(0x38,1)。 //8bit数据传送, 2行显。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。