单片机源程序如下:
#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); // ……………………
上一篇:STC89C52RC单片机设计的FM收音机+自动搜台+存储电台
下一篇:51单片机控制八个DS18B20温度传感器显示
推荐阅读最新更新时间:2024-11-17 10:56
设计资源 培训 开发板 精华推荐
- LTM4642IY 5V 输入、800kHz、2.5V 和 1.8V 输出(各为 4A)的典型应用电路
- 用于工业应用的 LT3973EMS 5V 降压转换器的典型应用
- DK-AS-5SGXEA7NES,开发板自带两个Stratix V GX FPGA器件,提供一个硬件平台
- DER-246 - 高效率12V、30W待机电源
- 基于ADV7623的HDMI收发器方案
- LTM4619EV 演示板、26V、双通道 4A 模块稳压器,具有跟踪功能
- AM1G-4815DZ ±15V 1 瓦 DC/DC 转换器的典型应用
- ESP32s2 CO2 监控器
- R1203x071B PWM 升压 DC/DC 转换器白光 LED 的典型应用
- OP495GPZ单电源仪表放大器的典型应用