第四章 软件设计 Frequency_Data -= 100; if(Frequency_Data < min_freq) Frequency_Data = max_freq; }
Get_Pll();
radio_write_data[0] = Pll_Data/256; radio_write_data[1] = Pll_Data%6; radio_write_data[2] = 0x41; radio_write_data[3] = 0x11; radio_write_data[4] = 0x40;
ATIICxx_PWrite(&radio_write_data[0],5); }
4.4 IC总线控制模块软件设计
由于本次设计实现单片机对TEA5767的控制功能是通过I2C总线,单片机模拟I2C总线通信的软件程序,实现I2C总线发送接收数据的程序流程如图4-5所示。
2
31
第四章 软件设计 开始开始起始条件启动总线起始条件启动总线发送从器件地址发送从器件地址发送数据No数据发送完毕?接收数据No数据接收完毕?Yes结束Yes结束
图4-5 I2C总线程序流程图
单片机通过IC总线控制的主要程序包括启动IC总线、停止IC总线数据传送、发送应答位、发送非应答位、应答位检查发送一个字节数据,接收一个字节数据,发送n字节数据子函数、接收n字节数据子函数和模拟实现I2C总线的数据收发。(具体程序见附录3)
222
4.5 LED显示模块软件设计
数码显示电路时利用CPU来控制数码显示部分的导通和截止,其工作过程是:将字型代码送入字型锁存器锁存,此时所有的数码管都可能显示同样的字符,再将需要显示的位置送入字位锁存器锁存,这样就可以实现在正确的字位上显示正确的字型。设计程序流程图如图4-6所示。
32
第四章 软件设计 开始显示内容写入Tab取Tab千位写入LED取Tab千位写入LED取Tab千位写入LED取Tab千位写入LED设置千位显示设置千位显示设置千位显示设置千位显示延时1ms结束 图 4-6 数码管显示程序流程图
此部分主要程序为: #include \sbit ge=\sbit shi=\sbit bai=\sbit qan=\#define LED P1 //unsigned 阴
//0, 1, 2 3 4 5 6 7 8 9 unsigned
char
tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳 //0, 1, 2 3 4 5 6 7 8 9
/************************************************************************/
33
char
tab[]={ 0x3f,0x30,0x6d,0x79,0x72,0x5b,0x5f,0x31,0x7f,0x7b,0x40};//共
第四章 软件设计 void DelayD(unsigned char Time) {
unsigned char i;
while( --Time != 0) {
for(i = 0; i < 125; i++); //i 从0加到125,CPU大概就耗时1 毫秒 。 } }
4.6 成果展示
本次系统设计的成果展示如图4-7所示。
图4-7 设计成果图
34
第四章 软件设计
35

