单片机编程入门头函数申明不能使用宏定义的形参类型 void LCD_ShowNum(uint y,uint32 num,uchar len,uchar size);

lcd1602显示两行怎么写程序呀 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
lcd1602显示两行怎么写程序呀
22:36:39  
23460&查看
lcd1602显示两行怎么写程序呀,感觉非常乱
18:28:59  
#include&reg52.h&& &&&
#define uint unsigned int&&//预定义一下
#define uchar unsigned char
sbit rs=P2^2;& & //1602的数据/指令选择控制线
sbit rw=P2^1;& && &&&//1602的读写控制线
sbit en=P2^0;& && &&&//1602的使能控制线
uchar code&&table[]=&LCD1602-wjz-tjdz&; //要显示的内容1放入数组tablel
uchar code table1[]=&&&QQ:&&&; //要显示的内容2放入数组table1
void delay(uint z)& && & //延时函数& && && && && && && &&&
& & uint x,y;&&
& & for(x=z;x&0;x--)
& && &&&for(y=122;y&0;y--);
void lcd_wcom(uchar com)&&//1602写命令函数& && && && && &&&
& & rs=0;& && && && &//选择指令寄存器
& & rw=0;& && && && &//选择写
& & P0=& && && && &//把命令字送入P2
& & delay(5);& && && && &//延时一小会儿,让1602准备接收数据
& & en=1;& && && &&&//使能线电平变化,命令送入1602的8位数据口
void lcd_wdat(uchar dat)& && &&&//1602写数据函数& && &
& & rs=1;& && &&&//选择数据寄存器
& & rw=0;& && &&&//选择写
& & P0=& && &&&//把要显示的数据送入P2
& & delay(5);& && &&&//延时一小会儿,让1602准备接收数据
& & en=1;& && &&&//使能线电平变化,数据送入1602的8位数据口
void lcd_init()& && && && &&&//1602初始化函数& && &
& & lcd_wcom(0x38);& && & //8位数据,双列,5*7字形& && &
& & lcd_wcom(0x0c);& && &//开启显示屏,关光标,光标不闪烁
& & lcd_wcom(0x06);& & //显示地址递增,即写一个数据后,显示位置右移一位
& & lcd_wcom(0x01);& & //清屏
void main()& && && && &//主函数
& & uchar n,m=0;
& & lcd_init();& && && && && &&&//液晶初始化
& & lcd_wcom(0x80);& &//显示地址设为80H(即00H,)上排第一位& && &
& & for(m=0;m&16;m++)& &&&//将table[]中的数据依次写入1602显示
& && && && &lcd_wdat(table[m]);& && && &&&
& && && && &delay(100);& & //延时
& & lcd_wcom(0x80+0x40); //重新设定显示地址为,即下排第1位
& & for(n=0;n&16;n++)& &//将table1[]中的数据依次写入1602显示
& & {& &&&
& && && && &lcd_wdat(table1[n]);
& && && &&&delay(100); //延时
23:04:51  
#include& &&&
#define uint unsigned int&&//预定义一下
#define uchar unsigned char
你好,你的程序现在是动态的,如何让它静态显示?菜鸟不懂,多谢赐教
23:10:04  
#include &LCD1602.h&& &
#include &Delay.h&& && &
/*----------------------------
//向LCD1602写入指令或数据
//RS=0:写命令
//RS=1:写数据& & & &&&
//Content:向LCD1602写入的内容&&
-----------------------------*/
void LCD_Write(uchar RS,uchar Content)
{
&&LCD_RS=RS;& && && && &//选择写命令或写数据模式
&&LCD_RW=0;
&&P0=C& && && &&&//将要写的数据送到数据总线上
&&Delay_us(2);& && && & //稍作延时以待数据稳定
&&LCD_EN=1;& & & && && && && & //使能端给一高脉冲,因为初始化函数中已经将lcden置0& & & && && &&&
& & & & Delay_us(5);& && && &
& & & & LCD_EN=0;& & & && && && && & //将使能端置0以完成高脉冲
&&Delay_us(10);& && && &//稍作延时
}
/*----------------------------
//向LCD1602写入一个字符 如LCD_ShowChar(1,0,'a');
//x:1,第一行,2第二行
//y:1到16
//dat:向LCD1602写入的字符
-----------------------------*/
void LCD_ShowChar(uchar x,uchar y,uchar dat)
{
&&uchar A& && && && && && && & //LCD地址变量& && && && && && &&&
& & & & & & & &
& & & & switch(x)
& & & & {
& &case 1:Adr=0x80+y;& && & //显示屏第一行
& &case 2:Adr=0x80+0x40+y;& & & & //显示屏第二行
& &default:& & & & & & & &
&&}
&&LCD_Write(0,Adr);
& & & & LCD_Write(1,dat);
}
/*----------------------------
//向LCD1602写入字符串
//x:1,第一行,2第二行
//y:1到16
*dat:指向字符串的首地址
-----------------------------*/
void LCD_ShowStr(uchar x,uchar y,uchar *dat)
{
& & & & uchar i=0;
&&& && && && && && && & //指针地址变量
& & & & & & & &
& & & & pdat= *& && && && && && && & //把数组首地址付给指针变量
& & & & while(pdat!='\0')& && && && && & //等待读完数组
& & & & {
& & & && &LCD_ShowChar(x,y+i,pdat);
& & & & & & & & pdat=*(++dat);& && && && && & //指针加一后把地址赋给dat
& & & & & & & & i++;
& & & & }
}
/*----------------------------
//显示1个数字
//x,y :起点坐标& & & &&&
//num:数值(0~99)& & & &&&
-----------------------------*/& & & && &
void LCD_ShowNum(uchar x,uchar y,uchar num)
{& &&&
&&if(num&100)
& & & & {
& & LCD_ShowChar(x,y+0,num/10+'0');
& & & && &LCD_ShowChar(x,y+1,num%10+'0');
&&}& & & & & & & &
/*----------------------------
//初始化LCD1602
-----------------------------*/& & & &
void LCD_Init()& && &&&
{
&&LCD_RS=0;
&&LCD_RW=0;
&&LCD_EN=0;
&&LCD_Write(0,0x38);& & & && &&&//设置16*2显示,5*7点阵,八位数据接口//看资料
&&LCD_Write(0,0x0c);& & & && &&&//设置开显示,不显示光标
&&LCD_Write(0,0x06);& & & && &&&//写一个字符后地址指针加1
&&LCD_Write(0,0x01);& & & && &&&//显示清0,数据指针清0
& & & & Delay(5);& && && && && &//延时5ms,使之更稳定
}
等待验证会员
23:20:35  
#include& &&&
#define uint unsigned int&&//预定义一下
#define uchar unsigned char
你的程序!~!!!!
等待验证会员
23:22:02  
你的程序!~!!!!
你的程序!!!!
(351.1 KB, 下载次数: 81)
23:21 上传
23:46:35  
你好,你的程序现在是动态的,如何让它静态显示?菜鸟不懂,多谢赐教
延迟delay(100)去掉,然后试一下
21:22:23  
做的不错,支持了
16:10:04  
呵呵大家一起学习学习
22:33:12  
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端
00:57:28  
那要第一行显示当前温度,第二行显示转速,都显示当前数值,该怎么写?
15:05:49  
楼主我来教你:
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^5;
sbit lcden=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
uchar table1[]=&I Love You& &&;
uchar table2[]=&14dianxinguan&;
void delay(uint x)
& & & & uint a,b;
& & & & for(a=x;a&0;a--)
& & & & & & & & for(b=10;b&0;b--);
void delay1(uint x)
& & & & uint a,b;
& & & & for(a=x;a&0;a--)
& & & & & & & & for(b=100;b&0;b--);
void write_com(uchar com)
& & & & P0=
& & & & rs=0;
& & & & lcden=0;
& & & & delay(10);
& & & & lcden=1;
& & & & delay(10);
& & & & lcden=0;
void write_date(uchar date)
& & & & P0=
& & & & rs=1;
& & & & lcden=0;
& & & & delay(10);
& & & & lcden=1;
& & & & delay(10);
& & & & lcden=0;
void init()
& & & & dula=0;
& & & & wela=0;
& & & & write_com(0x38);& &//显示模式设置:16×2显示,5×7点阵,8位数据接口
& & & & delay(20);
& & & & write_com(0x0f);& &//显示模式设置
& & & & delay(20);
& & & & write_com(0x01);& &//清屏幕指令,将以前的显示内容清除
& & & & delay(20);& & & &
void main()
& & & & init();
& & & & write_com(0x80);& & & &
& & & & delay(20);
& & & & for(a=0;a&13;a++)
& & & & write_date(table1[a]);
& & & & delay(20);& & & & & & & &
& & & & write_com(0xc0);
& & & & delay(50);
& & & & for(a=0;a&13;a++)
& & & & write_date(table2[a]);
& & & & delay(40);& & & & & & & &
& & & & while(1);
15:11:10  
本帖最后由 夜行者灬 于
13:02 编辑
再附上一张图,证据确凿
(591.41 KB, 下载次数: 42)
15:14 上传
13:41:46  
再附上一张图,证据确凿。还有疑问的话加我微信zqy950923& &&&我们一起学习
RS RW,E LCD一共就这三个使能端&&你多出来的是接哪的
14:29:57  
加图中&&方框图里面的 三行代码可实现 最终保持静态!
(35.55 KB, 下载次数: 14)
14:29 上传
16:09:02  
楼主我来教你:
#define uchar unsigned char
你好,我在编译这个代码的时候出现lunprintable character 0xA0 skipped 的错误请问一下应该怎么改???
10:50:40  
你好,我在编译这个代码的时候出现lunprintable character 0xA0 skipped 的错误请问一下应该怎么改???
不用改,直接砸电脑
20:46:27  
效果不错 试过了
20:47:31  
作为检测LCD的程序使用还是挺好的
21:34:47  
非常详细,谢谢帮忙的朋友。
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司查看: 35|回复: 0
用TFTLCD显示汉字,6路PWM矩阵键盘控制源码
本人萌新,基于STM32的6路PWM控制,并且用矩阵键盘分别去控制六路占空比,并做了48*48的字库在LCD上显示。
单片机源程序如下:
#include &led.h&
#include &delay.h&
#include &key.h&
#include &sys.h&
#include &lcd.h&
#include &usart.h&
#include &timer.h&
extern void LCD_ShowHZ(u16 x,u16 y,u8 num);
extern void LCD_ShowHZStr(u16 x,u16 y,u8* pstr);
extern& & & & float A;& & & &
extern& & & & float B;
extern& & & & float C;
extern& & & & float D;& & & &
extern& & & & float E;
extern& & & & float F;
int main(void)
{& & & &&&
& &
& & delay_init();& & & && &&&& & & &&&//延时函数初始化& & & && &
& & NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);& & & &&&//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
& & uart_init(115200);& & & &&&& & & & //串口初始化为115200
& & LED_Init();& & & & & & & & & & & && && &//LED端口初始化
& & LCD_Init();
& & & & & & & & Key_Config();
& & & & & & & & TIM3_PWM_Init(899,15);
& & & & & & & & TIM4_PWM_Init(899,15);
& & & & & & & & TIM2_Int_Init(1,7199);& & & & //定时器2中断初始化
& & POINT_COLOR=RED;
& & POINT_COLOR=BLUE;//字体为蓝色
& &
& & & & & & & & LCD_ShowHZ(0,0,0);//显示速字
& & LCD_ShowHZ(48,0,1);//显示度字
& & & & & & & & LCD_ShowHZ(96,0,3);
& & & && &LCD_ShowHZ(144,0,2);
& & & & & & & & POINT_COLOR=RED;//字体为红色
& & LCD_ShowHZ(0,48,0);//显示速字
& & LCD_ShowHZ(48,48,1);//显示度字
& & & && &LCD_ShowHZ(96,48,4);//显示:
& & & & & & & & LCD_ShowHZ(144,48,2);
& & & && &POINT_COLOR=BROWN;//字体为黄色
& & & && &LCD_ShowHZ(0,96,0);//显示速字
& & LCD_ShowHZ(48,96,1);//显示度字、
& & & && &LCD_ShowHZ(96,96,5);
& & & & & & & & LCD_ShowHZ(144,96,2);
& & & & & & & & POINT_COLOR=BLACK;//字体为黑色
& & & && &LCD_ShowHZ(0,144,0);//显示速字
& & LCD_ShowHZ(48,144,1);//显示度字
& & & & & & & & LCD_ShowHZ(96,144,6);
& & & & & & & & LCD_ShowHZ(144,144,2);
& & & & & & & & POINT_COLOR=GREEN;//字体为绿色
& & & && &LCD_ShowHZ(0,192,0);//显示速字
& & LCD_ShowHZ(48,192,1);//显示度字
& & & & & & & & LCD_ShowHZ(96,192,7);
& & & & & & & & LCD_ShowHZ(144,192,2);& & & & & & & &
& & & & & & & & POINT_COLOR=BRRED;
& & & && &LCD_ShowHZ(0,240,0);//显示速字
& & LCD_ShowHZ(48,240,1);//显示度字
& & & & & & & & LCD_ShowHZ(96,240,8);
& & & & & & & & LCD_ShowHZ(144,240,2);& & & &
& & & & & & & & POINT_COLOR=MAGENTA;//字体为紫色& & & & & & & &
&&& & & & while(1)
& & & & {& & & & & & & &&&
& & & & & & & & key=KeyScan();
& & & & & & & & //LCD_ShowxNum(140,288,5,3,48,0X80);
& & & & & & & &
& & & & & & & & //LCD_ShowString(140,288+144,200,200,48,&:;'/.&);
& & & & & & & & switch(key)
& & & & & & & & {
& & & & & & & & & & & & case 1:A=A+0.2;
& & & & & & & & & & & & case 2:A=A-0.2;
& & & & & & & & & & & & case 3:B=B+0.2;
& & & & & & & & & & & & case 4:B=B-0.2;
& & & & & & & & & & & & case 5:C=C+0.2;
& & & & & & & & & & & & case 6:C=C-0.2;
& & & & & & & & & & & & case 7:D=D+0.2;
& & & & & & & & & & & & case 8:D=D-0.2;
& & & & & & & & & & & & case 9:E=E+0.2;
& & & & & & & & & & & & case 10:E=E-0.2;
& & & & & & & & & & & & case 11:F=F+0.2;
& & & & & & & & & & & & case 12:F=F-0.2;& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & LCD_ShowNum(180,0 ,10*(A-5),2,48);
& & & & & & & & LCD_ShowNum(180,48 ,10*(B-5),2,48);
& & & & & & & & LCD_ShowNum(180,96 ,10*(C-5),2,48);
& & & & & & & & LCD_ShowNum(180,144 ,10*(D-5),2,48);
& & & & & & & & LCD_ShowNum(180,192 ,10*(E-5),2,48);
& & & & & & & & LCD_ShowNum(180,240 ,10*(F-5),2,48);
& & & & & & & & //LCD_ShowNum(144,288+96 ,key,2,48);
& & & & & & & & if(A&5)//控制占空比在规定范围内
& & & & & & & & {A=14;}
& & & & & & & & if(A&14)
& & & & & & & & {A=5;}
& & & & & & & & if(B&5)//控制占空比在规定范围内
& & & & & & & & {B=14;}
& & & & & & & & if(B&14)
& & & & & & & & {B=5;}
& & & & & & & & if(C&5)//控制占空比在规定范围内
& & & & & & & & {C=14;}
& & & & & & & & if(C&14)
& & & & & & & & {C=5;}
& & & & & & & & if(D&5)//控制占空比在规定范围内
& & & & & & & & {D=14;}
& & & & & & & & if(D&14)
& & & & & & & & {D=5;}
& & & & & & & & if(E&5)//控制占空比在规定范围内
& & & & & & & & {E=14;}
& & & & & & & & if(E&14)
& & & & & & & & {E=5;}
& & & & & & & & if(F&5)//控制占空比在规定范围内
& & & & & & & & {F=14;}
& & & & & & & & if(F&14)
& & & & & & & & {F=5;}
& & & & }
}
复制代码
所有资料51hei提供下载:
(360.12 KB, 下载次数: 2)
00:35 上传
点击文件名下载附件
STM32源码下载积分: 黑币 -5
共享资料的黑币奖励!
Powered by查看: 177|回复: 0
关于DDS在stm32单片机上显示的有关程序
该程序可以实现在stm32上实现屏幕显示和键盘输入控制
单片机源程序如下:
#include &stm32f10x.h&
#include &stdio.h&
#include &string.h&
#include &drivers.h&
// dds base freq : 0.9765625HZ
/*------------------Macro Defines----------------------------------*/
#define SYSTEMTICK_PERIOD_MS&&10
#define LED_PERIOD&&1000
/*------------------------------------------------------------------*/
struct DDS_PARA{
& & & & uint8_t wave_
& & & & uint32_t freq_
& & & & uint32_
& & & & uint8_
};
enum PARA_TYPE{ NONE = 0, FREQ = 1, PHASE = 2};
/*------------------------------------------------------------------*/
extern uint8_t usart2_rx_buf[255];
extern uint8_t usart2_frame_
__IO uint32_t _localTimeTick_ms = 0;
uint8_t usart_frame_buf[UART_FRAME_LENGTH] = {0};
uint16_t frame_seq = 0;
struct DDS_PARA dds_para_
enum PARA_TYPE setting_type = FREQ;
/*------------------------------------------------------------------*/
uint8_t process_data_from_fpga(uint8_t* data_buf, uint8_t data_len);
void lcd_update(void);
uint8_t porcess_keybard_value(UserAckKeyValueType key_value);
void lcd_update_actual_freq(void);
/*------------------------------------------------------------------*/
void SysTick_Handler(void) {
& & & & _localTimeTick_ms += SYSTEMTICK_PERIOD_MS;
}
uint32_t local_ticktime() {
& & & & return _localTimeTick_
}
bool timeout(uint32_t last_time, uint32_t ms) {
& & & & return (bool)((_localTimeTick_ms - last_time) & ms);
}
void flash_led(void)
{
& & & & static uint32_t timer_
& & & & static uint8_t led_
& & & &
& & & & if(timeout( timer_tick, LED_PERIOD))
& & & & {
& & & & & & & & if(led_status == 0)
& & & & & & & & {
& & & & & & & & & & & & GPIO_ResetBits(RED_LED_GPIO, RED_LED_PIN);
& & & & & & & & & & & & led_status = 1;
& & & & & & & & }
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & GPIO_SetBits(RED_LED_GPIO, RED_LED_PIN);
& & & & & & & & & & & & led_status = 0;
& & & & & & & & }
& & & & & & & & timer_tick = local_ticktime();
& & & & }
}
void flush_dds_para(void)
{
& & & & dds_para_data.freq = 0;
& & & & dds_para_data.phase = 0;
& & & & setting_type = FREQ;
}
void init_data(void)
{
& & & & //frame header
& & & & usart_frame_buf[0] = PROTOCOL_UART_FRAME_START_SYMBOL_1;& & & &
& & & & usart_frame_buf[1] = PROTOCOL_UART_FRAME_START_SYMBOL_2;
& & & & usart_frame_buf[2] = 0x90;
& & & & usart_frame_buf[3] = 0x07;
& & & & //CRC
& & & & usart_frame_buf[12] = 0;
& & & & usart_frame_buf[13] = 0;
& & & & //frame tail
& & & & usart_frame_buf[14] = PROTOCOL_UART_FRAME_END_SYMBOL_1;
& & & & usart_frame_buf[15] = PROTOCOL_UART_FRAME_END_SYMBOL_2;
& & & &
& & & & flush_dds_para();
& & & & LCD_ShowString(50,&&20,&&16, &DDS SIGNAL GENERTAOR& ,0);
& & & & LCD_ShowString(20,&&60,&&16, &Freq(HZ)(Goal):& ,0);& & & &
& & & & LCD_ShowString(20,&&90,&&16, &Freq(HZ)(Fact):& ,0);& & & &
& & & & LCD_ShowString(266,&&90,&&16, &.& ,0);& & & &
& & & & LCD_ShowString(20,&&120,&&16, &Phase(degree):& ,0);& & & &
& & & & LCD_ShowString(20,&&150, 16, &Input data:& ,0);
& & & & LCD_ShowString(20,&&180, 16, &Setting Type(L-R):& ,0);
& & & & LCD_ShowString(200, 180, 16, &FREQ & ,0);
}
void init_drivers(void)
{
& & & & rcc_configuration();
& & & & GPIO_PinRemapConfig( GPIO_Remap_SWJ_JTAGDisable, ENABLE );
& & & & led_init();
& & & & init_keyBoard();
& & & & uart2_init();
& & & & init_lcd();
}
int main(void)
{
& & & & uint8_t fpga_ack = 0;
& & & & uint8_t resend_times = 0;
& & & & uint32_t usart_reack_timeout = 0;
& & & & UserAckKeyValueType keyV
& & & & float dds_
& & & &
& & & & init_drivers();
& & & & init_data();
& & & & while(1)
& & & & {& & & & & & & &
& & & & & & & & flash_led();
& & & & & & & & if(usart2_frame_end == 1)
& & & & & & & & {
& & & & & & & & & & & & if(process_data_from_fpga(usart2_rx_buf, UART_FRAME_LENGTH) == 1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & fpga_ack = 0;
& & & & & & & & & & & & & & & & lcd_update_actual_freq();
& & & & & & & & & & & & }
& & & & & & & & & & & & memset(usart2_rx_buf, 0, UART_FRAME_LENGTH);
& & & & & & & & & & & & usart2_frame_end = 0;
& & & & & & & & }
& & & & & & & & if(fpga_ack == 1)
& & & & & & & & {& & & & & & & & & & & & & & & &
& & & & & & & & & & & & if(timeout(usart_reack_timeout, 2000))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & resend_times++;
& & & & & & & & & & & & & & & & usart2_send_string(usart_frame_buf, UART_FRAME_LENGTH);
& & & & & & & & & & & & & & & & usart_reack_timeout = local_ticktime();
& & & & & & & & & & & & }& & & & & & & &
& & & & & & & & & & & & if(resend_times &= 2)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & fpga_ack = 0;
& & & & & & & & & & & & & & & & resend_times = 0;
& & & & & & & & & & & & }& & & & & & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & if((keyVal = keyValueToUserAck()) != NOKEY)
& & & & & & & & {& & & & & & & & & & & &
& & & & & & & & & & & & if(porcess_keybard_value(keyVal))
& & & & & & & & & & & & {& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & dds_step = (dds_para_data.freq/0.9765625);
& & & & & & & & & & & & & & & & dds_para_data.freq_step = dds_
& & & & & & & & & & & & & & & & if((uint32_t)(dds_step/0.5)/2 == 1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & dds_para_data.freq_step++;
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & lcd_update();
& & & & & & & & & & & & & & & & frame_seq++;
& & & & & & & & & & & & & & & & usart_frame_buf[4] = frame_seq && 8;
& & & & & & & & & & & & & & & & usart_frame_buf[5] = (uint8_t)frame_
& & & & & & & & & & & & & & & & usart_frame_buf[6] = (uint8_t)(dds_para_data.freq_step && 24);
& & & & & & & & & & & & & & & & usart_frame_buf[7] = (uint8_t)(dds_para_data.freq_step && 16);
& & & & & & & & & & & & & & & & usart_frame_buf[8] = (uint8_t)(dds_para_data.freq_step && 8 );
& & & & & & & & & & & & & & & & usart_frame_buf[9] = (uint8_t)dds_para_data.freq_
& & & & & & & & & & & & & & & & usart_frame_buf[10] = dds_para_data.
& & & & & & & & & & & & & & & & usart2_send_string(usart_frame_buf, UART_FRAME_LENGTH);
& & & & & & & & & & & & & & & & fpga_ack = 1;
& & & & & & & & & & & & & & & & usart_reack_timeout = local_ticktime();
& & & & & & & & & & & & }
& & & & & & & & }
& & & & }
}
uint8_t process_data_from_fpga(uint8_t* data_buf, uint8_t data_len){
& & & & uint8_t temp_data_buf[20] = {0};
& & & & uint8_
& & & &
& & & & if(data_len & 20)
& & & & {
& & & & & & & & return 0;
& & & & }
& & & &
& & & & for(i = 0; i & data_ i++)
& & & & {
& & & & & & & & temp_data_buf[i] = data_buf[i];
& & & & }
& & & & switch(temp_data_buf[2])
& & & & {
& & & & & & & & case 0x80: //from fpga
& & & & & & & & & & & & {& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & if(temp_data_buf[3] == 0x03)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & if(temp_data_buf[6] == 0xA5)
& & & & & & & & & & & & & & & & & & & & & & & & return 1;
& & & & & & & & & & & & & & & & }& & & & & & & & & & & & & & & &&&& & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & default:
& & & & }
& & & & return 0;
}
void lcd_update_actual_freq(void)
{
& & & & float actual_
& & & &
& & & & actual_freq = dds_para_data.freq_step * 0.9765625;
& & & & LCD_ShowNum(170, 90, actual_freq,&&12, 16);& & & &
& & & & LCD_ShowNum(270, 90, (uint32_t)(actual_freq*100)%100,&&3, 16);
}
void lcd_update(void)
{
& & & & uint32_t updated_
& & & & uint16_t updated_
& & & &
& & & & updated_freq = dds_para_data.
& & & & updated_phase = dds_para_data.
& & & & LCD_ShowNum(200, 60, updated_freq,&&12, 16);& & & &
& & & & LCD_ShowNum(200, 120, updated_phase, 12, 16);& & & &
uint8_t porcess_keybard_value(UserAckKeyValueType key_value)
{
& & & & static uint32_t temp_
& & & &
& & & & if(key_value & 10)
& & & & {
& & & & & & & & temp_value = temp_value*10 + (uint8_t) key_
& & & & & & & & LCD_ShowNum(200, 150, temp_value, 12, 16);& & & &
& & & & }
& & & &
& & & & if(key_value == KEY_OK)
& & & & {
& & & & & & & & if(setting_type == FREQ)
& & & & & & & & {
& & & & & & & & & & & & & & & & dds_para_data.freq = temp_
& & & & & & & & }
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
(224.84 KB, 下载次数: 3)
20:16 上传
点击文件名下载附件
Powered by

我要回帖

更多关于 51单片机有趣的小制作 的文章

 

随机推荐