欢迎来到天天文库
浏览记录
ID:51186412
大小:29.00 KB
页数:2页
时间:2020-03-20
《项目三 模拟量输入输出通道接口设计图3_38程序.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、(1)方案1(图3.38)的程序设计#include#defineucharunsignedchar#defineuintunsignedint/***对所用到的I/O口进行定义,以便于更改硬件时修改程序*****/#definekey_inP1#definedac0832_data_inP2sbitdac0832_cs=P3^0;uchardac_data=0;/***12MHz晶振时,延时i毫秒的延时子函数*****/voiddelay(uinti){uintj,k;for(k=0;k2、***键盘扫描子函数*****/ucharkey_scan(){ucharkey_value;key_in=0xff;//I/O作为输入口,在读取数据前需向相应的锁存器写入1if((key_in&0x03)!=0x03)//如果有键按下{delay(10);//延时10mskey_value=key_in;//再次读取按键状态if((key_in&0x03)!=0x03)//如果还是有键按下{while((key_in&0x03)!=0x03);//等待按键释放key_value=key_value&0x03;//以下程序判断是哪个按键按下if(key_valu3、e==0x02)//如果是“+”键按下,函数返回0return0;else//如果是“-”键按下,函数返回1return1;}else//无键按下,函数返回0xffreturn0xff;}else//无键按下,函数返回0xffreturn0xff;}/*****DAC0832的转换子函数******/voiddac0832_dac(uchardatain){dac0832_data_in=datain;//给DAC0832输入需转换的数字量dac0832_cs=0;//使能DAC0832}/***主函数*****/voidmain(){ucharkeystate4、s;while(1){keystates=key_scan();//读取键盘值if(keystates==0)//如果按下“+”键{if(dac_data!=110)//数字量在0~110范围内加1dac_data++;}if(keystates==1)//如果按下“-”键{if(dac_data!=0)//数字量在0~110范围内减1dac_data--;}dac0832_dac(dac_data);//调用D/A转换子函数}}
2、***键盘扫描子函数*****/ucharkey_scan(){ucharkey_value;key_in=0xff;//I/O作为输入口,在读取数据前需向相应的锁存器写入1if((key_in&0x03)!=0x03)//如果有键按下{delay(10);//延时10mskey_value=key_in;//再次读取按键状态if((key_in&0x03)!=0x03)//如果还是有键按下{while((key_in&0x03)!=0x03);//等待按键释放key_value=key_value&0x03;//以下程序判断是哪个按键按下if(key_valu
3、e==0x02)//如果是“+”键按下,函数返回0return0;else//如果是“-”键按下,函数返回1return1;}else//无键按下,函数返回0xffreturn0xff;}else//无键按下,函数返回0xffreturn0xff;}/*****DAC0832的转换子函数******/voiddac0832_dac(uchardatain){dac0832_data_in=datain;//给DAC0832输入需转换的数字量dac0832_cs=0;//使能DAC0832}/***主函数*****/voidmain(){ucharkeystate
4、s;while(1){keystates=key_scan();//读取键盘值if(keystates==0)//如果按下“+”键{if(dac_data!=110)//数字量在0~110范围内加1dac_data++;}if(keystates==1)//如果按下“-”键{if(dac_data!=0)//数字量在0~110范围内减1dac_data--;}dac0832_dac(dac_data);//调用D/A转换子函数}}
此文档下载收益归作者所有