资源简介
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 程序
相关资源
- 基于STM32RCT6的步进电机驱动程序
- 直流无刷电机方波驱动 stm32 例程代码
- elantech触控板驱动程序 v13.6.11 官方最
- 联想y470无线网卡驱动 for 32位64位
- 松下plc FP-XH的驱动
- IMX385驱动代码.zip
- 组态王驱动开发包3.0.0.7(中文)
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- CASS9.1最新S4数据及驱动+ET199数据及驱
- 带有死区延时的H桥直流电机驱动电路
- USB转串口驱动,FT232R驱动程序,最新
- 德卡D3读卡器测试程序驱动文件
- WinCE下CP210x的驱动程序
- ubuntu9.10 可加载内核模块和字符设备驱
- MCGS触摸屏西门子s7_1200驱动
- FPGA在步进电机驱动上的应用实例及代
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- RA8806液晶驱动程序
- 内核驱动进程保护演示程序
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- 组态王中S7-300TCP驱动
- STC12C5A60S2 CH4521 驱动数码管 显示
- STM32F103 CC2500完整驱动(模拟SPI)
- 430系列单片机USBFET下载驱动
- dell阵列卡驱动s100 s300 2008 R2.rar
- keil vcom windows 7 64bit 驱动
- windows ce 系统的GPIO驱动程序
- 2440 cs8900a 网卡驱动程序
- USB 驱动 让电脑与arm进行通信
评论
共有 条评论