1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUP.A51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。
2、导入51单片机的头文件以及LCD1602的头文件。
3、创建一个延时函数,可以传入想要具体延时的时长,其内部实现是由一个二重循环,两个循环的次数悔知芦相乘积。
4、然后创建写命令的函数,指定RS和E同时为0时,才可以写入命令,设定完成后,将com写入输出端口,规定写命令时,E为正脉冲,然后空 *** 作一个机器周期等待机器反应。
5、然后创建写数据的函数,规定写数据时,E为正脉冲,规定当RS=1和RW=0时才可以写入数据,然后将数据从输出端口输出,最后让碧带E产生正跳变。
6、然后创建初始化LCD1602的函数,指定显示模式位两行显示,5*7,8位数据、整体显示,无光标,无闪烁、写入一个字符后地址指针加1,最后进行清屏 *** 作。
7、最后在主函数中首先执行LCD1602的初始化函数,首先创猛唤建一个无限循环,然后添加两个字符串,这里以两行显示百度经验的网址为例,再进行延时以及使用清屏函数进行刷新。
LCD有哪些寄存器?各核答表示什么含义,控制什么功能?写出来的程序又如何验证是否正确?
其实,你只需要对LCD的打开、关闭,以及能把一个数据块显示在LCD上就改雹慧行了
“常见字母、数字、符号、中文、自定义字符、图形,以及文字和图形混和显示;光标显示/隐藏(Cursor
on/off)、显示字肆尺符闪烁(Display
character
blink);画面清除(Display
clear)、光标归位(Return
home)”
这些功能,只需要在这个数据块上进行 *** 作,然后再送到LCD显示。
配套 2.4寸LCD屏 ST7789驱动器芯片(24P 320X240)ST7789驱动器芯片2.4寸LCD屏(24P 320X240)
主要参数
1. 模块名称:液晶显示模块
2. 型号:KD024C-4
3. 同类型型号:
4. 兼容型号:
5. 显茄伏搏示模式:TFT
6. 显示色彩:65/262K
7. 分辨率: 240*320
8. 点距:0.153 (H) x 0.153 (V)
9. 视角:12:00
10. 控制IC:ST7789V
11. 显示类型:全透型,常白
12. 外形尺寸:42.72*60.26*2.6mm
13. 可视面积:38.32*50.56 mm
14. 点阵区面积:36.72*48.96mm
15. 亮度:300cd/m2
16. 对比度:500
17. 接口类型: 8/9/16/18位8080并口
16/18位RGB接口
3/4线SPI接口
18. 引脚数:24
19. 引脚距离:0.5mm
20. 连接类型: FPC插接型
21. 工作电压:3.3V
22. 背光灯颜色及类型: 白色LED背光
23. 背光电路:4 LED 并联, 共阳
If=80mA, Vf =3.2V
24. 使用寿命:100000h
25. 工作温度:-20----70°C
26. 储存温度:-30----80°C
27. 质量体系认证:ISO9001:2008
28. 产品认证:RoHS
#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#测试程序之一:显示英文
#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#测试程序之一:显示英文
import lcd
lcd.init()
lcd.draw_string(100, 100, "hello MicroPython!", lcd.RED, lcd.BLACK)
lcd 屏幕显示驱动
lcd.display(image, roi=Auto)
在液晶屏上显示一张 image(GRAYSCALE或RGB565)。
roi 是一个感兴趣区域的矩形元组(x, y, w, h)。若未指定,即为图像颤祥矩形
若 roi 宽度小于lcd宽度,则用厅帆垂直的黑色边框使 roi 居于屏幕中心(即用黑色填充未占用区域)。
若 roi 宽度大于lcd宽度,则 roi 居于屏幕中心,且不匹配像素不会显示(即液晶屏以窗口形态显示 roi 的中心)。
若 roi 高度小于lcd高度,则用垂直的黑色边框使 roi 居于屏幕中心(即用黑色填充未占用区域)。
若 roi 高度大于lcd高度,则 roi 居于屏幕中心,且不匹配像素不会显示(即液晶屏以窗口形态显示 roi 的中心)。
roi 是键值参数,必须在函数调用中通过写入 roi= 来显式地调用。
#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#测试程序之二:LCD屏显示"hello maixpy"
import lcd, time
import image
bg = (236,36,36)
lcd.init(freq=15000000)
lcd.direction(lcd.YX_RLDU)
lcd.clear(lcd.RED)
time.sleep(1)
lcd.draw_string(120, 120, "hello maixpy", lcd.WHITE, lcd.RED)
time.sleep(2)
img = image.Image()
img.draw_string(60, 100, "hello maixpy", scale=2)
img.draw_rectangle((120,120,30,30))
lcd.display(img)
lcd 屏幕显示驱动函数
1. lcd.init(type=1, freq=15000000, color=lcd.BLACK)
初始化 LCD 屏幕显示
参数
type: LCD 的类型(保留给未来使用):
0: None
1: lcd shield(默认值)
type 是键值参数,必须在函数调用中通过写入 type= 来显式地调用
freq: LCD (实际上指 SPI 的通讯速率) 的频率
color: LCD 初始化的颜色, 可以是 16 位的 RGB565 颜色值,比如 0xFFFF; 或者 RGB888 元组, 比如 (236, 36, 36), 默认 lcd.BLACK
2. lcd.clear()
将液晶屏清空为黑色或者指定的颜色。
参数
color: LCD 初始化的颜色, 可以是 16 位的 RGB565 颜色值,比如 0xFFFF; 或者 RGB888 元组, 比如 (236, 36, 36)
3. lcd.freq(freq)
设置或者获取 LCD (SPI) 的频率
Paremeters
freq: LCD (SPI) 的频率
Return
LCD 的频率
4. lcd.direction(dir)
在 v0.3.1 之后已经被舍弃, 请使用lcd.rotation 和 lcd.invert代替, 如非必要请勿使用, 接口仍会被保留用于调试使用
设置屏幕方向, 以及是否镜像等
参数
dir: 正常情况下推荐 lcd.YX_LRUD 和 lcd.YX_RLDU, 另外还有其它值,交换 XY 或者 LR 或者 DU即可
#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#实验程序之三:LCD液晶显示器彩条测试
import lcd,image, time
lcd.init(type=1, freq=15000000)
# lcd.init(type=2, freq=20000000)
# lcd.init(type=1, width=320, height=240, invert=True, freq=20000000)
img = image.Image(size=(240,240))
img.draw_rectangle(0,0,30, 240, fill=True, color=(0xff, 0xff, 0xff))
img.draw_rectangle(30,0,30, 240, fill=True, color=(250, 232, 25))
img.draw_rectangle(60,0,30, 240, fill=True, color=(106, 198, 218))
img.draw_rectangle(90,0,30, 240, fill=True, color=(98, 177, 31))
img.draw_rectangle(120,0,30, 240, fill=True, color=(180, 82, 155))
img.draw_rectangle(150,0,30, 240, fill=True, color=(231, 47, 29))
img.draw_rectangle(180,0,30, 240, fill=True, color=(32, 77, 158))
img.draw_rectangle(210,0,30, 240, fill=True, color=(27, 28, 32))
lcd.display(img)
count = 500
while count >0:
t = time.ticks_ms()
lcd.display(img)
print(time.ticks_ms() - t)
count -= 1
#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#实验程序之四:测试Microphone阵列算法
fromMaiximportMIC_ARRAYasmic
importlcd
lcd.init()
mic.init()
whileTrue:
imga = mic.get_map()
b = mic.get_dir(imga)
a = mic.set_led(b,(0,0,255))
imgb = imga.resize(160,160)
imgc = imgb.to_rainbow(1)
a = lcd.display(imgc)
mic.deinit()
#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#实验程序之五:图形与hello maixpy
import lcd, time
import image
bg = (236,36,36)
lcd.init(freq=15000000)
lcd.direction(lcd.YX_RLDU)
img = image.Image()
img.draw_string(60, 100, "hello maixpy", scale=2)
img.draw_rectangle((120,120,30,30))
img.draw_circle((150,140, 80))
img.draw_cross((250,40))
img.draw_arrow((250,200,20,200), color=(236,36,36))
lcd.display(img)
#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#实验程序之六:碰碰球演示
import image, lcd
lcd.init(freq=20000000)
i = 0
dir = 1
while(True):
img = image.Image(copy_to_fb=1)
img.clear()
img.draw_rectangle(i,50,50,50)
lcd.display(img)
if dir:
i += 5
if i==270:
dir = 0
else:
i -= 5
if i==0:
dir = 1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)