历史上的今天
今天是:2025年02月25日(星期二)
2020年02月25日 | 89c52单片机+HT1621 LCD驱动程序
2020-02-25 来源:51hei
单片机源程序如下:
#ifndef _HT1621B_H_
#define _HT1621B_H_
#include #include #define NOP _nop_() #define uchar unsigned char #define uint unsigned int #define ComMode 0x52 //4COM,1/3bias 1000 010 1001 0 #define RCosc 0x30 //内部RC振荡器(上电默认)1000 0011 0000 #define LCD_on 0x06 //打开LCD显示 偏压发生器1000 0000 0 11 0 #define LCD_off 0x04 //关闭LCD显示(上电默认) #define Sys_en 0x02 //系统振荡器开 1000 0000 0010 #define Ctrl_cmd 0x80 //写控制命令 1000 #define Data_cmd 0xa0 //写数据命令 1010 //定义HT1621端口 #define SEG_NUM 12 //段码数字个数,即Seg数量/2 sbit CS1=P2^7; sbit WR1=P2^6; sbit DATA1=P2^5; // // 0 1 2 3 4 5 6 7 8 9 灭 uchar code tab[11]={0xF0,0x60,0xD0,0xF0,0x60,0xB0,0xB0,0xE0,0xF0,0xF0,0x00}; uchar code tab1[11] ={0xA0,0x00,0x60,0x40,0xC0,0xC0,0xE0,0x00,0xE0,0xC0,0x00}; /**------------------------------------------------------------------------- Name: SendBit_1621(送数据程序) ---------------------------------------------------------------------------*/ void SendBit_1621(uchar sdata,uchar cnt) //sdata 的高cnt 位写入HT1621,高位在前 { uchar i; for(i=0;i WR1=0; if(sdata&0x80) DATA1=1; else DATA1=0; WR1=1; sdata<<=1; } } /**------------------------------------------------------------------------- Name: SendCmd(送命令) ---------------------------------------------------------------------------*/ void SendCmd_1621(uchar command) { CS1=0; SendBit_1621(0x80,4); //写入标志码“100”和9 位command 命令,由于 SendBit_1621(command,8); //没有使有到更改时钟输出等命令,为了编程方便 CS1=1; //直接将command 的最高位写“0” } /**------------------------------------------------------------------------- Name: Write_1621(送数据和命令程序) ---------------------------------------------------------------------------*/ void Write_1621(uchar addr,uchar sdata,uchar len) { addr<<=2; CS1=0; SendBit_1621(0xa0,3); //写入标志码“101” SendBit_1621(addr,6); //写入addr 的高6位 SendBit_1621(sdata,len); //写入data 的高len位 CS1=1; } /**------------------------------------------------------------------------- Name: all_off(清除1621显示) ---------------------------------------------------------------------------*/ void HT1621_all_off(void) { uchar i; uchar addr=0; for(i=0;i Write_1621(addr,0x00,8); addr+=2; } } /**------------------------------------------------------------------------- Name: all_on(点亮1621全部Seg) -------------------------------------------------------------------------*/ void HT1621_all_on(void) { uchar i; uchar addr=0; for(i=0;i Write_1621(addr,0xff,8); addr+=2; } } /**------------------------------------------------------------------------- Name: Init_1621(初始化1621) -------------------------------------------------------------------------*/ void Init_1621(void) { SendCmd_1621(Sys_en); SendCmd_1621(RCosc); SendCmd_1621(ComMode); SendCmd_1621(LCD_on); } /**------------------------------------------------------------------------- Name: LCDoff(初始化1621) -------------------------------------------------------------------------*/ void LCDoff(void) { SendCmd_1621(LCD_off); } /**------------------------------------------------------------------------- Name: LCDon(初始化1621) -------------------------------------------------------------------------*/ void LCDon(void) { SendCmd_1621(LCD_on); } void DelayMs(uint n) { uchar a,b; uint i; for(i=n;i>0;i--) for(b=80;b>0;b--) for(a=10;a>0;a--)NOP; } #endif //void main(void) //{ // uchar i; // Init_1621(); //初始化HT1621 // HT1621_all_off(); //清空LCD显示 // HT1621_all_on(); //点亮所有Seg // DelayMs(500); //HT1621_all_off(); // while(1) // { // DelayMs(500); // i++; //if(10==i) //??8?????? //i=0; // //Write_1621(10, tab[i],4); //第1个数字显示"1" // Write_1621(11,tab1[i],4); // ……………………
史海拾趣
|
刚学EVC4,编译一个对话框应用程序,可是connect时出错 evc4平台下编译一个对话框应用程序,准备运行时出现进度条connecting,最后出现: Timeout: Failed to connect to the device&nb ...… 查看全部问答> |
|
请大家谈谈单片机设计与嵌入式开发(比如说ARM)的本质区别? 包括系统工作的流程及硬件设计等有哪些本质上的差异?请各位高手畅所欲言。… 查看全部问答> |
|
下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分的时钟频率。STM32的四个时钟源(HSI、HSE、LSI和LSE)也在图中标出;图中间的时钟监视系统(CSS)是在很多ST7的单片机中就出现 ...… 查看全部问答> |
|
我是一个菜鸟,目前有任务利用MSP430F1611制作一个函数发生器,信号最后经DAC12输出,函数波形方波,正弦波,三角波等,频率要求不高200Hz以下,请问各位高手应如何入手,有什么思路,小弟在此谢谢了。… 查看全部问答> |
|
在很多的情况下,用到USART发送或者接受数据,有没有好点的例程,我自己写的,主体部分如下,BYTE WriteData(BYTE *acmd, BYTE length){ for(char i=0; i<length; i++) { &nb ...… 查看全部问答> |
|
你好啊,我现在有个任务是做VB单片机实训,但是不知道怎么做。该任务是用VB做游戏,用单片机做游戏柄,求大神解答。网上的弹球游戏我看过了,我不想要,求其他的游戏!谢谢… 查看全部问答> |




