我用的是STC8F2K16S2单片机 连接液晶显示 SEG9-SEG27 COM0-COM3 #include "STC8F.H" #include "absacc.h" #include "intrins.h" #include "stdio.h" #define uint unsigned int #define uchar unsigned char #define BIAS 0X52 //必须跟硬件电路的COM匹配,1个或者2个COM 0x42 3个COM 0X4A 4个COM 0x52 1/3LCD驱动器偏压 4个公共端口COM #define RC256 0X30 #define SYSTEN 0x02 #define SYSDIS 0x00 #define LCDON 0X06 void sendbitHT1621(uchar nbit,uchar n);//发送一个字节中的n位到HT1621里,驱动程序的最底层部分 void write_com(uchar cmdcode);//写命令到LCD void init_lcd();//初始化LCD屏 void seg_display(uchar col,uchar pag);//显示基本单位点 void scerrn_clear();//清空屏幕的内容 void delay(); //5s //说明:凡是输出IO后缀都是_dr,凡是输入后缀都是_sr sbit ht162x_data_dr=P0^0; sbit ht162x_cs_dr=P0^2; sbit ht162x_wr_dr=P0^3; void main() { init_lcd(); } //发送一个字节中的N位到HT1621里,驱动程序的最底层部分// void sendbitHT1621(uchar nbit,uchar n) { uchar i; for(i=0;i<n;i++) { ht162x_wr_dr=0; if(nbit&0x80) //判断最高位 { ht162x_data_dr=1; } else { ht162x_data_dr=0; } _nop_(); _nop_(); _nop_(); ht162x_wr_dr=1; _nop_(); _nop_(); _nop_(); nbit<<=1; } } //写命令到LCD,驱动液晶程序的一部分// void write_com(uchar cmdcode) { ht162x_cs_dr=0; //选通HT1621 _nop_(); _nop_(); sendbitHT1621(0x80,4); //写入命令 sendbitHT1621(cmdcode,8); //写入控制命令 _nop_(); _nop_(); ht162x_cs_dr=1; _nop_(); _nop_(); _nop_(); } void init_lcd() { ht162x_data_dr=1; ht162x_cs_dr=1; ht162x_wr_dr=1; write_com(SYSTEN); // 打开系统振荡器 write_com(RC256); //启动内部256K RC振荡器 write_com(BIAS); //1/3LCD驱动器偏压 4个公共端口COM write_com(LCDON); //开启LCD } //核心内容 显示基本单位点,col代表X轴,X轴的数据用位来表示,一个字节中的高4位来表示,pag表示Y轴 void seg_display(uchar col,uchar pag) { // pag<<=2; ht162x_cs_dr=0; _nop_(); _nop_(); sendbitHT1621(0XA0,3); //发送写数据模式 高位101 101为6 位RAM 地址, sendbitHT1621(pag<<2,6); //写入地址数据 sendbitHT1621(col,4); //写入数据 ht162x_cs_dr=1; _nop_(); _nop_(); } //清空屏幕内容 void screen_clrar() { uchar i; uchar y=0; for(i=0;i<32;i++) { seg_display(0X00,y); y=y+1; } } 注:这个还有一个毛病就是每次烧完程序之后 要断电很久屏幕才会发生变化,这个也搞不清是什么原因 ![]() |
共1条
1/1 1 跳转至页
请教STC8F2K16S2单片机驱动LCD控制器HT1621B老是出现乱码的问题

关键词: STC8F2K16S2 单片机 HT1621B L
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 |