完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是采用AD574A AT89C52单片机 19264液晶屏 来实现输入信号波形显示。KEIL测试通过,但是有3个warning,proteus仿真不成功 请问前辈们,程序错在了哪里。单片机完全没有运行的反应#include
#include sfr AUXR=0x8e ; /*允许读写STC89C52RD+片内扩展RAM*/ sfr AUXR1=0xa2 ; char xdata caiyangdata[200] ; /*采样值存储变量,数组,相邻两 个存储一个12位的采样值, 前为高8位,后为低四位*/ char xdata Vin[100]; /*采样点处输入信号的电压值*/ int gao4,zhong4,di4,di8; float dv; int COM,DAT; /*COM为液晶显示的代码入口地址, DAT为数据入口地址*/ int b,n,p,d; int i,j; ***it C3=P2^5; /*右屏片选*/ ***it C2=P2^4; /*中屏片选*/ ***it C1=P2^3; /*左屏片选*/ ***it E=P2^2; /*使能信号线*/ ***it RW=P2^1; /*读写信号线*/ ***it RS=P2^0; /*寄存器选择信号线*/ ***it CS=P2^7; ***it A0=P2^6; ***it RC=P3^4; ***it CEWR=P3^6; ***it CERD=P3^7; void chushiint0() ; /*初始化INT0程序*/ void caiyang(); /*采样子程序*/ void zhongduanint0(); /*INT0中断服务程序*/ void AD574A(); /*启动AD574A*/ void gao4ANDdi8(); /*采样值高四位和低八位分离子程序*/ void DAC(); /*数字值到模拟值转换 */ void yejingxianshi(); /*液晶显示子程序*/ void chushiyejing(); /*液晶显示初始设置子程序*/ void wrtDDRAM(); void prcode(); /*写指令代码子程序*/ void prcwdata(); /*写显示数据子程序*/ void prcrdata(); /*读显示数据子程序*/ void pbusy(); /*判忙子程序*/ void main() { chushiint0(); /*调用初始化INT0程序*/ AD574A(); /*启动AD574A*/ caiyang(); /*调采样子程序*/ gao4ANDdi8(); /*采样值高四位和低八位分 离子程序,数字值到模拟值转换*/ yejingxianshi(); /*调液晶显示程序*/ } void chushiint0() { IT0=1; EX0=1; EA=1; } /*ad启动*/ void AD574A() { AUXR=0X01; CEWR=0; CERD=0; CS=0; A0=0; RC=0; } /*ad采样*/ void caiyang() { for(i;i<200;) { if(IE0==1) /*采用中断查询方式*/ { zhongduanint0(); } } } /*ad读取AD采样值*/ void int0_int() interrupt 0 using 1 { CEWR=0; /*读取A/D转换值高8位*/ CERD=0; CS=0; A0=0; RC=1; caiyangdata=P0; i++; CEWR=0; /*读取A/D转换值高4位*/ CERD=0; CS=0; A0=1; RC=1; caiyangdata=P0; /*读取低4位*/ i++; } void gao4ANDdi8() /*采样值高四位和低八位分离子程序*/ { for(i=0,j=0;i<200,j<100;i+2,j++) { gao4= caiyangdata&0xf0; gao4=gao4 >> 4; zhong4=caiyangdata&0x0f; zhong4=zhong4 << 4; di4=caiyangdata[i+1] >> 4; di8=zhong4+di4; DAC(); } } void DAC() /*数字值到模拟值转换 */ { int VFS=10; Vin[j]=((gao4*256+di8)/2048-1)*VFS/2 ; } void yejingxianshi() /*调液晶显示程序*/ { chushiyejing(); for(j=0;j<100;j++) { dv=5.0/60.0; /*相邻两行的电压差*/ n=62-Vin[j]/dv; /*显示点所在行数*/ p=n/8; /*显示点所在页数*/ b=n%8; /*显示点在第P页的第J个单元的第B位*/ d=1; /*第P页第J个单元的值*/ i=B; for(i;i>0;i--) { d*=2; } wrtDDRAM(); } } void chushiyejing() /*液晶显示设置*/ { C1=1; /*左区设置*/ C2=0; C3=0; COM=0xc0; /*设置显示起始行为第一行*/ prcode(); COM=0x3f; /*开显示设置*/ prcode(); COM=0x40; /*列地址设置为0*/ prcode(); C1=0; /*中区设置*/ C2=1; C3=0; COM=0xc0; prcode(); COM=0x3f; prcode(); COM=0x40; prcode(); } void wrtDDRAM() { if(j<64) { C1=1; /*左区显示数据写入*/ C2=0; C3=0; COM=P||0xb8 ; /*或页面地址*/ prcode(); DAT=d; prcwdata(); /*写入待显示数据*/ } else if((j>64)&&(j<100)) { C1=0; /*右区显示数据写入*/ C2=1; C3=0; COM=P||0xb8; /*或页面地址*/ prcode(); DAT=d; prcwdata(); /*写入待显示数据*/ } } void prcode() /*写指令代码子程序*/ { pbusy(); RW=0; P1=COM; /*写指令代码*/ E=1; E=0; } void prcwdata() /*写显示数据子程序*/ { pbusy(); RS=1; RW=0; P1=DAT; E=1; E=0; } void prcrdata() /*读显示数据子程序*/ { pbusy(); RS=1; P1=0xff; E=1; DAT=P1; E=0; } void pbusy() {RW=1; while(ACC^7) /*判“忙“标志为0否,否再读*/ { P1=0xff; E=1; ACC=P1; E=0; } }
|
|
相关推荐
1个回答
|
|
本帖最后由 Nyx影 于 2017-5-12 09:07 编辑
/*ad读取AD采样值*/ void int0_int() interrupt 0 using 1 { CEWR=0; /*读取A/D转换值高8位*/ CERD=0; CS=0; A0=0; RC=1; caiyangdata =P0; i++; CEWR=0; /*读取A/D转换值高4位*/ CERD=0; CS=0; A0=1; RC=1; caiyangdata=P0; /*读取低4位*/ i++; } void gao4ANDdi8() /*采样值高四位和低八位分离子程序*/ { for(i=0,j=0;i<200,j<100;i+2,j++) { gao4= caiyangdata &0xf0; gao4=gao4 >> 4; zhong4=caiyangdata &0x0f; zhong4=zhong4 << 4; di4=caiyangdata[i+1] >> 4; di8=zhong4+di4; DAC(); } } caiyangdata 后面有 [ i ] 新人不知为何变成了斜体并没有了 i |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
494 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1050 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1151 浏览 0 评论
887 浏览 0 评论
928 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11842 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 12:52 , Processed in 0.426592 second(s), Total 42, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号