资源简介
TM1629的驱动程序LCD+数码管+按扫描 很详细很完整
代码片段和文件信息
#include
#include
#define nop _nop_();
#define uchar unsigned char
#define uint unsigned int
sbit stb =P1^0; //定义片选通讯口
sbit clk =P1^1; //定义时钟通讯口
sbit dio =P1^2; //定义数据输入/输出通讯口
bdata uchar y=0;//定义可以位寻址全局变量y
sbit y7 =y^7;
uchar show[16] = {0x760x7b0x380x380x3f0x400x400x400x400x40};//初始化显示“HELLO”字符代码
uchar CODE[10] = {0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}; //0~9显示代码
uchar TIME_secondsseconds_2sub_1sub_2shi_1shi_2; //时间寄存器依次从秒个位至小时十位
uchar TIME_count; //定时中断控制制位
uchar T_count; //时钟小数点闪
uchar count4; //保存按键控制对应的数码管闪
uchar key_FLAG1;//按键标志位
uchar key_COUNT1;//按键移动数动显示数据
uchar key_LED=0; //按键单独显示赋值寄存器
uchar count7;
/*********************************
功能: TM1629写数据
**********************************/
void write(uchar wr_data)
{
uchar i;
stb =0; //给有效的片选信号(片选信号是低电平有效)
nop;
nop;
for(i=0;i<8;i++)//开始传送8位数据,每循环一次传送一位数据
{
clk =0;
nop;
nop;
wr_data >>= 1;//移位数据,低位在前!
nop;
dio = CY;
nop;
nop;
clk =1;
nop;
}
}
/*********************************
功能:读按键子程序 由y 返回1BIT按键数据
**********************************/
unsigned char read()
{
uchar d;
stb = 0; //给有效的片选信号(片选信号是低电平有效)
dio = 1; //将DIO置高,因为没有按键按下时,键值默认为00H,此时为了与键值有区别
for(d=0;d<8;d++)
{
clk = 0;
nop;
if(dio==1)
{
y7 = 1;
}
else
{
y7 = 0;
}
clk = 1;
if(d!=7){y=(y>>1);}
nop;
nop;
}
return(y);
}
/*********************************
TM1629控制指令
功能: 驱动LED屏做相应的显示
**********************************/
void xianshi(uchar show_led[16])
{
uchar h;
stb = 1;
clk = 1;
dio = 1;
write(0x40);//写数据到显示寄存器,采用地址自动加一
stb = 1;
write(0xc0);//显示寄存器的00H单元开始
for(h=0;h<16;h++)
{
write(show_led[h]);//给显示寄存器送数据,
}
stb=1;
write(0x8b);//显示控制参数,点亮数码屏幕,亮度可以通过改变低三位调节
stb = 1;
}
//-------读按键以及相应的显示处理-------
void panjian()
{
uchar count3key[4];
stb = 1;
write(0x42);//送读按键命令(42H),
for(count3=0;count3<5;count3++)
{
key[count3]=read(); //读4BIT按键数据,
}
if((key_FLAG1 != 0x02))
{
if((key[0]==0x01)){key_LED= 0;key_FLAG1 = 0x01;show[key_COUNT1] = CODE[key_LED];} //K3与SEG1按键按下,数码管显示数字0
if((key[0]==0x02)){key_LED= 1;key_FLAG1 = 0x01;show[key_COUNT1] = CODE[key_LED];} //K2与SEG1按键按下,数码管显示数字1
if((key[0]==0x04)){key_LED= 2;key_FLAG1 = 0x01;show[key_COUNT1] = CODE[key_LED];} //K1与SEG2按键按下,数码管显示数字2。
if((key[0]==0x08)){key_LED= 3;key_FLAG1 = 0x01;show[key_COUNT1] = CODE[key_LED];} //K0与SEG2按键按下,数码管显示数字3。
if((key[0]==0x80)){key_LED= 4;key_FLAG1 = 0x01;show[key_COUNT1] = CODE[key_LED];} //K0与SEG3按键按下,数码管显示数字4。
if((key[0]==0x40)){key_LED= 5;key_FLAG1 = 0x01;show[key_COUNT1] = CODE[key_LED];} //K1与SEG3按键按下,数码管显示数字5。
if((key[0]==0x20)){key_LED= 6;key_FLAG1 = 0x01;show[key_COUNT1] = CODE[key_LED];} //K2与SEG4按键按下,数码管显示数字6。
if((key[0]==0x10)){key_LED= 7;key_FLAG1 = 0x01;show[
- 上一篇:简单易用的摄像头OCX控件
- 下一篇:labview Excel 程序
相关资源
- STM32F103 AM2302温湿度模块驱动例程
- STM32F103 NRF24L01无线通讯模块驱动例程
- stm32f103的PCF8563驱动代码
- STM32并口、串口驱动12864
- TM1616驱动四位数码管
- INA226测量uA级电流驱动程序
- 1602液晶可靠的4位数据线方式驱动_基
- MmLoadDriver内存加载驱动.7z
- ch340 win10 64位驱动
- CH340 CH341驱动,支持win7 win8 win10
- VTSoft win7 64驱动虚拟光驱驱动
- SJE金牌磁条读写器驱动程序
- 佳能MF633/635打印扫描一体驱动
- winPE下整合raid驱动安装windows2003
- CP5711驱动
- USB转串口驱动-CH340
- BIM X3650 m3 阵列卡驱动
- IR2104+IRF540电机驱动电路原理图
- 解决黑苹果键盘或触摸板不能用,亲
- CCD时序驱动电路设计
- 电机驱动模块 altium designer 文件.SchD
- 戴尔H730 H730P阵列卡驱动
- 寻迹小车驱动和主控电路图
- STM32 DS1302驱动代码
- VK2C23 驱动程序
- 基于arduino驱动步进电机旋转魔方的全
- 数码管驱动TM1640驱动程序
- 电机控制中MOSFET和IGBT基础知识
- 筑业软件驱动
- Virtual Audio Cable 4.10 Win10版
评论
共有 条评论