新闻中心

HT66F50的应用

作者: 时间:2016-11-25 来源:网络 收藏
今年有些意外,还得研究研究HT66F50。PDF里面已经讲解了它强大的功能,这里我就不讲了。(个人觉得我这种条件下使用,芯片上没有集成串口通信,有点遗憾。)

下面我简单介绍一下我在使用的过程中遇到的一些和46F49E/46RU232之间的区别:

本文引用地址://m.amcfsurvey.com/article/201611/321151.htm

一、使用过程的区别:

1.从新开发环境IDE-3000中集成的头文件来看,66F50只给出了相应寄存器的入口地址申明,而并没有像其他两款芯片的头文件一样给出每一个I/O的申明,这使得在使用过程中很是不方便(个人觉得)。因此不得不在使用之前,自己将对应的I/O在头文件申明一遍。

2.66F50引脚的重置功能更加强大。--这也导致在使用过程中对相应寄存器的设置变得更加复杂,不过习惯和熟悉了就好。

3.从个人学习和使用条件上而言,这款芯片上没有集成串口功能,有点遗憾。不过这也符合盛群公司在芯片命名上的特点。比如HT46F49E和HT46RU232两款芯片中,前者就是不带串口功能,而后者则带有串口功能。

二.下面就举一个简单的例子吧。

利用HT66F50在12864上显示一个1、***本程序是在其他程序中截取的一部分,看起来有些凌乱和多余。

#include "HT66F50.h"
#define en_pb3//PB3--12864使能端口定义
#define rs_pb4//PB4
#define rw_pa0//PB5
#define CY_c//进位


void delay(unsigned int t)
{
unsigned int x;
for(;t>0;t--)
for(x=110;x>0;x--);
}

void com(unsigned char com)
{
unsigned char i;
delay(2);
rs=1;//拉高控制,准备写数据
for(i=5;i>0;i--) //先写5个1
{
rw=1;
en=1;
en=0;
}
for(i=3;i>0;i--) //写3个0写指令控制
{
rw=0;
en=1;
en=0;
}
for(i=4;i>0;i--) //写高4位
{
com=com<<1;
rw=CY;
en=1;
en=0;
}
for(i=4;i>0;i--) //再写4个0
{
rw=0;
en=1;
en=0;
}
for(i=4;i>0;i--) //写低4位
{
com=com<<1;
rw=CY;
en=1;
en=0;
}
for(i=4;i>0;i--) //写4个0
{
rw=0;
en=1;
en=0;
}
rs=0;
}


void dat(unsigned char dat)
{
unsigned char i;
delay(2);
rs = 1;
for(i=5;i>0;i--) //先写4个1
{
rw=1;
en=1;
en=0;
}
for(i=3;i>0;i--)//RW写数据控制
{
rw=!rw;
en=1;
en=0;
}
for(i=4;i>0;i--)//写高4位数据
{
dat=dat<<1;
rw=CY;
en=1;
en=0;
}
for(i=4;i>0;i--) //写4个0
{
rw=0;
en=1;
en=0;
}
for(i=4;i>0;i--)//写低4位数据
{
dat=dat<<1;
rw=CY;
en=1;
en=0;
}
for(i=4;i>0;i--)//再写4个0
{
rw=0;
en=1;
en=0;
}
rs=0;//拉低,数据写完
}

void LCD_string(unsigned char *p)
{
while(*p)
{
dat(*p);
p++;
}
}


void init12864()
{
com(0x01);//清屏
delay(5);
com(0x30);//写控制字0x30
delay(5);
com(0x30);
delay(5);
com(0x0c);//写显示状态
delay(5);
com(0x01);//写清屏指令
delay(5);
com(0x06);
}

void init()
{
_smod=0x01;//使用FH作为时钟
_pbc=0x00;//设置pb口为输出模式
_pbpu=0xff;//带上拉电阻
_pac=0xff;//PA口全部用于输入
_papu=0xff;//PA口带上拉电阻
}

void main()
{
init();//初始化单片机
init12864();//初始化12864
com(0x01);//清屏
delay(5);
com(0x83);//写入显示地址
delay(5);
dat(1);//写入数据
while(1);
}

要写的东西太多了,基于时间的关系,现在就只能写到这里了,以后有时间再写吧!



关键词:HT66F50串口通

评论


技术专区

关闭