附录
P2=0xFD;//显示十位 P0=TAB[B4]; delay(A); P2=0xFB;//显示百位 P0=TAB[B3]; delay(A); P2=0xF7;//显示千位 P0=TAB[B2]; delay(A); P2=0xEF;//显示万位 P0=TAB[B1]; delay(A); } }
void main(){ P0=TAB[0];//刚开始显示00000 P2=0xC0; TMOD=0x51;//T0 记时 T1计数 TH0=0x3c;//定时50ms TL0=0xB0; TH1=0x00;//计数 TL1=0x00; TR0=1; //开T0 TR1=1;//开T1 ET0=1;//开中断 EA=1;//打开总中断 while(1){ if(num>=20){//记满一秒 num=0; TR1=0; TR0=0; Display(); } if(P37==1) break; } }
43
西安交通大学城市学院本科生毕业设计(论文)
附录五:波形显示系统程序清单
#include
sfr AUXR=0x8e ; /*允许读写STC89C58RD+片内扩展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;
sbit CS3=P2^5; /*右屏片选*/ sbit CS2=P2^4; /*中屏片选*/ sbit CS1=P2^3; /*左屏片选*/ sbit E=P2^2; /*使能信号线*/ sbit RW=P2^1; /*读写信号线*/
sbit RS=P2^0; /*寄存器选择信号线*/
sbit CS=P2^7; sbit A0=P2^6; sbit RC=P3^4; sbit CEWR=P3^6; sbit CERD=P3^7;
void int0initiate() ; /*初始化INT0程序*/ void caiyang(); /*采样子程序*/ void int0serve(); /*INT0中断服务程序*/ void ad574a(); /*启动AD574A*/
void BtoD(); /*采样值高四位和低八位分离子程序*/ void DDATtoV(); /*数字值到模拟值转换 */
void wrtyejing(); /*液晶显示子程序*/
void yjinitiate(); /*液晶显示初始设置子程序*/ void wrtDDRAM();
附录
void prcode(); /*写指令代码子程序*/ void prcwdata(); /*写显示数据子程序*/ void prcrdata(); /*读显示数据子程序*/ void pbusy(); /*判忙子程序*/
void main()
{ int0initiate(); /*调用初始化INT0程序*/ ad574a(); /*启动AD574A*/ caiyang(); BtoD(); wrtyejing(); }
void int0initiate() {
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) {
int0serve(); }
/*调采样子程序*/
/*采样值高四位和低八位分 离子程序,数字值到模拟值转换*/ /*调液晶显示程序*/ /*采用中断查询方式*/
45
西安交通大学城市学院本科生毕业设计(论文)
} }
/*ad读取AD采样值*/
void int0serve(void) interrupt 0 using 1 {
CEWR=0; /*读取A/D转换值高8位*/ CERD=0; CS=0; A0=0; RC=1;
caiyangdata[i]=P0; i++;
CEWR=0; /*读取A/D转换值高4位*/ CERD=0; CS=0; A0=1; RC=1;
caiyangdata[i]=P0; /*读取低4位*/ i++;
}
void BtoD() /*采样值高四位和低八位分离子程序*/ {
for(i=0,j=0;i<200,j<100;i+2,j++) {
gao4= caiyangdata[i]&0xf0; gao4=(gao4>>4);
zhong4=caiyangdata[i]&0x0f; zhong4=zhong4<<4;
di4=caiyangdata[i+1]>>4; di8=zhong4+di4; DDATtoV();
}
}
void DDATtoV() /////////////////*数字值到模拟值转换 */ {
int VFS=10;
Vin[j]=((gao4*256+di8)/2048-1)*VFS/2 ;
相关推荐: