




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机源程序#include /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#include uchar key_can; /按键值的变量uchar menu_1; /菜单设计的变量#define max_freq 108000#define min_freq 87500/数据接收和发送地址数组uchar radio_write_data5=0x2A,0x85,0x60,0x11,0x00; /默认电台87.8 uchar radio_read_data5; /TEA5767读出的状态uchar i;uchar *ptr; /指向发送数组bit ack; /应答信号检测uchar temp_l,temp_h;/定义PLL的数值uint pll;uchar flag_value;uint value;/非关键函数申明void radio_read(void);void get_pll(void);void get_frequency(void);void auto_search(bit mode);void Initial(void); /系统初始化void Delay(uint n); /普通延时/24C04函数申明void Start_I2C(void); void Stop_I2C(void);void SendByte(uchar fdata); /*24C04子函数*/uchar RecByte(void);void Ack_I2C(bit a);bit SendStr(uchar Slave, uchar *Source, uchar Num);bit RecStr(uchar Slave,uchar *Source, uchar Num);bit flag_1s ;unsigned long frequency=88000; /频率中间变量sbit SDA = P14; sbit SCL = P15; /IIC的操作线/这三个引脚参考资料sbit rs=P10; /1602数据/命令选择引脚 H:数据 L:命令sbit rw=P11; /1602读写引脚 H:数据寄存器 L:指令寄存器sbit e =P12; /1602使能引脚 下降沿触发uchar code table_num=0123456789abcdefg;/* 名称 : delay_uint()* 功能 : 小延时。* 输入 : 无* 输出 : 无*/void delay_uint(uint q)while(q-);/* 名称 : write_com(uchar com)* 功能 : 1602命令函数* 输入 : 输入的命令值* 输出 : 无*/void write_com(uchar com)e=0;rs=0;rw=0;P0=com;delay_uint(10);e=1;delay_uint(50);e=0;/* 名称 : write_data(uchar dat)* 功能 : 1602写数据函数* 输入 : 需要写入1602的数据* 输出 : 无*/void write_data(uchar dat)e=0;rs=1;rw=0;P0=dat;delay_uint(10);e=1;delay_uint(50);e=0;/* 名称 : write_sfm2(uchar hang,uchar add,uchar date)* 功能 : 显示2位十进制数,如果要让第一行,第五个字符开始显示23 ,调用该函数如下 write_sfm1(1,5,23)* 输入 : 行,列,需要输入1602的数据* 输出 : 无*/void write_sfm2(uchar hang,uchar add,unsigned long date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/100%10);write_data(0x30+date/10%10);write_data(.);write_data(0x30+date%10);write_data(M);write_data(H);write_data(Z);write_data( ); /* 名称 : write_string(uchar hang,uchar add,uchar *p)* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示ab cd ef ,调用该函数如下 write_string(1,5,ab cd ef;)* 输入 : 行,列,需要输入1602的数据* 输出 : 无*/void write_string(uchar hang,uchar add,uchar *p)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);while(1)if(*p = 0) break;write_data(*p);p+;/* 名称 : init_1602()* 功能 : 初始化1602液晶 * 输入 : 无* 输出 : 无*/void init_1602()write_com(0x38);write_com(0x38);write_com(0x0c);write_com(0x06);delay_uint(1000);write_string(1,0, Radio Rceiver );write_string(2,0, );/*1ms延时函数*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;jmax_freq) frequency=min_freq; else frequency-=dat; if(frequencymin_freq) frequency=max_freq; get_pll(); radio_write_data0=pll/256; radio_write_data1=pll%256; radio_write_data2=0x11; radio_write_data3=0x00; radio_write();/void Delay(uint n) /延时主函数 uchar i,k; for(k=0;kn;k+) for(i=0;i200;i+);/*void Start_I2C(); 启动I2C总线,即发送I2C起始条件。*/void Start_I2C()SDA = 1; /*发送起始条件的数据信号*/_nop_();SCL = 1;_nop_();/*起始条件建立时间大于4us,延时*/_nop_();_nop_();_nop_();_nop_(); SDA = 0;/*发送起始信号*/_nop_();/*起始条件锁定时间大于4 us*/_nop_();_nop_();_nop_();_nop_(); SCL = 0;/*准备发送或接收数据*/_nop_();_nop_();/*void Stop_I2C(); 结束I2C总线,即发送I2C结束条件。*/void Stop_I2C()SDA = 0;/*发送结束条件的数据信号*/_nop_();/*发送结束条件的时钟信号*/SCL = 1;/*结束条件建立时间大于4 us*/_nop_();_nop_();_nop_();_nop_();_nop_();SDA = 1;/*发送I2C总线结束信号*/_nop_();_nop_();_nop_();_nop_();/*void SendByte(uchar data);将数据data发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作。(不应答或非应答都使ack = 0) 发送数据正常,ack=1;ack=0表示接收器无应答或损坏。*/void SendByte(uchar fdata)uchar BitCount;for(BitCount = 0; BitCount 8; BitCount +) /*要传送的数据长度为8位*/if(fdata BitCount) & 0x80) SDA = 1; /*判断发送位*/else SDA = 0; _nop_();SCL = 1;/*置时钟线为高,通知被控器开始接收数据位*/_nop_(); _nop_();/*保证时钟高电平周期大于4 us*/_nop_();_nop_();_nop_();SCL = 0; _nop_();_nop_();SDA = 1;/*8位发送完后释放数据线,准备接收应答位*/_nop_();_nop_(); SCL=1;_nop_();_nop_();_nop_();if(SDA = 1) ack = 0; else ack = 1;/*判断是否接收到应答信号*/SCL=0;_nop_();_nop_();/*uchar RecByte();功能:用来接收从器件传来的数据,并判断总线错误(不发应答信号),发完后请用应答函数。 */uchar RecByte()uchar RecData;uchar BitCount;RecData = 0; SDA = 1;/*置数据线为输入方式*/for(BitCount = 0; BitCount 8; BitCount +)_nop_(); SCL=1;/*置时钟线为低,准备接收数据位*/_nop_();_nop_();/*时钟低电平周期大于4.7us*/_nop_();_nop_();_nop_();SCL= 0;/*置时钟线为高使数据线上数据有效*/_nop_();_nop_();RecData = RecData 1;if(SDA=1) RecData = RecData +1;/*读数据位,接收的数据位放入retc中*/return(RecData);/*void Ack_I2C(bit a);主控器进行应答信号,,(可以是应答或非应答信号)/*/void Ack_I2C(bit a)if(a = 0) SDA = 0;/*在此发出应答或非应答信号*/else SDA=1;_nop_();_nop_(); SCL = 0;SCL = 1;/*清除时钟线,以便继续接收*/*bit SendStr(uchar Slave, uchar SubAddress, uchar *Source, uchar Num); 从启动总线到发送地址,子地址,数据,结束总线的过程。Slave-从器件地址SubAddress-子地址Source-指向发送内容的指针Num-发送字节个数返回值:如果返回1表示操作成功,否则操作有误。*/bit SendStr(uchar Slave, uchar *Source, uchar Num)uchar i;Start_I2C();/*启动总线*/SendByte(Slave);/*发送器件地址*/if(ack = 0) return(0);for(i = 0; i Num; i+) SendByte(*Source);/*发送数据*/if(ack = 0) return(0);Source +; Stop_I2C();/*结束总线*/ return(1);/*bit RecStr(BYTE Slave, BYTE SubAddress, BYTE *Source, BYTE Num); 从启动总线到发送地址,子地址,读数据,结束总线的过程。参数:Slave-从器件地址。SubAddress-子地址Source-指向读出的内容放入的存储区的指针Num-读字节个数。返回值:如果返回1表示操作成功,否则操作有误。*/bit RecStr(uchar Slave,uchar *Source, uchar Num)uchar i;Start_I2C();SendByte(Slave);if(ack = 0) return(0);for(i = 0; i Num-1; i+) *Source = RecByte();/*发送数据*/Ack_I2C(0);/*发送就答位*/ Source+; Ack_I2C(1);/*发送非应位*/*Source =RecByte();Stop_I2C();/*结束总线*/ return(1);/*独立按键程序*/uchar key_can; /按键值void key() /独立按键程序static uchar key_new;key_can = 20; /按键值还原P1 |= 0x0c;if(P1 & 0xc0) != 0xc0)/按键按下delay_1ms(1); /按键消抖动if(P1 &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025智能家居设备购买与售后服务合同模板
- 引水工程管道防腐方案(3篇)
- 道路工程整改施工方案(3篇)
- 精神病工程治疗方案(3篇)
- 工程维修服务提升方案(3篇)
- 2025年南瓜籽仁项目立项申请报告模板
- 深度解读2025年城市地下停车场智慧化系统市场前景
- 深度解读2025年公路货运行业数字化转型与运力整合的市场策略报告
- 国企水厂笔试真题及答案
- 建筑工程智慧监管方案(3篇)
- 药品注册审评员考核试题及答案
- 机器人常用手册-系列中文版-epx2900a00使用说明书
- 小学硬笔书法课教案(1-30节)
- optimact540技术参考手册
- 光伏电站组件清洗周边除草治理方案
- 建筑面积测绘报告范本
- 校园物业考评表
- 爆破作业人员培训考核题库
- 2019版外研社高中英语选择性必修三单词默写表
- 核质保监查员考试复习题(答案)
- 墙体喷射混凝土加固工程方案一
评论
0/150
提交评论