/********************************************************
功能描述: HT1621芯片测试程序
说 明:本测试程序能够测试HT1621的每一个字段,
依次点亮每一个字段
参数:
********************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
#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 内部时钟
#define TONEON 0X12 //0b1000 0001 0010 打开声音输出
#define TONEOFF 0X10 //0b1000 0001 0000 关闭声音输出
#define WDTDIS 0X0A //0b1000 0000 1010 禁止看门狗
//HT1621控制位(液晶模块接口定义,根据自已的需要更改)
sbit HT1621_DAT=P3^4; //HT1621数据引脚
sbit HT1621_CS=P3^2; //HT1621使能引脚
sbit HT1621_WR=P3^3; //HT1621时钟引脚
sbit P1_5=P1^5;
uchar code
Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00};
//delay us
void Delay(uchar us) //5,7,9
{
while(--us);
}
//delay ms
void DelayMS(uint iMs)
{
uint i,j;
for(i=0;i
for(j=0;j<65;j++) Delay(1);
}
/******************************************************
写数据函数,cnt为传送数据位数,数据传送为低位在前
*******************************************************/
void Ht1621Wr_Data(uchar Data,uchar cnt)
{
uchar i;
for (i=0;i
{
HT1621_WR=0;
_Nop();
HT1621_DAT=Data&0x80;
_Nop();
HT1621_WR=1;
_Nop();
Data<<=1;
}
}
/********************************************************
函数名称:void Ht1621WrCmd(uchar Cmd)
功能描述: HT1621命令写入函数
全局变量:无
参数说明:Cmd为写入命令数据
返回说明:无
说 明:写入命令标识位100
********************************************************/
void Ht1621WrCmd(uchar Cmd)
{
HT1621_CS=0;
_Nop();
Ht1621Wr_Data(0x80,4); //写入命令标志100
Ht1621Wr_Data(Cmd,8); //写入命令数据
HT1621_CS=1;
_Nop();
}
/********************************************************
函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)
功能描述: HT1621在指定地址写入数据函数
全局变量:无
参数说明:Addr为写入初始地址,Data为写入数据
返回说明:无
说 明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位
********************************************************/
void Ht1621WrOneData(uchar Addr,uchar Data)
{
HT1621_CS=0;
Ht1621Wr_Data(0xa0,3); //写入数据标志101
Ht1621Wr_Data(Addr<<2,6); //写入地址数据
Ht1621Wr_Data(Data<<4,4); //写入数据
HT1621_CS=1;
_Nop();
}
/********************************************************
HT1621测试程序,2008-2-13, 22:41:43
函数名称:void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)
功能描述: HT1621连续写入方式函数
全局变量:无
参数说明:Addr为写入初始地址,*p为连续写入数据指针,
cnt为写入数据总数
返回说明:无
说 明:HT1621的数据位4位,此处每次数据为8位,写入数据
总数按8位计算
********************************************************/
void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)
{
uchar i;
HT1621_CS=0;
Ht1621Wr_Data(0xa0,3); //写入数据标志101
Ht1621Wr_Data(Addr<<2,6); //写入地址数据
for (i=0;i
关键字:HT1621 液晶驱动芯片 51单片机
引用地址:HT1621液晶驱动芯片的51单片机程序
{
Ht1621Wr_Data(*p,8); //写入数据
p++;
}
HT1621_CS=1;
_Nop();
}
/********************************************************
函数名称:void Ht1621_Init(void)
功能描述: HT1621初始化
全局变量:无
参数说明:无
返回说明:无
版 本:1.0
说 明:初始化后,液晶屏所有字段均显示
********************************************************/
void Ht1621_Init(void)
{
HT1621_CS=1;
HT1621_WR=1;
HT1621_DAT=1;
DelayMS(2000); //延时使LCD工作电压稳定
Ht1621WrCmd(BIAS);
Ht1621WrCmd(RC256); //使用内部振荡器
Ht1621WrCmd(SYSDIS);
Ht1621WrCmd(WDTDIS);
Ht1621WrCmd(SYSEN);
Ht1621WrCmd(LCDON);
}
/**********************************/
void main()
{
uchar i,j,t;
Ht1621_Init(); //上电初始化LCD
DelayMS(1000); //延时一段时间
while(1){
Ht1621WrAllData(0,Ht1621Tab,16); //清除1621寄存器数据,暨清屏
for (i=0;i<32;i++)
{
t=0x01;
for (j=0;j<4;j++)
{
Ht1621WrOneData(i,t);
t<<=1;
t++;
P1_5=~P1_5;
DelayMS(5000);
}
}
}
}
上一篇:51通讯协议—CRC16校验
下一篇:基于单片机的静电探针自动测量系统设计
推荐阅读最新更新时间:2024-03-16 13:48
51单片机驱动触摸屏综合实验源程序
第1步:根据开发板单片机型号选择“实验28:开发板资源数据下载 - 1、开发板资源数据下载”程序下载到STC8A开发板中运行,下载程序时ISP软件设置:用户程序运行时的IRC频率22.1184MHZ 第2步:光盘资料 - 上位机数据下载源程序- 运行串口文件下载V1.0 - 下载 (“开发板资源数据:开发板触摸屏综合实验资源数据.bin(地址:实验30-准备工作)”)资源数据到开发板,起始扇区设置为0,波特率设置57600; 第3步:根据开发板单片机型号选择“实验28:开发板资源数据下载 - 2、触摸屏资源数据下载”程序下载到STC8A开发板中运行,下载程序时ISP软件设置:用户程序运行时的IRC频率22.1184MHZ
[单片机]
8051单片机教程第二课:单片机的内部、外部结构(一)
一、单片机的外部结构 拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。1、电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。2、振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按图1接上即可。3、复位引脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。4、EA引脚:EA引脚接到正电源端。至此,一个单片机就接好,通上电,单片机就开始工作了。 我们的第一个任务是要用单片机点亮一只发光二极
[单片机]
51单片机:8x8点阵显示心形图案
单片机开发板是自己做的,电路很简单8*8点阵的行和列分别接在单片机的p0口和p1口,p0口记得要上拉电阻哦,我测试成功见图片, #include reg52.H unsigned char code tab ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code graph ={0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00}; unsigned char cnta; void main(void) { unsigned int i,j; TMOD=0x01; TH0=(65536-2000)/256; TL0=(6553
[单片机]
51单片机实习-数码管动态显示4399(模块化编程)
#include reg52.h sbit wei0=P1^0; sbit wei1=P1^1; sbit wei2=P1^2; sbit wei3=P1^3; int zxm ={0x98,0x98,0xb0,0x99}; void delay(int i) { while(i--) { int j=0; for(;j 115;j++); } } void display() { int i; for( i=0;i 4;i++) { switch(i) { case 0: wei0=0,wei1=1,wei2=1,wei3=1;break; case
[单片机]
C51单片机模拟I2C总线驱动程序设计(2)
/************************************ I2C_RcvB ******************************** 函数名:uchar I2C_RcvB() 入口: 出口:uchar 型数据 功能描述: 接收从器件传来的数据,并判断总线错误(不发应答信号),收完后需要调用应答函数。 调用函数: 全局变量: ******************************************************************************* uchar I2C_RcvB() { uchar retc;
[单片机]
51单片机485通讯讲解 通俗易懂
第九节:串口通讯之485通讯 (1)开场白: 串口通讯有三种常用的硬件方式。 第一种是TTL方式。比如两个单片机的RX,TX引脚直接连接上(甲的RX连接乙的TX, 甲的TX连接乙的RX),这种通讯距离最短,局限于两三米长的距离。 第二种是232方式。两个CPU之间都经过了两个MAX232等电平转换芯片,比如单片机跟电脑的串口通讯。这种最大传输距离大概十米左右。 第三种是485方式。两个CPU之间都经过了两个MAX485等电平转换芯片,此种方式在工控上应用最多,尤其是距离长,要求一台主机控制多台设备的情况下。从地址呼叫原理上看,一台主机应该可以控制N多台从机,但是书上说一台主机最多可以控制32个从机,可能主要是从电阻匹配的角度来考虑
[单片机]
信息纽扣DS1991在51单片机系统中的应用
DS1991是Dallas公司的1-wire总线信息纽扣家庭中的一员,是一种加密存储器型信息纽扣。它内部集成了1Kbit是非易失性存储器及加密保护逻辑,封装于直径为16mm、厚约6mm的不锈钢外壳中,何种小巧、操作便捷,防潮、抗震、防灰尘,可在恶劣的环境中实现带密码保护的数据传送。
1 DS1991的特点
DS1991是一种很有特色的加密存储器型TM卡,为用户的保密数据提价节可靠的保护措施。DS1991内部有1152位的密码保护存储器区,512位的非密码保护存储器scratchpad。密码保护存储器被分为三个可独立操作的密钥子存储器(subkey),每区为384位,每个密钱子区都有自己的64位密码及64位的ID码,对密
[单片机]
【51单片机快速入门指南】6.2:SPI 、八线、四线控制 LCD12864 屏幕及Proteus的仿真
普中51-单核-A2 STC89C52 Windows 10 20H2 Proteus 8 Frofessional v8.9 SP2 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 移植自发布一个ST7920的LCD12864 Proteus仿真模型,支持串口和4bit模式通讯 —— cdhigh 参考资料:《LCD12864液晶显示模块数据手册(带字库)》 硬知识 LCD12864简介 LCD12864液晶屏,背面3个COB牛屎堆,一个主控芯片ST7920,另外两个是移位芯片ST7921. 主控芯片ST7920的
[单片机]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月13日历史上的今天
厂商技术中心