学习笔记--jz2440 LCD程序

本文记录了作者尝试自行编写LCD程序的过程,从理解芯片手册到实际编程,并分享了面向对象编程思路下LCD参数结构体的设计方法及具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天决定自己尝试写LCD程序,遇到问题自己解决 看芯片手册 原理图。
努力变得更好。
还是很多根据韦东山老师视频的思路 我看了一遍,想了下,觉得要自己手动写一下可能会学到更多。
首先 大概思路:根据面向对象编程的思路,写上层函数套用下层函数,lcd.c 里面写 lcd所需要的参数的结构体,供下层函数lcd.c调用。
在这里插入图片描述
在这里插入图片描述

框架与准备

需求:让jz2440屏幕上能实现画点线圆
配置寄存器 写需求函数 寸步难行啊感觉,
头疼了一天 终于是弄出来了编译通过了 也不知道能不能用 自己还差的很远 还是要好好学习呀
今天写代码 发现自己的c语言也不是很好
巩固一下typedef struct static extern

typedef struct lcd_params_polar{
	/* lcd 引脚极性 */
	int vsync;
	int hsync;
	int vclk;
	int rgb;
	int vden;
	int lend;
	int pwren;
	

}lcd_pol,*p_lcd_pol;

typedef struct lcd_clock{
	int tvp;  // 脉冲宽度
	int tvb;  //垂直上面延时
	int tvf;  //垂直下方延时
	int thp;  //水平方向上脉冲宽度
	int thb;  //水平左方延时
	int thf;  //水平右方延时

	int vclk;

}lcd_clk,*p_lcd_clk;

typedef struct lcd_params {
	/* led参数 */

	/* 引脚极性 */
	lcd_pol pin_pol;

	/* 时序 */
	lcd_clk time_seq;

	/* 分辨率,bpp */
	int yres;
	int xres;
	int bpp; //像素深度
	
	/* framebuffer地址 */
	int fb;

}lcd_par,*p_lcd_par;

struct 是定义一个结构体,但系统不会为这个结构体分配全部的内存 只会留一个最大的成员的内存空间,
typedef 是为一个类型起一个新名字 还可以带指针 但指针使用指向成员时需要-> 不是指针的时候可以用.

lcd->pin_pol.hsync = 525;
	lcd->pin_pol.vsync = 286;


	lcd->xres = 480;
	lcd->yres = 272;
	
	lcd->time_seq.thb = 2 ;
	lcd->time_seq.thf = 2;
	lcd->time_seq.thp = 41;
	

就像这样

static 关键字可以用来修饰局部变量 全局变量以及函数 不同情况下作用也不一样
一般情况下 局部变量时放在栈区的 局部变量的生命再该区域块运行结束时也就结束了 但局部变量如果使用static 修饰后 该变量就会放在静态数据区,其生命一直到程序结束时才结束,
一个变量为全局变量时 该变量不仅当前文件可以使用,其工程的其他文件也可以使用 需用extern声明
但若该全局变量被static关键词修饰后 该变量只能用于其所在的源文件内

extern不能定义变量 该关键词的含义主要在 修饰的变量不在本源文件中定义 可以在其他源文件中寻找

回来总结一下c里面的关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值