网站建设 面试网站开发课程设计总结

pingmian/2025/10/9 15:19:30/文章来源:
网站建设 面试,网站开发课程设计总结,专业的河南网站建设公司,wordpress支持手机版吗目录 简介 代码 功能 显示ASCII字符 ​编辑 画任意直线 画横线 画竖线 画矩形 画椭圆 画立方体 画点阵图 翻转 反相 滚动 横向滚动 纵向滚动 奇葩滚动 简介 我重新写了一个驱动#xff0c;增加了一些功能#xff0c;由于我的硬件是128*64oled单色I2C#xff0c;我只…目录 简介 代码 功能 显示ASCII字符 ​编辑 画任意直线 画横线 画竖线 画矩形 画椭圆 画立方体 画点阵图 翻转 反相 滚动 横向滚动 纵向滚动 奇葩滚动 简介 我重新写了一个驱动增加了一些功能由于我的硬件是128*64oled单色I2C我只适配了我的硬件。如果你的硬件和我相同你可以使用我的ssd1306驱动. 我的oled似乎不是ssd1306驱动芯片而是ssd1315驱动芯片不过两者差别很小仅在滚动那块有些许出入 如果你是大佬可以复制代码后就走人如果你是小白推荐你边看边打代码我给出例子和注释 代码 import framebufclass SSD1306():def __init__(self,external_vcc):self.width 128self.height 64self.external_vcc external_vccself.pages 8self.init_display()def init_display(self):for cmd in (0xae, # 熄屏0x20, 0x00, # 水平寻址0x40, # 显示起始行地址0xa1, # 正常列扫描0xa8, 63, # 复用率0xc8, # 正常行扫描0xd3, 0x00, #设置COM偏移量即屏幕像上偏移的行数0xda, 0x12, #使用备选引脚配置并禁用左右反置0xd5, 0x80, # 设置分频因子与振荡频率0xd9, 0x22 if self.external_vcc else 0xf1,0xdb, 0x30, # 设置vcomh电压为0.83*Vcc0x81, 0xff, # 亮度最大0xa4, # 使用GDDRAM中的数据显示0xa6, # 设置GDDRAM中的0对应于像素点的暗# 关闭电荷泵0x8d, 0x10 if self.external_vcc else 0x14,0x2e, # 禁止滚动0xaf): #开屏self.write_cmd(cmd)self.fill(0)self.show()#设置水平滚动参数滚动区域滚动起始页滚动结束页滚动方向默认向左填0向右滚动速度0-7 def h_scroll(self,start0,end7,d1,speed0): self.write_cmd(0x2e) # 关闭滚动self.write_cmd(0x26d) # 向左self.write_cmd(0x00)self.write_cmd(start) # 起始页self.write_cmd(speed) # 滚动帧率self.write_cmd(end) # 结束页self.write_cmd(0x00)self.write_cmd(0xff)self.write_cmd(0x2f) # 开启滚动#默认开启竖直向上滚动与水平向右滚动def scroll(self,vScrollOn0,vStart0,vEnd63,vSpeed1,hScrollOn1,direction0,hSpeed0,hScrollStartPage0,hScrollEndPage7,hScrollStartColumn0,hScrollEndColumn127):if vScrollOn:self.write_cmd(0x2e)# 关闭滚动self.write_cmd(0xa3)#设置竖直滚动命令self.write_cmd(vStart)#竖直滚动开始行self.write_cmd(vEnd)#竖直滚动结束行self.write_cmd(0x29direction)#水平滚动方向向右self.write_cmd(hScrollOn) # 0,关闭水平滚动1开启self.write_cmd(hScrollStartPage)# 水平滚动起始页self.write_cmd(hSpeed)#设置滚动速度0-7self.write_cmd(hScrollEndPage)# 水平滚动结束页self.write_cmd(vSpeed) # 每一帧的垂直偏移量self.write_cmd(hScrollStartColumn)#水平滚动区域的起始列self.write_cmd(hScrollEndColumn)#水平滚动区域的结束列self.write_cmd(0x2f)# 开启滚动#关闭oleddef poweroff(self):self.write_cmd(0xae | 0x00)#熄屏#亮度0x00-0xffdef contrast(self, contrast):self.write_cmd(0x81)self.write_cmd(contrast)#正反相显示输入1则反相默认正相def invert(self, invert0):self.write_cmd(0xa6 | invert)# 显示def show(self):self.write_cmd(0x21) # 告诉GDDRAM列数self.write_cmd(0) # 列数从0-127self.write_cmd(127)self.write_cmd(0x22) # 告诉GDDRAM行数self.write_cmd(0) # 页数从0-7self.write_cmd(7)self.write_framebuf() # 写入1bit地址和1024bit数据# 水平翻转,0翻转1正常默认def hv(self,b1):self.write_cmd(0xc0 | b3)#竖直翻转,0翻转1正常默认 def vv(self,b1):self.write_cmd(0xa0|b)#刷新缓冲区def fill(self, c):self.framebuf.fill(c)#画点默认点亮置0则暗def pixel(self, x, y, c1):self.framebuf.pixel(x, y, c)#写字符def text(self, s, x, y, c1):self.framebuf.text(s, x, y, c)#画水平直线def hline(self,x,y,w,c1):self.framebuf.hline(x,y,w,c)#画竖直直线def vline(self,x,y,h,c1):self.framebuf.vline(x,y,h,c)#画任意直线 def line(self,x1,y1,x2,y2,c1):self.framebuf.line(x1,y1,x2,y2,c)#画矩形参数起始左上角坐标长宽颜色默认为亮是否填充def rect(self,x,y,w,h,c1,fFalse):self.framebuf.rect(x,y,w,h,c,f)#画椭圆参数起始圆心坐标x半径y半径颜色默认为亮是否填充显示象限0-15的数字def ellipse(self,x,y,xr,yr,c1,fFalse,m15):self.framebuf.ellipse(x,y,xr,yr,c,f,m)#画立方体左上前点的坐标边长def cube(self,x,y,l):self.rect(x,y,l,l)self.rect(xint(0.5*l),int(y-0.5*l),l,l)self.line(x,y,int(x0.5*l),int(y-0.5*l))self.line(xl-1,y,int(x1.5*l-1),int(y-0.5*l))self.line(x-1,yl,int(x0.5*l),int(y0.5*l-1))self.line(xl-1,yl-1,int(x1.5*l-1),int(y0.5*l-1))#画8*8的图列行def p8(self,page,x,y):for e in range(8):bytebin(page[e]).replace(0b,)while len(byte)8:byte0bytefor i in range(8):if byte[i]1:self.pixel(xe,yi,int(byte[i]))#画16*16的图列行def p16(self,page,x,y):for e in range(32):bytebin(page[e]).replace(0b,)while len(byte)8:byte0bytefor i in range(8):if byte[i] and e16:self.pixel(xe,yi,int(byte[i]))elif byte[i] and e16:self.pixel(x-16e,y8i,int(byte[i]))#画32*32的图列行def p32(self,page,x,y):for e in range(128):bytebin(page[e]).replace(0b,)while len(byte)8:byte0bytefor i in range(8):if byte[i] and e32:self.pixel(xe,yi,int(byte[i]))elif byte[i] and 32e64:self.pixel(xe-32,y8i,int(byte[i]))elif byte[i] and 64e96:self.pixel(xe-64,y16i,int(byte[i]))elif byte[i] and 96e128:self.pixel(xe-96,y24i,int(byte[i]))class SSD1306_I2C(SSD1306):def __init__(self,i2c, addr0x3c, external_vccFalse):self.i2c i2cself.addr addrself.temp bytearray(2)# buffer需要8 * 128的显示字节加1字节命令self.buffer bytearray(8 * 128 1)self.buffer[0] 0x40 # Co0, D/C1self.framebuf framebuf.FrameBuffer1(memoryview(self.buffer)[1:], 128, 64)super().__init__(external_vcc)def write_cmd(self, cmd):self.temp[0] 0x80 # Co1, D/C#0self.temp[1] cmdself.i2c.writeto(self.addr, self.temp)def write_framebuf(self):self.i2c.writeto(self.addr, self.buffer) 功能 显示ASCII字符 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)oled.text(hello world,0,0)oled.show()画任意直线 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)oled.line(0,2,50,60)oled.show()画横线 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)oled.hline(2,30,80)oled.show() 画竖线 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)oled.vline(20,0,40)oled.show() 画矩形 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c) #左上角xy坐标长宽 oled.rect(20,0,40,20)oled.show() 画椭圆 众所周知圆也是椭圆的一种 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c) 参数中心点xy坐标x轴向半径y轴向半径fTrue为填充默认不填充 oled.ellipse(20,30,10,20) oled.ellipse(60,20,10,20,fTrue)oled.show()还有一个参数非常奇怪不常用自己改数字范围0-15体会 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)oled.ellipse(60,20,10,20,m5)oled.show()画立方体 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c) #左前顶面的xy坐标边长 oled.cube(10,10,20)oled.show()画点阵图 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)pic[0x04,0x06,0xFF,0x97,0x57,0x37,0x16,0x04] #8*8点阵数据图像左上角xy坐标。16*1632*32的也一样只不过改函数名oled.p16()而已 oled.p8(pic,30,30)oled.show()翻转 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)pic1[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00, 0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00, 0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0) oled.p16(pic2,16,0) oled.show() #以中心竖直轴翻转填1则正常显示 oled.vv(0) from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)pic1[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00, 0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00, 0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0) oled.p16(pic2,16,0) oled.show() #以中心水平轴翻转 oled.hv(0)反相 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)pic1[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00, 0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00, 0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0) oled.p16(pic2,16,0) oled.show() #默认不反相即默认0 oled.invert(1)滚动 横向滚动 from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)pic1[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00, 0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00, 0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0) oled.p16(pic2,16,0) oled.show() #默认整个页面一起滚动 #参数 #滚动起始页滚动结束页 #滚动方向默认向左填0向右 #滚动速度0-7默认0不一定数字越大速度越大 oled.h_scroll()oled横滚 纵向滚动 目前我只能实现向上滚还有点bug from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)pic1[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00, 0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00, 0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0) oled.p16(pic2,16,0) oled.show() oled.scroll(hScrollOn0) oled纵滚 奇葩滚动 这个函数比较复杂可实现斜着动不同区域各动各的有点bug from ssd1306 import SSD1306_I2C from machine import Pin,I2C i2cI2C(0,sclPin(5),sdaPin(4)) oledSSD1306_I2C(i2c)pic1[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00, 0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00, 0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0) oled.p16(pic2,16,0) oled.show() #10个参数。均有默认值 #vScrollOn是否开启竖直滚动默认0关闭竖直滚动置1开启 #vStart竖直滚动开始行 #vEnd竖直滚动结束行 #vSpeed竖直滚动速度数字越大越快 #hScrollOn是否开启横向滚动默认开启置0关闭 #direction横滚方向默认向右置1向左 #hSpeed横滚速度0-7 #hScrollStartPage水平滚动起始页默认0 #hScrollEndPage水平滚动结束页默认7 #hScrollStartColumn水平滚动区域的起始列默认0 #hScrollEndColumn#水平滚动区域的结束列默认127 oled.scroll() oled滚滚滚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做别人一样的网站模板宝塔面板wordpress

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Redis缓存保卫战:拒绝缓存击穿的进攻 前言缓存击穿的定义和原理为何会发生缓存击穿缓存击穿的危害防范缓存击穿结语: 前言 你是否曾经遇到过系统在高并发情况下出现严重性能问题&#xff…

网站开发语言在线检测怎么看一个网站是什么程序做的

文章目录一、全量同步1. 增量同步SQL2. 构建reader3. 构建writer4. 字段对应关系映射5. 构建json6. 选择同步模板7. 查询最早时间8. 修改任务信息9. 添加增量参数10. 数据清理11. 执行任务12. 查看执行日期13. 数据验证15. 查看同步脚本二、基于日期增量同步2.1. 新增新数据2.2…

四川住房建设厅官方网站建设一个网站需要几个角色

目录 一 湖仓一体(Lakehouse) 1 数据仓库 2 数据湖 3 数据仓库和数据湖 4 湖仓一体(Lakehouse)

网站建设中心联系方式自助建站原理

0x01 启动IDA new:反汇编一个新文件go:运行,直接进入IDAPrevious:载入一个我们以前编译过的程序 如果不想每次都看到这个对话框,可以取消该对话框底部的Display at startup(启动时显示)&#x…

软件的定制开发比较好的公司汕头seo排名收费

— 点击蓝字 关注我们 —英雄联盟自国服上线以来,已经陪伴玩家走过了9个年头,目前英雄联盟中的英雄数量已经达到了151位,每一位都各具特色。千珏是一位深受玩家们喜爱的英雄,其在官方英雄的定位中,属于打野英雄&#x…

济南源码网站建设信用网站建设意见

随着人工智能的快速发展,AI数字人播报成为了媒体和信息传播领域的一项创新技术。AI数字人播报是利用人工智能技术创建的一系列短视频,以新闻主播为中心,展示各种场景和情境能够以短视频的形式进行新闻的报道。这种创新的内容形式在社交媒体和…

西安公司网站设计费用广告字设计免费生成

目录 问题解答集 1 目录 2 修订历史纪录 3 1 什么是.net 4 1.1 .net的定义 4 1.2 什么是C# 4 1.3 C#与C,C的相同之处 5 2 有关Update程序 6 2.1 WinForm中Button控件的使用 6 2.2 将double类型的变量保留固定位数的小数部分 7 …

如室设计网站网站建设 素材

类和对象 类的一般形式 访问控制限定符 public 公有成员,谁都可以访问protected 保护成员,只有类自己和子类可以访问private 私有成员,只有类自己可以访问 类和结构的访问控制限定符区别 类的缺省访问控制限定为私有(private)结构的缺省访…

网站建设报告模板建瓯做网站的公司

GET和POST是HTTP协议中两种常用的请求方法,它们在如何向服务器发送数据以及数据传输方式上有所不同。下面是GET和POST的主要区别: 一、数据传输位置: GET:将数据通过URL的查询字符串部分(即URL的参数)传递…

怎么建设维护学校的网站网络游戏吧

问题:Python文件运行时报TabError: inconsistent use of tabs and spaces in indentation 原因:说明Python文件中混有Tab和Space用作格式缩进。这通常是使用外部编辑器编辑Python文件时,自动采用Tab进行格式缩进。 解决:将Tab转…

购房网站系统建设方案微信推广怎么弄

🦉 AI新闻 🚀 ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口 摘要:OpenAI在ChatGPT中引入了一个新功能,允许用户在聊天时任意一个GPTs(即ChatGPT最新推出的AI Agent 智能应用…

做个企业网站多少钱网站公司深圳

MORMOT数据库连接池 MORMOT封装了一堆的PROPS控件,用于连接各种数据库。 MORMOT的封装是武装到了牙齿的,这堆PROPS控件居然数据库连接池也封装好了。这就为我们省了不少事,笔者非常喜欢! 下面拿TOleDBMSSQLConnectionProperties控…

做网站大概需要几个人金融网站建设方案ppt模板下载

摘要:信息时代虽然带给我们无限商机与方便,但也充斥着隐患与危险.由于网络容易受到攻击,导致机密信息的泄密,数据被篡改,轻则引发企业,部门工作陷入瘫痪,个人利益受损,重则危及国家安全和社会稳定,因此保证信息安全已经成为关系国计民生的重要问题之一.而数字签名技…

哪个网站的字体做的特别好资讯网站 整体ui

app端文章查看,静态化freemarker,分布式文件系统minIO 1)文章列表加载 1.1)需求分析 文章布局展示 1.2)表结构分析 ap_article 文章基本信息表 ap_article_config 文章配置表 ap_article_content 文章内容表 三张表关系分析 1.3)导入文章数据库 1.3.1)导入数据…

做企业网站收费多少钱apache网站拒绝访问

# 营救 ## 题目背景 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动得热泪盈眶,开起了门…… ## 题目描述 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车&#…

网站收录量下降中国传媒大学声明

WPF(Windows Presentation Foundation)是一个用于构建桌面应用程序的.NET框架,它支持MVVM(Model-View-ViewModel)架构模式来分离UI逻辑和业务逻辑。以下是一些常用的WPF MVVM开源框架: Prism Prism是由微软…

怎么样可以自己做网站做美食直播哪个网站好

1. 介绍 概念&#xff1a;通过 ref标识 获取真实的 dom对象或者组件实例对象 2. 基本使用 实现步骤&#xff1a; 调用ref函数生成一个ref对象 通过ref标识绑定ref对象到标签 代码如下&#xff1a; 父组件&#xff1a; <script setup> import { onMounted, ref } …

汝阳县建设局网站中企动力为何负面评价那么多

关键字驱动框架&#xff1a;将每一条测试用例分成四个不同的部分 测试步骤&#xff08;Test Step&#xff09;&#xff1a;一个测试步骤的描述或者是测试对象的一个操作说明测试步骤中的对象&#xff08;Test Object&#xff09;&#xff1a;指页面的对象或者元素对象执行的动…

给网站做rss盐城市城南新区建设局网站

GOLANG专栏 Golang基础教程 Golang基础教程 Golang练手算法 Golang练手算法 Golang设计模式 Golang设计模式 Golang数据结构和算法 Golang数据结构和算法 Golang并发编程 Golang并发编程 ORM框架Gorm Golang ORM框架gorm Golang源码分析 Golang源码分析 MySQL教程 MySQ…

网站建设规划书感受网页打不开怎么解决手机

1实现步骤以及说明 1.根据参数获取当前setNoIndex表里现在的No的index值&#xff0c;如果包含关键字当前对应数据&#xff0c;则现在SetIndexNoLeft 表中找到有无未使用并未占用的那条数据&#xff08;被占用的数据IsTaken1&#xff0c;生成后使用当前时间与updated时间进行比…