历史上的今天
返回首页

历史上的今天

今天是:2025年02月26日(星期三)

正在发生

2020年02月26日 | LCD12864(KS0108)驱动程序 显示汉字-字符

2020-02-26 来源:51hei

仿真原理图如下
 

#include

#include

#include

#include "hanzi.h"  //汉字库头文件 

#include "shuzi.h"  //字符库头文件 

#define uchar unsigned char

#define uint unsigned int


//   lcd12864(ks0108) 

#define LCD_DATA P2  //LCD8位并行数据口    

sbit LCD_RS=P0^5;          //寄存器选择

sbit LCD_RW=P0^6;          //读/写选择

sbit LCD_EN=P0^7;          //读写使能

sbit LCD_CS1=P0^2;          //右半屏选择,1有效

sbit LCD_CS2=P0^3;          //左半屏选择,1有效

sbit LCD_RST=P0^4;          //复位信号 

//*********************************************//

// 函数声明

void init_lcd(void); 

void lcd_delay(uint time);            //延时 

void lcd_write_com(uchar cmdcode);    //写命令 

void lcd_write_data(uchar Rsspdata);  //写数据 

void lcd_Clr_Scr(void);               //清屏 

void lcd_werite_x_y(uchar x,uchar y); //写地址

void lcd_write_chinese(uchar x,uchar y, uchar hz,uchar *dat); //任意位置显示任意汉字 

void lcd_write_english(uchar x,uchar y, uchar en,uchar *dat); //任意位置显示任意字符 

//****************************************************************************//

//---------------------------------------

//    主函数

//---------------------------------------

void main(void)

{

          init_lcd();     //初始化 

          lcd_Clr_Scr();  //清屏

        while(1)

        {

                lcd_write_english(0,0,0,SHUZI);

                lcd_write_english(0,8,1,SHUZI);

                lcd_write_english(0,16,2,SHUZI);

                lcd_write_english(0,24,3,SHUZI);

                lcd_write_english(0,32,4,SHUZI);

                lcd_write_english(0,40,5,SHUZI);

                lcd_write_english(0,48,6,SHUZI);

                lcd_write_english(0,56,7,SHUZI);

                lcd_write_english(0,64,8,SHUZI);

                lcd_write_english(0,72,9,SHUZI);

                

                lcd_write_chinese(2,0,0,HANZI);

                lcd_write_chinese(2,16,1,HANZI);

                lcd_write_chinese(4,0,2,HANZI);

                lcd_write_chinese(4,16,3,HANZI);

                lcd_write_chinese(4,32,4,HANZI);

                lcd_write_chinese(4,48,5,HANZI);

                lcd_write_chinese(4,64,6,HANZI);

                lcd_write_chinese(4,80,7,HANZI);

                lcd_write_chinese(4,96,8,HANZI);

                while(1);

        } 

//---------------------------------------

//   延时函数

//---------------------------------------

void lcd_delay(uint time)

{

          uint i;

          for(i=0;i}

//---------------------------------------

//   12864初始化函数

//--------------------------------------- 

void init_lcd(void)

{           

          LCD_RST=0;              //液晶复位

          lcd_delay(250);         //适当延时

          LCD_RST=1;              //复位结束

          LCD_CS1=1;                         //左半屏选通

          LCD_CS2=1;                             //右半屏选通        

          lcd_delay(250);         //适当延时

          lcd_write_com(0x3f);    //显示开

}

//---------------------------------------

//   写命令函数

//---------------------------------------

void lcd_write_com(uchar cmdcode)

{                                           

          LCD_RS=0;                        //选择命令寄存器

          LCD_RW=0;                         //写选通

          LCD_DATA=cmdcode;   //将命令写入总线

          _nop_();            //空操作,做短暂的延时

          LCD_EN=1;           //E的下降沿,数据写入

          _nop_();            //空操作,做短暂的延时

          LCD_EN=0;           //E的下降沿,数据写入

}

//---------------------------------------

//   写数据函数

//---------------------------------------

void lcd_write_data(uchar Rsspdata)

{


          LCD_RS=1;                        //选择数据寄存器

          LCD_RW=0;                         //写选通

          LCD_DATA=Rsspdata;  //将数据写入总线

          _nop_();            //空操作,做短暂的延时

          LCD_EN=1;           //E的下降沿,数据写入

          _nop_();            //空操作,做短暂的延时

          LCD_EN=0;           //E的下降沿,数据写入

//---------------------------------------

//   清屏函数

//---------------------------------------

void lcd_Clr_Scr(void)

{

          uchar j,k;

          LCD_CS1=1;                                           //左半屏选通

          LCD_CS2=1;                                           //右半屏选通

          lcd_write_com(0x40+0);        //将列地址写入  

          for(k=0;k<8;k++)

          {

                    lcd_write_com(0xb8+k);    //将行地址写入        

                    for(j=0;j<64;j++)               //每行的64列都写0,因为选了左右两屏,

                    {

                              lcd_write_data(0x00); //64列同时写0

                    }

          }

}

//---------------------------------------

//    地址写入函数

//---------------------------------------

void lcd_werite_x_y(uchar x,uchar y)

{

          y=y&0x7f;                                 //限定范围,列不能超过128

          x=x&0x07;                             //限定范围,行不能超过8

          if(y<64)                    //如果列小于64

          {

                    LCD_CS1=1;                  //选通左半屏

                    LCD_CS2=0;                  //关闭右半屏

                    lcd_write_com(0x40+y);  //将列地址写入  

          }

          else

          {

                    LCD_CS1=0;                  //关闭左半屏

                    LCD_CS2=1;                  //选通右半屏

                    y&=0x3f;

                    lcd_write_com(0x40+y);  //将列地址写入          

          }

          lcd_write_com(0xb8+x);      //将行地址写入        

}

//---------------------------------------

//     指定位置写16*16汉字函数

//---------------------------------------

void lcd_write_chinese(uchar x,uchar y, uchar hz,uchar *dat)

推荐阅读

史海拾趣

DENWIRE公司的发展小趣事

以下是关于DENWIRE公司在电子行业中发展起来的五个相关故事,每个故事都遵循了字数和事实性的要求。

故事一:
DENWIRE公司起初只是一家小型的电线制造商,专注于生产低端音频线缆。然而,随着科技的进步和消费者对于音频质量的追求,公司创始人李先生看到了高品质音频线缆市场的潜力。他带领团队投入大量研发资源,成功开发出了一款具有极低信号损失和出色耐用性的音频线缆,赢得了市场的广泛认可。这款产品不仅让DENWIRE在音频线缆领域崭露头角,也为公司后续的发展奠定了坚实的基础。

故事二:
随着公司规模的扩大,DENWIRE逐渐涉足到了数据传输线缆的生产。在面对激烈市场竞争时,公司坚持创新驱动,注重产品质量。在一次与知名科技公司的合作中,DENWIRE凭借其出色的产品性能和可靠的品质,成功赢得了对方的信任,并签订了长期供货合同。这次合作不仅为DENWIRE带来了可观的收益,也进一步提升了公司在行业内的知名度。

故事三:
在新能源汽车行业蓬勃发展的背景下,DENWIRE敏锐地捕捉到了这一领域的商机。公司迅速调整战略方向,加大了对新能源汽车用线缆的研发和生产投入。经过多次试验和改进,DENWIRE成功开发出了一款符合新能源汽车高标准要求的线缆产品,并在市场上取得了良好的销售业绩。这一成就不仅彰显了DENWIRE的技术实力,也为公司未来的发展开辟了新的道路。

故事四:
面对全球化市场的挑战,DENWIRE积极寻求国际合作与拓展。公司先后与多个国家和地区的知名企业建立了战略合作关系,共同开发新产品、拓展新市场。通过国际合作,DENWIRE不仅学习到了先进的生产技术和管理经验,也进一步提升了自身的品牌影响力和市场竞争力。

故事五:
在环保和可持续发展成为全球共识的背景下,DENWIRE积极响应号召,致力于推动绿色生产和可持续发展。公司投入大量资金引进环保设备和工艺,优化生产流程,减少能源消耗和废弃物排放。同时,DENWIRE还积极参与社会公益活动,回馈社会。这些举措不仅提升了公司的社会形象,也为公司的长期发展注入了新的活力。

CYMBET公司的发展小趣事

随着全球环境问题的日益严重,环保和可持续发展已经成为电子行业的重要议题。CYMBET公司积极响应这一趋势,致力于环保和可持续发展。公司的EnerChip电池芯片采用环保材料制造,具有生物相容性,不会对环境造成污染。此外,CYMBET还积极探索绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。这种对环保和可持续发展的重视不仅体现了CYMBET的社会责任感,也为公司的可持续发展奠定了坚实的基础。

DATATRONICS公司的发展小趣事

DATATRONICS高度重视人才战略的实施。公司积极引进和培养了一批高素质的技术人才和管理人才,为他们提供了良好的工作环境和发展空间。同时,DATATRONICS还建立了完善的激励机制和培训机制,鼓励员工不断创新和进取,共同推动公司的持续发展。

Helium_Systems__Inc.公司的发展小趣事

在20世纪90年代初,一家名为“海曼电子”(虚构名称,类似HEIMANN发音)的初创公司在德国慕尼黑成立。创始人海曼博士凭借其在半导体材料领域的深厚研究背景,带领团队成功研发出了一种新型高效能传感器芯片。这种芯片在温度测量领域表现出色,迅速获得了市场的认可。随着技术的不断迭代,海曼电子逐渐在传感器市场占据了一席之地,并通过持续的技术创新,将产品线扩展至光电子、汽车电子等多个领域。

CTS [CTS Corporation]公司的发展小趣事

为了满足全球市场的需求,CTS开始实施全球化扩张战略。公司在北美、亚洲和欧洲等地设立了生产设施,以便更好地服务全球客户。同时,CTS还积极与各地的合作伙伴建立紧密的合作关系,共同推动电子元器件和传感器市场的发展。

Astro Tool Corp公司的发展小趣事

随着技术的不断成熟和市场的逐步认可,Astro Tool Corp公司开始积极拓展海外市场。通过与国际知名电子制造商建立合作伙伴关系,公司成功将产品打入国际市场。同时,公司还积极参与国际行业展会和交流活动,不断提升品牌知名度和影响力。这些努力不仅为公司带来了更多的订单和合作伙伴,也进一步巩固了其在全球电子制造工具市场的地位。

问答坊 | AI 解惑

各个系列DSP芯片价格

54的一般几十左右 2407系列75左右 55的一百左右 6000的几百上千 根据需求,不同型号价格差异动态范围比较大,只能估计常见的价格 TI网上有报价dollar/100片…

查看全部问答>

完善的工作环境

在室内工作的人群,很多人都有身体上的弊病,处于亚健康的状态,我也是。 设计师Stevie Miles Brewu提出了一个具备革命性的一个完善的工作环境,提出去创立一个合适人体工程学、娱乐及互动的工作环境。该功效包含:可调定位视觉的座位,屏幕, ...…

查看全部问答>

求助单片机飞思卡尔HC08程序问题!!!!

题目:利用数码管和键盘实现10以内四则运算,键盘用于输入,数码管用于显示。要求:通过键盘输入算式,并在数码管上显示该算式,由程序计算运算结果并在数码管上显示。例如:输入1+2= ,则程序把结果03计算出来并显示在最后两位数码管上。键盘上的 ...…

查看全部问答>

PLD EPM7128S里的内容 如何用MAX+plus II 通过JTAG把它倒出来?

求助 PLD EPM7128S里的内容 如何用MAX+plus II 通过JTAG把它倒出来?…

查看全部问答>

TO USB驱动开发的例程问题

本人使用Cy7c68013A进行开发,其它例程都已经完成,控制传输找资料已经完成. 只是剩下   DriverObject->MajorFunction[IRP_MJ_WRITE] = Ezusb_Write;   //写入数据    DriverObject->MajorFunction[IRP_MJ_READ] = E ...…

查看全部问答>

高效率LED驅動電源設計

高效率LED驅動電源設計 作者: 德州儀器Robert Kollman   摘要   本文提供LED特性及驅動電源優缺點的概要說明。文中將介紹數種常見的電源供應應用電路,並且詳細說明其閉迴路設計。本文亦討論LED調光電路,同時介紹兩種調光電路設計 ...…

查看全部问答>

求大家推荐个性价比较高的MCU

要求必须具备一下3点: 1.引脚要有40及以上。 2.带4路以上AD。 3.带USB2.0接口。…

查看全部问答>

大家一起学习PIC单片机之五(4乘4矩阵按键解码LED显示键值)

大家好,本人是PIC单片机新手,但是我很勤奋,我买的ND118-877APIC实验开发板,里面有实例,但是没有源代码,本人自己写代码大家一起交流,希望能陆续写下去,本人QQ476857290 希望大家学习指导 [ 本帖最后由 youmurensha 于 2012-2-26 21:21 编辑 ...…

查看全部问答>

1V压降电路

需要从5V降到4V,供电电流80mA-2A变化,用单个二极管只有0.7V,两个就1.4超了,求助如何实现,不用DC-DC。谢谢!…

查看全部问答>

TI新一代LED驱动器,为仪表板应用实现业界最高额定电压

最近(TI) 推出符合 AEC-Q100 标准的新一代汽车 LED 驱动器,其丰富的特性支持业界最高额定电压、热关断保护以及优化的电磁兼容性 (EMC) 性能。在恶劣的汽车环境中,电子设备必须承受高温、高电压瞬态以及电磁干扰。承受这种恶劣条件并降低电磁辐射 ...…

查看全部问答>