基于51单片机的简易逻辑分析仪设计(编辑修改稿)内容摘要:

= P0^3。 sbit KEY2 = P0^4。 sbit KEY3 = P0^5。 sbit KEY4 = P0^6。 sbit P13=P1^3。 sbit P14=P1^4。 sbit P15=P1^5。 sbit P16=P1^6。 unsigned int uiVoltage_ADC,uiVoltage_DAC。 //uiVoltage: LCD 显示用,无小数点 float fVoltage_DAC。 //定义实际需要输出的电压 xdata unsigned char iCount=0。 // 采样个数设置,这里设置为 16 次 xdata unsigned char result_Port1[4][16]={0}。 xdata char port1_Flag=0。 xdata char key12Flag=0。 xdata char TR0Flag=0。 xdata unsigned char key1=0。 //控制显示屏上的列标记 xdata unsigned char port_1[4]={1,2,3,4}。 char flay_a = 1。 unsigned int Sample_Voltage(void)。 void Delay_1ms(int)。 //毫秒级延时函数 void Control_DAC(void)。 //声明调整输出电压函数 void displayPort1_in_LCD(unsigned char p, unsigned char i,unsigned char j)。 void displayPort1_in_LCD_by_Flush(unsigned char *p,unsigned char key)。 void put_and_Display_Voltage()。 //当 DA的电压设定发生改变时调用该函数 13 void control_TR0_By_KEY3()。 //通过按键 KEY3 控制采样的结束 void display_Sample_Result()。 //显示 16 次采样的结果函数 void Sys_key()。 /******************************************************************************** 函 数 名:主函数 功能说明: 调用函数: 入口参数: 出口参数: 说 明: ********************************************************************************/ void main() { LCD_init()。 //初始化 LCD LCD_Clear()。 //LCD 清屏 // T0_init()。 port1_Flag=0。 key12Flag=0。 //禁止按键 key1 和 key2 工作 TR0Flag=0。 // 禁止 Time0 工作 TR0=1。 //开启 Time0 工作 fVoltage_DAC =。 // put_and_Display_Voltage()。 // Delay_1ms(20)。 DAC_TLC5615_Voltage(fVoltage_DAC)。 while(1) { if(flay_a==0) { port_1[0]=(char)P13。 port_1[1]=(char)P15。 port_1[2]=(char)P14。 port_1[3]=(char)P16。 displayPort1_in_LCD_by_Flush(amp。 port_1,key1%8)。 14 key1++。 key1=key1%128。 // Delay_1ms(500)。 // flay_a=1。 // Sys_key()。 if(KEY1==0) //增加 DAC 电压, { Delay_1ms(10)。 if(KEY1==0) { while(!KEY1)。 fVoltage_DAC=fVoltage_DAC+。 if(fVoltage_DAC) { fVoltage_DAC =。 } // IE=0x00。 flay_a=1。 // TR0Flag=1。 //按一次就开始采样,再按一次就结束采样; } } if(KEY3==0) //减 DAC 电压, { Delay_1ms(10)。 if(KEY3==0) { while(!KEY3)。 fVoltage_DAC=。 if(fVoltage_DAC) { fVoltage_DAC =。 } flay_a=1。 // IE=0x00。 // key12Flag=1。 } } 15 } if(flay_a==1) { put_and_Display_Voltage()。 flay_a=0。 } } } /******************************************************************************** 函 数 名: Display_Voltage 功能说明:显示电压,整数 调用函数: LCD_Pos Send_Data Write_LCD 入口参数: Voltage(带显示电压 *1000 倍以后的值) x,y(从 LCD 的坐标 x,y 处开始显示) 出口参数:无 说 明:显示范围为 09999 列:当 Voltage=1234 时,显示 ********************************************************************************/ void Display_Voltage(unsigned int Voltage,char x,char y) { code uchar Display_Dot[1]={.}。 code uchar Display_Unit[1]={V}。 LCD_Pos(x,y)。 Write_LCD(Voltage/1000+0x30,1)。 Send_Data(Display_Dot,1)。 //显示小数点 Write_LCD(Voltage%1000/100+0x30,1)。 Write_LCD(Voltage%100/10+0x30,1)。 Write_LCD(Voltage%10+0x30,1)。 Send_Data(Display_Unit,1)。 //显示单位 } /******************************************************************************** 函 数 名: Sample_Voltage 功能说明:带有滤波功能的电压测量 16 调用函数: ADC_TLC1549 入口参数:无 出口参数: Votlage(测量滤波后的电压) 说 明: ********************************************************************************/ unsigned int Sample_Voltage(void) { double Filt_Tab[3]={0}。 char Flag_Filt_Tab = 0。 unsigned int Tab_Vol[30] ={0},k=0,Votlage = 0。 double Sum = 0。 char i=0,j=0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。