HT66F50的应用_Devin_新浪博客

今年有些意外,还得研究研究HT66F50。PDF里面已经讲解了它强大的功能,这里我就不讲了。(个人觉得我这种条件下使用,芯片上没有集成串口通信,有点遗憾。)

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

一、使用过程的区别:

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++;     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值