#include \#include \//接口定义
sbit SDO = P3^0;//数据输出口 sbit ADD = P3^1;//通道选择 sbit CS = P3^4;//启动
sbit CLK = P3^5;//时钟时序 void delay(unsigned char t) {
while(t--); }
//读AD中的数据
unsigned int get_data(unsigned char ADDR) {
unsigned char i; unsigned int temp=0; ADDR <<= 4;//4有效地址左对齐 CLK = 0; CS=1; CS = 0; delay(1);
for (i=0;i<10;i++) { temp <<= 1; ADD=(bit)(ADDR&0X80); CLK = 1; SDO=1; temp =temp^SDO; CLK = 0; ADDR <<= 1; } delay(1); CS=1;
return(temp); }
sbit CS6264= P1^0;// sbit CS8155= P2^7;// sbit key= P3^3;// //相关变量 uint p;
uchar bz=0; uint fb=1; //主程序
21
void main() {
uint x=0x3F00; //延时
_delay_us(10); _delay_ms(10); COM8155=0x03; //初始化8155 for(;x<=0x3fff;x++)XBYTE[x]=0x00; //RAM初始化 x=0x3F00; //开机显示 lcd1602_init();
LCD1602_string(1,1,\ LCD1602_string(1,1,\ LCD1602_string(1,1,\ \ lcd1602_adr(0x48); lcd1602_writenumber('2'); lcd1602_writenumber('0'); lcd1602_writenumber('h'); lcd1602_writenumber('z'); lcd1602_writenumber(' '); lcd1602_writenumber('5'); lcd1602_writenumber('v'); //使能中断 EA=1; CS6264=0; while(1) { //采集 if(bz==0) { CS6264=1;CS8155=1;_nop_();_nop_();_nop_();
XBYTE[p]=get_data(0)/4;CS6264=0;CS8155=1;_nop_();_nop_();_nop_(); lcd1602_adr(0x40); lcd1602_writenumber(0x30+(XBYTE[p]*10/51)0/10); lcd1602_writenumber('.'); lcd1602_writenumber(0x30+(XBYTE[p]*10/51)); lcd1602_writenumber('v'); p=(p+1)%5; _delay_us(20); } //连续 if(bz==1) {
22
CS6264=1;CS8155=1;_nop_();_nop_();_nop_();
WriteDAC(XBYTE[p]/fb);CS6264=0;CS8155=0;_nop_();_nop_();_nop_(); lcd1602_adr(0x40); lcd1602_writenumber(0x30+(XBYTE[p]*10/51)0/10); lcd1602_writenumber('.'); lcd1602_writenumber(0x30+(XBYTE[p]*10/51)); lcd1602_writenumber('v'); p=(p+1)%5; _delay_us(5); } //手动 if(bz==2) { CS6264=1;CS8155=1;_nop_();_nop_();_nop_();
WriteDAC(XBYTE[p]/fb);CS6264=0;CS8155=0;_nop_();_nop_();_nop_(); lcd1602_adr(0x40); lcd1602_writenumber(0x30+(XBYTE[p]*10/51)0/10); lcd1602_writenumber('.'); lcd1602_writenumber(0x30+(XBYTE[p]*10/51)); lcd1602_writenumber('v'); if(key==0)p=(p+1)%5; _delay_us(10); }
keyscan(); //显示
if(keynum==1) {bz=0;if(bz==0)LCD1602_string(1,1,\\ if(keynum==2) {bz=1;if(bz==1)LCD1602_string(1,1,\\
if((key==0)&&(bz!=2)) {bz=2;if(bz==2)LCD1602_string(1,1,\bu \ } }
23
moshi hui fang hui fang
第四部分 实验测试结果
1.正弦采集
2.正弦单步
3.正弦连续
24
4.正弦储存成功
5.方波采集
6.方波单步
25