




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州科技学院 电子与信息工程学院 智能仪器实验报告 班班 级级: : 电电子子 0911 姓姓 名:名: 学学 号:号: 2012 年年 6 月月 实验一实验一 显示实验显示实验 说明:所有实验都是根据 CT107D 实验板的原理图来仿真的 程序: #include #include #define uchar unsigned char #define uint unsigned int #define rst573 P2 sbit P06=P06; sbit P04=P04; sbit S7=P30; sbit S6=P31; uchar table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f; /共阳极编码 void delaynms(uint ms) /秒延迟程序 uint x,y; for(x=ms;x;x-) for(y=110;y;y-); void init107() rst573; P36=0; /led P0=0xff; ledY4C; rst573; /bee P04=0; P06=0; beeY5C; rst573; /smg P0=0x00; smgY6C; rst573; void disp1(uint num1) / 数码管显示程序 uint qian,bai,shi,ge; qian=num1/1000; /千,百,十,个 处理 bai=num1/100%10; shi=num1/10%10; ge=num1%10; smgY6C; P0=0xfe; rst573; smgY7C; P0=tableqian; rst573; delaynms(2); smgY6C; P0=0xfd; rst573; P0=tablebai; smgY7C; rst573; delaynms(2); P0=0xfb; smgY6C; rst573; P0=tableshi; smgY7C; rst573; delaynms(2); P0=0xf7; smgY6C; rst573; P0=tablege; smgY7C; rst573; delaynms(2); 第 2 页 void disp2(uint num2) /数码管显示程序 uint qian,bai,shi,ge; qian=num2/1000; /千,百,十,个 处理 bai=num2/100%10; shi=num2/10%10; ge=num2%10; smgY6C; P0=0xef; rst573; smgY7C; P0=tableqian; rst573; delaynms(2); smgY6C; P0=0xdf; rst573; P0=tablebai; smgY7C; rst573; delaynms(2); P0=0xbf; smgY6C; rst573; P0=tableshi; smgY7C; rst573; delaynms(2); P0=0x7f; smgY6C; rst573; P0=tablege; smgY7C; rst573; delaynms(2); void main() uint a=2233,b=6688; init107(); while(1) disp1(a); disp2(b); 仿真图: 实验二实验二 A/DA/D 转换实验转换实验 程序: #include #include #define uchar unsigned char #define uint unsigned int #define delay5nop(); _nop_();_nop_();_nop_();_nop_();_nop_(); #define delay2nop(); _nop_();_nop_(); #define rst573 P2 sbit P06=P06; sbit P04=P04; sbit S7=P30; sbit S6=P31; sbit IICCLK=P20; sbit IICDAT=P21; sbit relay=P04; sbit buzz=P06; uchar dy3; uint dis3; uchar table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x 7f,0x6f; /共阳编码 void ULN2003_Latch(void) / ULN2003 锁存子程 序 P2 /清 P2.7P2.5 P2 |= 0xa0;/P2.7P2.5=101,Y5=0,Y5C=1,即 U9 的 LE=1,数据选通 _nop_(); P2 /P2.7P2.5=000,Y5=1,Y5C=0,即 U9 的 LE=0,数据被锁存 void iicstart() /启动 i2c IICDAT=1; IICCLK=1; delay5nop(); IICDAT=0; delay5nop(); IICCLK=0; void iicstop() /停止 i2c IICDAT=0; IICCLK=1; delay5nop(); IICDAT=1; delay5nop(); IICCLK=0; void ack() / 发送应答信号 ACK IICDAT=0; IICCLK=1; delay5nop(); IICCLK=0; void noack() /不发送 ACK IICDAT=1; IICCLK=1; delay5nop(); IICCLK=0; void iicInt() / IICCLK=0; iicstop(); void iicWrite(uchar y) /向 PCF8591 写一个字节 uchar i; for(i=0;i0;i-) for(j=60;j0;j-);/ (60*2)+1)+2)*8+1 void delaynms(uint x) /纳秒延迟 while(x-) delayms(); void display(uchar y) dis0=y/100; /下 面这三个分离是把从通道读取到的数值转换为电 第 4 页 压 dis1=y%100/10; /想一下 5V 为 255 那么 1v 是不是代表 51 dis2=y%10; /1.8v 是不是数值 92 void ADCPCF8591(uchar controlbyte) uchar i=0; iicstart(); iicWrite(0x90); noack(); iicWrite(controlbyte); noack(); iicstart(); iicWrite(0x91); noack(); iicRead(); ack(); while(i #include #define uchar unsigned char #define uint unsigned int #define delay5nop(); _nop_();_nop_();_nop_();_nop_();_nop_(); #define delay2nop(); _nop_();_nop_(); #define rst573 P2 sbit P06=P06; sbit P04=P04; sbit S7=P30; sbit S6=P31; sbit IICCLK=P20; sbit IICDAT=P21; uchar dy3; uint dis3; uchar table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x 7f,0x6f; /共阳编码 void iicstart() /启动 i2c IICDAT=1; IICCLK=1; delay5nop(); IICDAT=0; delay5nop(); IICCLK=0; void iicstop() /停止 i2c IICDAT=0; IICCLK=1; delay5nop(); IICDAT=1; delay5nop(); IICCLK=0; void ack() / 发送应答信号 ACK IICDAT=0; IICCLK=1; delay5nop(); IICCLK=0; void noack() /不发送 ACK IICDAT=1; IICCLK=1; delay5nop(); IICCLK=0; void iicInt() / IICCLK=0; iicstop(); void iicWrite(uchar y) /向 PCF8591 写一个字节 uchar i; for(i=0;i0;i-) for(j=60;j0;j-);/ (60*2)+1)+2)*8+1 void delaynms(uint x) /纳秒延迟 while(x-) delayms(); void display(uchar y) dis0=y/51; /下面 这三个分离是把从通道读取到的数值转换为电压 dis1=(y%51)*10/51; /想一 下 5V 为 255 那么 1v 是不是代表 51 dis2=(y%51)*10%51)*10/51; /1.8v 是不是数值 92 void ADCPCF8591(uchar controlbyte) uchar i=0; iicstart(); iicWrite(0x90); noack(); iicWrite(controlbyte); noack(); iicstart(); iicWrite(0x91); noack(); iicRead(); ack(); while(i #include #define uint unsigned int #define uchar unsigned char sbit DQ = P14; sbit S7=P30; sbit S6=P31; sbit relay=P04; sbit buzz=P06; unsigned char code DuanMa=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0 x80,0x90,0xbf,0xff,0xf7;/共阳 unsigned char code WeiMa=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; /分别对应相应的数码管点亮,即位码 #define DataPort P0 /定义数据端口 程序中遇到 DataPort 则用 P0 替换 uchar disData=11,11,11,11,11,11,11,11; uchar times=0; uchar temperature; uint read_value; uchar temp_integer,temp_decimal; bit OneSecFlag=0; void delay2us(unsigned char t)/2us while(t-); void ULN2003_Latch(void) / ULN2003 锁存子程 序 P2 /清 P2.7P2.5 P2 |= 0xa0;/P2.7P2.5=101,Y5=0,Y5C=1,即 U9 的 LE=1,数据选通 _nop_(); P2 /P2.7P2.5=000,Y5=1,Y5C=0,即 U9 的 LE=0,数据被锁存 /DS18B20 初始化函数 bit init_ds18b20(void) bit initflag = 0; DQ = 1; delay2us(1); DQ = 0; delay2us(250); / 延时大于 480us DQ = 1; delay2us(10); / 15us0;t-) for(j=19;j0;j-) ; void display(uchar *point,uchar dot) unsigned char i=0; for(i=0;i= 1; delay2us(5); /通过单总线从从器件读一个字节 unsigned char ReadOneChar(void) unsigned char i; unsigned char byt; for(i=0;i= 1; DQ = 1; /单片机释放总线 if(DQ) /18b20 有效数据出现 byt |= 0x80; delay2us(30); return byt; /温度转换、读取及数据处理器函数 unsigned int rd_temperature(void) unsigned char low,high; unsigned int temp; init_ds18b20(); WriteOneChar(0xCC); WriteOneChar(0x44); /启动温度转换 init_ds18b20(); WriteOneChar(0xCC); WriteOneChar(0xBE); /读取寄存器 low = ReadOneChar(); /低字节 high = ReadOneChar(); /高字节 temp = high 0xf800)/若是负数,对读取值 作处理 disData3=10;/显示数组中第 10 个是 显示“-” read_value = read_value;/取反 read_value +=1;/加 1 else disData3=11;/显示数组中第 11 个是消 隐 /整数、小数分布分离 temp_integer = (read_value temp_decimal = (read_value /整数部分处理 /因为 18b20 的测温范围是-1085C,没有必 要用百位 disData4=temp_integer/10; /取整数的 十位 disData5=temp_integer%10; /取整数的 个位 /小数部分处理 /0.ABCD,保留两位小数,需*100=AB.CD,取 AB 即可 /小数部分=(00001111)*0.0625,保留 2 位小 数,放大 100 倍 /小数部分=(00001111)*6.25 /可以变成=(00001111)*25/4 disData6=temp_decimal*25/4/10;/取小数 的高位 disData7=temp_decimal*25/4%10;/取小数 的次高位 OneSecFlag = 0; TR0=1; /开中断,开始计时 while(S6=0) /暂停 if(S6!=0) TR0=0; void Timer0_isr(void) interrupt 1 using 1 TH0=(65536-10000)/256; TL0=(65536-10000)%256; times+; display(disData,5);/中断扫描数码管显示,也可以 放在 while(1)中 if(times = 100)/1s OneSecFlag = 1; times=0; 第 10 页 自动售水系统大作业自动售水系统大作业 程序: #include #include #define uchar unsigned char #define uint unsigned int #define delay5nop(); _nop_();_nop_();_nop_();_nop_();_nop_(); #define delay2nop(); _nop_();_nop_(); #define rst573 P2 sbit IICDAT=P21; sbit P36=P36; sbit P06=P06; sbit P04=P04; sbit S7=P30; sbit S6=P31; uint t1,t2,t3,t4,m; uchar dy3; uint dis3; uchar table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x 7f,0x6f; /共阴编码 uchar table1=0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff,0xff,0xff,0xff,0xff; void display(uchar y) dis0=y/33; void delaynms(uint ms) /延迟 uint x,y; for(x=ms;x;x-) for(y=110;y;y-); /* i2c 定义模块 */ void iicstart() /启动 i2c IICDAT=1; IICCLK=1; delay5nop(); IICDAT=0; delay5nop(); IICCLK=0; void iicstop() /停止 i2c IICDAT=0; IICCLK=1; delay5nop(); IICDAT=1; delay5nop(); IICCLK=0; void ack() / 发送应答信号 ACK IICDAT=0; IICCLK=1; delay5nop(); IICCLK=0; void noack() /不发送 ACK IICDAT=1; IICCLK=1; delay5nop(); IICCLK=0; void iicInt() / IICCLK=0; iicstop(); void iicWrite(uchar y) /向 PCF8591 写一个字节 uchar i; for(i=0;i8;i+) IICDAT=(bit)(y IICCLK=1; delay2nop(); IICCLK=0; y=y1; uchar iicRead() /从 IIC 设备读出一个字节 uchar y=0,i; IICDAT=1; for(i=0;i8;i+) y=y1; IICCLK=1; delay2nop(); y=y|(uchar)(IICDAT); IICCLK=0; return y; void ADCPCF8591(uchar controlbyte) /PCF8591 方式控制字 uchar i=0; iicstart(); iicWrite(0x90); noack(); iicWrite(controlbyte); noack(); iicstart(); iicWrite(0x91); noack(); iicRead(); ack(); while(i2) dyi+=iicRead(); ack(); dyi=iicRead(); noack(); iicstop(); delaynms(1); void zhuanhuan() iicInt(); ADCPCF8591(0x04); display(dy1); P0=table1dis0; ledY4C; rst573; /* 38 译码器选通模块 */ void init107() rst573; P36=0; /led P0=0xff; ledY4C; rst573; /bee P04=0; P06=0; beeY5C; rst573; /smg P0=0x00; smgY6C; rst573; /* * 显示模块 * */ void smg_fei(uint num1) /显示单价 uint bai,shi,ge; bai=num1/100; shi=num1/10%10; ge=num1%10; P0=0xfd; smgY6C; rst573; P0=tablebai|0x80; smgY7C; rst573; delaynms(2); P0=0xfb; smgY6C; rst573; P0=tableshi; smgY7C; rst573; delaynms(2); P0=0xf7; smgY6C; rst573; P0=tablege; smgY7C; rst573; delaynms(2); void smg_shui() /显示水的容量 smgY6C; P0=0xef; rst573; smgY7C; P0=tablet4; rst573; delaynms(2); P0=0xdf; smgY6C; rst573; P0=tablet3|0x80; smgY7C; rst573; delaynms(2); P0=0xbf; smgY6C; rst573; P0=tablet2; smgY7C; rst573; delaynms(2); P0=0x7f; smg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工程项目管理战略思维试题及答案
- 2025年市政工程考试模拟试卷及试题及答案
- 行政管理与经济法的重要性试题及答案
- 公共关系的外部环境分析试题及答案
- 经济师考试多选题解析试题及答案
- 工程资源配置的基本原则与策略试题及答案
- 2024水利水电工程考试难点试题及答案
- 2025年市政工程安全教育试题及答案
- 市政工程方案评审试题及答案
- 2025市政工程工程量计算试题及答案
- 2024公需科目:数字经济与创新驱动发展题库
- 汽车租赁价格动态调整策略研究
- 物流合伙人合同协议书
- 湖北省武汉市江汉区2023-2024学年七年级下学期期末数学试题
- DZ∕T 0270-2014 地下水监测井建设规范
- 2024年重庆市初中学业水平考试地理试卷试题真题(含答案详解)
- 黑龙江省哈尔滨市德强学校2023-2024学年六年级(五四学制)下学期期中语文试题
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 2024年四川省南充市中考地理试卷真题(含官方答案)
- 冀人版科学六年级下册全册同步练习
- 科普知识小学生飞机科普知识
评论
0/150
提交评论