教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 资格考试 >

电子系统综合设计报告(包括完整代码)(2)

来源:网络收集 时间:2026-09-11
导读: 电视机预警系统,基于stc89c52rc单片机 }while(icomm_byte_count); } void rest_isd_comm_ptr(void) //复位 { isd_comm_ptr=ISD_COMM_RAM; back_data_ptr=ISD_COMM_RAM_C; } uchar T_R_comm_byte( uchar comm_data )

电视机预警系统,基于stc89c52rc单片机

}while(i<comm_byte_count); }

void rest_isd_comm_ptr(void) //复位 { isd_comm_ptr=ISD_COMM_RAM; back_data_ptr=ISD_COMM_RAM_C; }

uchar T_R_comm_byte( uchar comm_data ) {

uchar bit_nuber; uchar temp; bit_nuber=0; temp=0; do{ ISD_SCLK=0; delay(1); if((comm_data>>bit_nuber&0x01)!=0) {ISD_MOSI=1;} else {ISD_MOSI=0;} if(ISD_MISO) {temp=(temp>>1)|0x80;} else {temp=temp>>1;} ISD_SCLK=1; delay(1); }while(++bit_nuber<=7); ISD_MOSI=0; return (temp); }

void delay_isd(uint time) //延迟函数 { while(time--!=0); }

void delay(int x) { uchar i; for(; x>=1; x--) {for(;i<=20;i++);}

电视机预警系统,基于stc89c52rc单片机

}

void spi_pu (void) //器件上电 { ISD_SS=0;

isd1700_Npar_comm(ISD1700_PU,2); ISD_SS=1; }

void spi_pd(void) //器件下电 { ISD_SS=0;

isd1700_Npar_comm(ISD1700_PD,2); ISD_SS=1; }

4) 其他代码:

#include <reg52.h> //包括一个52标准内核的头文件 #include "ISD1700.H" #include "sound.h"

#define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long

//********管脚定义

sbit Trig = P3^3; //产生脉冲引脚 sbit Echo = P3^2; //回波引脚 sbit test = P1^1; //测试用引脚

sbit wela=P2^7; //数码管位选和片选 sbit dual=P2^6;

sbit ISD_SS=P0^7; //ISD1700芯片四个引脚 sbit ISD_MISO=P0^4; sbit ISD_MOSI=P0^5; sbit ISD_SCLK=P0^6;

//********变量定义

uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管0-9 uint distance[4]; //测距接收缓冲区

uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i,k; //自定义寄存器 bit succeed_flag; //测量成功标志 uint b; //b定义为全局变量 bit re_fig,playflg;

电视机预警系统,基于stc89c52rc单片机

uchar data ISD_COMM_RAM[7]; uchar data ISD_COMM_RAM_C[7]; uchar data *isd_comm_ptr; uchar data *back_data_ptr;

//********函数声明

void conversion(uint temp_data); void delay_20us();

void delay_ms(unsigned int time); void voice();

void isd1700_Npar_comm (uchar comm_par,comm_byte_count); void init(void);

void spi_play(void);

void rest_isd_comm_ptr(void);

uchar T_R_comm_byte( uchar comm_data ); void delay_isd(uint time); void delay(int x); void spi_pu (void); void yuyin(void); void spi_pd(void);

主函数代码:

void main(void) // 主程序 { uint distance_data,a; uchar CONT_1; i=0; k=0; flag=0; Trig=0; //首先拉低脉冲输入引脚 TMOD=0x11; //定时器0,定时器1,16位工作方式 TR0=1; //启动定时器0

IT0=0; //由高电平变低电平,触发外部中断 ET0=1; //打开定时器0中断 EX0=0; //关闭外部中断 EA=1; //打开总中断0

while(1) //程序循环 { EA=0; Trig=1;

delay_20us();

Trig=0; //产生一个20us的脉冲,在Trig引脚 while(Echo==0); //等待Echo回波引脚变高电平

电视机预警系统,基于stc89c52rc单片机

succeed_flag=0; //清测量成功标志 EX0=1; //打开外部中断 TH1=0; //定时器1清零 TL1=0; //定时器1清零 TF1=0; //

TR1=1; //启动定时器1 EA=1; while(TH1 < 30) //等待测量的结果,周期65.535毫秒(可用中断实现) { if(TH1==0xff) { TR1=0; k++; } } TR1=0; //关闭定时器1 EX0=0; //关闭外部中断 if(succeed_flag==1) { distance_data=outcomeH; //测量结果的高8位 distance_data<<=8; //放入16位的高8位 distance_data=distance_data|outcomeL;//与低8位合并成为16位结果数据 distance_data=distance_data+k;

distance_data/=58; //微秒的单位除以58等于厘米 } //Y米=(X秒*344)/2 if(succeed_flag==0) {

distance_data=0; //没有回波则清零 test = !test; //测试灯变化 } a=distance_data;

if(b==a) CONT_1=0; if(b!=a) CONT_1++; if(CONT_1>=3) { CONT_1=0; b=a; conversion(b); } } }

…… 此处隐藏:1016字,全部文档内容请下载后查看。喜欢就下载吧 ……
电子系统综合设计报告(包括完整代码)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/95279.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)