HT1621B驅動液晶LCD連線及程式
硬體連線:微控制器使用stm8s103k的32腳晶片,來驅動HT1621B顯示LCD。
(1)微控制器與HT1621之間只需連線3根線:CS,WR,DATA。
(2)HT1621的VC和vlcd都直接連線的5V電源。
(3)ht1621與LCD之間需要把com0~com3,seg0-seg15都對應連線起來。
軟體部分:
#include "stm8s.h"
#include "STM8S103k.h"
#define BIAS 0x52 //0b1000 0101 0010 1/3duty 4com
#define SYSDIS 0X00 //0b1000 0000 0000 關振系統蕩器和LCD偏壓發生器
#define SYSEN 0X02 //0b1000 0000 0010 開啟系統 振盪器
#define LCDOFF 0X04 //0b1000 0000 0100 關LCD偏壓
#define LCDON 0X06 //0b1000 0000 0110 開啟LCD偏 壓
#define XTAL 0x28 //0b1000 0010 1000 外部接時鐘
#define RC256 0X30 //0b1000 0011 0000 內部時鐘RC256K
#define TONEON 0X12 //0b1000 0001 0010 開啟聲音 輸出
#define TONEOFF 0X10 //0b1000 0001 0000 關閉聲音輸出
#define WDTDIS 0X0A //0b1000 0000 1010 禁止看門狗
#define TONE_4K 0x80 //4k聲音輸出頻率
#define TONE_2K 0xC0
//HT1621控制位(液晶模組介面定義,根據自已的需要更改)
_Bool PB_ODR_ODR7 @PB_ODR:7;//CS
_Bool PB_ODR_ODR5 @PB_ODR:5;//WR
_Bool PB_ODR_ODR6 @PB_ODR:6;//DATA
#define CLS_HT_WR PB_ODR_ODR5 = 0 //拉低
#define SET_HT_WR PB_ODR_ODR5 = 1 //拉高
#define CLS_HT_CS PB_ODR_ODR7 = 0 //拉低
#define SET_HT_CS PB_ODR_ODR7 = 1 //拉高
#define SET_HT_DAT PB_ODR_ODR6 = 1 //資料位
#define CLS_HT_DAT PB_ODR_ODR6 = 0 //資料位
//-----------------------------------------------------------------------------------------
//函式名稱:Delay()
//功 能:延時子程式
//-----------------------------------------------------------------------------------------
void Delay(uchar us) //5,7,9
{
while(--us);
}
//-----------------------------------------------------------------------------------------
//函式名稱:DelayMS()
//功 能:延時子程式
//-----------------------------------------------------------------------------------------
void DelayMS(uint iMs)
{
uint i,j;
for(i=0;i
for(j=0;j<65;j++)
{
Delay(1);
}
}
void port_init(void)
{
PB_DDR = 0xFF;//0x80;
PB_CR1 = 0xFF;//0x80;
PB_CR2 = 0x00;
//PD_DDR = 0x1c;
//PD_CR1 = 0x1c;
//PD_CR2 = 0x0;
PE_DDR= 0x20;//PE5---output
PE_CR1= 0x20;
PE_CR2=0x00;
}
//-----------------------------------------------------------------------------------------
//函式名稱:Ht1621Wr_Data()
//功 能:寫資料函式,cnt為傳送資料位數,資料傳送為低位在前
//-----------------------------------------------------------------------------------------
void Ht1621Wr_Data(uchar Data,uchar cnt)
{
uchar i;
for (i=0;i
{
CLS_HT_WR;
DelayMS(3);
if((Data & 0x80)==0x80)
{
SET_HT_DAT;
}
else
{
CLS_HT_DAT;
}
SET_HT_WR;
DelayMS(3);
Data<<=1;
}
}
//-----------------------------------------------------------------------------------------
//函式名稱:void Ht1621WrOneData(uchar Addr,uchar Data)
//功能描述: HT1621在指定地址寫入資料函式
//引數說明:Addr為寫入初始地址,Data為寫入資料
//說 明:因為HT1621的資料位4位,所以實際寫入資料為引數的後4位
//-----------------------------------------------------------------------------------------
void Ht1621WrOneData(uchar Addr,uchar Data)
{
CLS_HT_CS;
DelayMS(1);
Ht1621Wr_Data(0xa0,3); //寫入資料標誌101
Ht1621Wr_Data(Addr<<2,6); //寫入地址資料
Ht1621Wr_Data(Data<<4,4); //寫入資料
SET_HT_CS;//
}
//-----------------------------------------------------------------------------------------
//函式名稱:void Ht1621WrOneNum(uchar Addr,uchar Num)
//功能描述: HT1621在指定地址寫入一個數字(0-9)函式
//引數說明:Addr為寫入初始地址,Num為寫入資料
//說 明:因為HT1621的資料位4位,所以實際寫入資料為引數的後4位
//-----------------------------------------------------------------------------------------
void Ht1621WrOneNum(uchar Addr,uchar num)
{
CLS_HT_CS;//HT1621_CS=0;
Ht1621Wr_Data(0xa0,3); //寫入資料標誌101
Ht1621Wr_Data(Addr<<2,6); //寫入地址資料
Ht1621Wr_Data(num,8);//寫一個完整的數。就是連續寫兩個數。
SET_HT_CS;//
}
//-----------------------------------------------------------------------------------------
//函式名稱:void Ht1621WrAllData()
//功能描述: HT1621連續寫入方式函式
//說 明:HT1621的資料位4位,此處每次資料為8位,寫入資料總數按8位計算
//-----------------------------------------------------------------------------------------
void Ht1621WrAllData(void)
{
uchar i;
CLS_HT_CS;//
Ht1621Wr_Data(0xa0,3); //寫入資料標誌101
Ht1621Wr_Data(0x00<<2,6); //寫入地址資料
for (i=0;i<16;i++)
{
Ht1621Wr_Data(0x00,8);//0x00,8); //寫入資料
}
SET_HT_CS;//
}
//-----------------------------------------------------------------------------------------
//函式名稱:void Ht1621WrCmd(uchar Cmd)
//功能描述: HT1621命令寫入函式
//引數說明:Cmd為寫入命令資料
//說 明:寫入命令標識位100
//-----------------------------------------------------------------------------------------
void Ht1621WrCmd(uchar Cmd)
{
CLS_HT_CS;//HT1621_CS=0;
DelayMS(1);
Ht1621Wr_Data(0x80,4); //寫入命令標誌100
Ht1621Wr_Data(Cmd,8); //寫入命令資料
SET_HT_CS;//HT1621_CS=1;
}
//-----------------------------------------------------------------------------------------
//函式名稱:void Ht1621_Init(void)
//功能描述: HT1621初始化
//說 明:初始化後,液晶屏所有欄位均顯示
//-----------------------------------------------------------------------------------------
void Ht1621_Init(void)
{
SET_HT_CS;//HT1621_CS=1;
SET_HT_WR;//HT1621_WR=1;
SET_HT_DAT;//HT1621_DAT=1;
DelayMS(20); //延時使LCD工作電壓穩定
Ht1621WrCmd(BIAS);
Ht1621WrCmd(RC256); //使用內部振盪器
Ht1621WrCmd(SYSDIS);
Ht1621WrCmd(WDTDIS);
Ht1621WrCmd(SYSEN);
Ht1621WrCmd(LCDON);
DelayMS(20); //延時一段時間
Ht1621WrAllData();
}
void main()
{
uchar i=0x1d;
CLK_ICKR |= 0x01; //開啟內部高速RC
//CLK_CKDIVR = 0x1B; //fcpu=2M fmaster=2/8=0.25M
//CLK_CKDIVR = 0x1a; //fcpu=2M fmaster=2/4=0.5M//可以工作
CLK_CKDIVR = 0x18; //fcpu=2M fmaster=2/1=2M //可以工作
port_init();
Ht1621_Init(); //上電初始化LCD
while(1)
{
if(i%2)
{
Ht1621WrOneNum(1,0x06);//1
Ht1621WrOneNum(3,0xe3);//2
Ht1621WrOneNum(5,0xa7);//3
Ht1621WrOneNum(7,0x36);//4
Ht1621WrOneNum(9,0xb5);//5
}
else
{
Ht1621WrOneNum(1,0xf5);//6
Ht1621WrOneNum(3,0x07);//7
Ht1621WrOneNum(5,0xf7);//8
Ht1621WrOneNum(7,0xb7);//9
Ht1621WrOneNum(9,0xd7);//0
}
i=i-1;
if(i==0x01)
{
i = 0x21;
}
//PE_ODR=PE_ODR^0x20;
DelayMS(200);
}
}
注:程式部分參考了網上很多人的程式碼,在此表示感謝!
http://www.51hei.com/mcu/3253.html
相關推薦
HT1621B驅動液晶LCD連線及程式
硬體連線:微控制器使用stm8s103k的32腳晶片,來驅動HT1621B顯示LCD。 (1)微控制器與HT1621之間只需連線3根線:CS,WR,DATA。 (2)HT1621的VC和vlcd都直接連線的5V電源。 (3)ht1621與LCD之間
VK1621最佳替代HT1621 LCD液晶驅動IC應用電路及所有封裝的圖片介紹解析
VK1621B是128模式(32x4),記憶體對映和多功能液晶驅動程式。S / W的VK1621配置特性使得它適合於多種LCD應用包括液晶顯示模組和顯示子系統。只用三或四線的主機控制器連線VK1621之間的介面要求。VK1621包含一個電源關閉命令來降低功耗。 VK1621產品特徵:
Arduino驅動I2C介面12864LCD大屏液晶模組方法及庫檔案
關鍵詞:Arduino顯示,12864液晶模組,中文顯示,IIC介面,I2C介面,12864驅動程式 液晶顯示模組目前在中國發展已經有30多個年頭了,市場上應用最廣泛的要屬於128*64點陣的顯示屏,從型別上分COB,COG及OLED, 穩定性和經濟性最好要屬於COB工藝的
《Linux驅動開發詳解》——LCD裝置驅動重要資料結構及驅動框架
核心檔案:/drivers/video/fbmem.c 18.2.3.Linux幀緩衝相關資料結構與函式 1. fb_info結構體(最關鍵) /* struct fb_info 結構體 */ struct fb_info { int node;
Python核心知識點:深入瞭解字串的拆分,連線及拼接教程
生活中總有幾樣註定的事:死亡、稅單以及需要處理字串的程式設計師。 字串可以有多種形式。 它們可以是非結構化的文字,使用者名稱,產品描述,資料庫列表名,或者其它任何我們使用語言描述的內容。 既然字串資料幾乎無處不在,那麼掌握所使用的工具如何進行字串處理是非常重要的。 幸運的是,與其它語言甚至舊版本的Python
mysql 表連線//及any in exists
內連結: select * from tableA inner join tableB on tableA.列=tableB.列 外連線:(笛卡兒積) select * from tableA full join tableB on tableA.列=tableB.列 左連線:
Arduino 入門學習筆記7 I2C LCD1602液晶顯示實驗 及 超聲波感測器距離檢測
I2C 簡介 I2C匯流排是由Philips公司開發的一種簡單、雙向二線制同步序列匯流排。它只需要兩根線即可在連線於總線上的器件之間傳送資訊。 主器件用於啟動匯流排傳送資料,併產生時鐘以開放傳送的器件,此時任何被定址的器件均被認為是從器件.在總線上主和從、發和收的關係不是恆定的,而取
Note07_Key按鍵驅動_共享中斷及中斷上下半部機制
共享中斷機制: 1)共享中斷 即對於同一個中斷源的1次觸發,會同時按某個順序有兩個或兩個以上的中斷處理響應,也就是多個處理函式共享同一個中斷號。 2)若需設定共享中斷,則: 中斷申請函式: ret = request_irq( irqnum, d
低通濾波器原理及程式
C原理及程式碼: 0低通數字濾波 解析: 低通濾波也稱一階滯後濾波,方法是第N次取樣後濾波結果輸出值是(1-a)乘第N次取樣值加a乘上次濾波結果輸出值。可見a<<1。 該方法適用於變化過程比較慢的引數的濾波的C程式函式如下: float low_filt
13-編寫WIFI模組連線MQTT程式,和除錯助手測試通訊
直接上程式吧 local SubscribeTopic = "wifi/user".."/"..clientid PublishTopic = "wifi/device".."/"..clientid local UsartReceiveData=""; lo
mysql遠端連線及使用者相關命令
一、建立使用者並授權 登入root: [email protected]:~# mysql -u root -p 建立 username (使用者) 使用password (密碼) 從任何主機連線到mysql伺服器: mysql>GRANT ALL PRIVILEGE
10種ADC軟體濾波方法及程式
轉自:億芯工程師部落格 10種AD取樣的軟體濾波方法 10種AD取樣的軟體濾波方法 1、限幅濾波法(又稱程式判斷濾波法) A、方法: 根據經驗判斷,確定兩次取樣允許的最大偏差值(設為A) 每次檢測到新值時判斷: 如果本次值與上次值之差<=A,則本次值有效 
長連線及心跳保活原理簡介
轉載地址:https://caofengbin.github.io/2018/03/16/dhcp-and-nat/ 長連線及心跳保活原理簡介 本文簡要的分析了長連線產生的背景以及所解決的問題,並對比了keep-alive與心跳機制對長連線保活的影響,最後詳細的介紹了心跳
首頁 > 系統相關 > 正文 小米手機遠端和電腦互相連線及控制的方法
【文章摘要】Windows系統自帶了一個遠端桌面服務,我們可以很方便利用這個服務來進行遠端桌面控制,很多人會用電腦進行遠端終端登陸,用手機進行遠端桌面訪問的人就不多了。下面詳細給大家說明。 原文連結:http://bbs.xiaomi.cn/thread-6748034-1-1.html
十二、Linux驅動之LCD驅動
1. 基本概念 LCD是Liquid Crystal Display的簡稱,也就是經常所說的液晶顯示器。LCD能夠支援彩色影象的顯示和視訊的播放,是一種非常重要的輸出裝置。如果我們的系統要用GUI(圖形介面介面),比如minigui,MicroWindows
MongoDB遠端連線及注意事項
MongoDB的安全模式預設是關閉的,也就是不需要賬號密碼就能訪問資料庫。在 預設情況下啟動MongoDB是沒有開啟認證功能的,如果需要使用賬號密碼驗證連線功能,就需要開啟使用者認證的開關。 這裡使用robomongo工具舉例: 1、建立一個連線 2、在開啟認證模式之前先建立一
android開發環境-- 1 夜神模擬器連線及資料庫匯出
啟動夜神模擬器的開發者選項 進入螢幕上的[設定],如圖 2,進入[關於平板電腦],如圖 3,點選5次[版本號] 4,退回到[設定]目錄,會看到[開發者選項],如圖 5,進入[開發者選項],選中[USB除錯],或選擇其他需要選項,如圖
Http長連線及短連線
一、HTTP協議與TCP/IP協議的關係 HTTP的長連線和短連線本質上是TCP長連線和短連線。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網路層使用IP協議。 IP協議主要解決網路路由和定址問題,TCP協議主要解決如何在IP層之上可靠地傳遞資料包,
Linux的遠端連線及Linux系統下Tomcat部署
Linux的遠端需要用的軟體有Xshell,Xftp 本人使用VMware12Pro虛擬機器,Linux系統為CentOS7,使用區域網進行遠端連線 Xshell和Xftp沒有安裝的話可以取官網下載,但Xshell需要驗證資訊,所以也可以去360電腦軟體下載 在VMwa
通過Maven新增Oracle驅動依賴的步驟及問題
一、在maven3的pom.xml中新增依賴 <!-- Spring Boot JDBC --> <dependency> <groupId>org.springframework.