第一范文网 - 专业文章范例文档资料分享平台

基于单片机的多路数据采集系统设计毕业论文

来源:用户分享 时间:2025/6/3 14:24:22 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

sbit smgk=P2^7; uchar Pre_KeyNo=16,KeyNo=16; uchar code LEDData[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07, 0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79, 0X71} /*****延时子程序*****/ void Delay(uint x) { uchar i; while(x--) for(i=0;i<120;i++); } /**************LED显示子程序***************/ void Display_Result(int d) { smgk=1; P0=0X7C; smgd=1; P0=LEDData[d/100]; //显示百位 Delay(5); smgd=0; smgk=0; smgk=1; P0=0X7D; smgd=1; P0=LEDData[d/10]; //显示十位 Delay(5); smgd=0; smgk=0; P0=0x7E; smgd=1; P0=LEDData[d]; //显示个位 Delay(5); smgk=0; smgd=0; smgk=1; P0=0X7C; smgd=1; P0=0x80; //显示小数点 Delay(5); smgd=0; smgk=0; } /************键盘扫描子程序**************/ 37 void Keys_Scan() { uchar Tmp,An; P3=0XF0; //低四位置1,放入4行 Delay(1); An=P3^0XF0; //按键后11110000将变成XXXX0000,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1 Tmp=An>>4; //该表达式将高4位移到低四位 swith(Tmp) //判断按键发生在哪列 { case 1:KeyNo=0;break; case 2:KeyNo=1;break; case 4:KeyNo=2;break; case 8:KeyNo=3;break; default: KeyNo=16; //无键按下 } P3=0X0F; //高4位置0,放入4列 Delay(1); Tmp=P3^0xF0; // 按键后00001111将变成0000XXXX,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1 switch(Tmp) //0—3行分别附加起始值0,4,8,12 { case 1:KeyNo+=0;break; case 2:KeyNo+=4;break; case 4:KeyNo+=8;break; case 8:KeyNo+=12;break; } } /********向串口发送数据子程序*********/ void putc_to_serialport(uchar C) { SBUF=C; while(T1==0); TI=0; } 38 Display() { smgK=1; P1=0X01; Smgd=1; P0=OXOF; } /*******主程序*******/ void main() { P0=0x00; SCON=0x50; //串口工作于方式1 TMOD=0x20; //T1工作于模式2 PCON=0x00; //波特率不加倍 TH1=0xFD; //波特率为9600 TL1=0xFD; TI=RI=0; TR1=1; //启动定时器1 IE=0x90; //允许串口中断 while(1) { Delay(100); if(P3!=0X0F) Keys_Scan(); swith(KeyNo) { case 0:putc_to_serialport(0X00); break; case 1:putc_to_serialport(0XF8); break; case 2:putc_to_serialport(0XF9); break; case 3:putc_to_serialport(0XFA); break; case 4:putc_to_serialport(0XFB); break; case 5:putc_to_serialport(0XFC); break; case 6:putc_to_serialport(0XFD); break; case 7:putc_to_serialport(0XFE); break; case 8:putc_to_serialport(0XFF); break; case 16:Display() 39 } } } /*******主机串口接受中断函数*********/ void Serial_INT() interrupt 4 { if(RI) { int i,j,m; long int n; uchar c; c=SBUF; i=c*0x05; j=i*0x10; n=j*0x10; m=n/0xFF; Display_Result(m); } 从机部分程序 # include #define uchar unsigned char #define uint unsigned int sbit ST=P3^2; sbit EOC=P3^6; sbit OE=P3^7; void Delay(uint x) { uchar i; while(x--) for(i=0;i<120;i++); } /********向串口发送数据子程序********/ void putc_to_SerialPort(uchar c) { SBUF=c; while(TI==0);TI=0; } /*********A/D转换子程序*********/ void Adcon() { int j,m=0XF8; uchar n; 40

基于单片机的多路数据采集系统设计毕业论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c82qrv0wrvr0a0pl1tz3z_11.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top