本篇文章给大家谈谈单片机显示屏c语言程序,以及单片机C语言程序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、单片机控制12232液晶显示的几种C语言源程序2、在c51单片机的显示管上显示四个数字的c语言程序怎么写3、单片机led显示c程序4、单片机led显示程序C语言的
单片机控制12232液晶显示的几种C语言源程序
试试下面的代码:
在atmega128中写通讯协议的头四位数字时好像不能分开一位一位的送,而是要把它当作一个16进制的整体移位写入!程序中的comm为写0表示写12232c的指令,dat为1表示写数据。cs,sclk,std分别为片选、时钟、及数据io口,可用sbit指令定义。
/************lcd初始化程序**************/
void init_lcd (void)
{
wr_lcd (comm,0x30); /*30—基本指令集动作,8位控制接口*/
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
delay (80);
wr_lcd (comm,0x06); /*光标的移动方向,光标右移*/
wr_lcd (comm,0x0c); /*开显示,关光标*/
}
/******************LCD显示任意量程序********************/
void eng_disp (uchar x,uchar y,uchar code *eng)
{
uchar i,j;
wr_lcd (comm,0x30);
wr_lcd (comm,0x80); /*第一行的起始地址*/
for(j=0;jy;j++)
{
for (i=0;ix;i++)
wr_lcd (dat,eng[j*16+i]);
if((y==2)(j==1))
{wr_lcd (comm,0x90);
for (i=0;i8;i++)
wr_lcd (dat,eng[j*16+i]);
}
}
}
/*********************LCD显示中文(欢迎界面)程序******************/
void chn_disp (uchar code *chn) /*lcd显示中文*/
{
uchar i,j;
wr_lcd (comm,0x30);
wr_lcd (comm,0x80); /*第一行的起始地址*/
j=0;
for (i=0;i16;i++)
wr_lcd (dat,chn[j*16+i]);
wr_lcd (comm,0x90); //第二行的起始地址
j=1;
for (i=0;i16;i++)
wr_lcd (dat,chn[j*16+i]);
}
/***************************LCD清内存程序*******************/
void clrram (void) //lcd清内存
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
delay (120);
}
/*************LCD写数据或写命令子程序****************/
void wr_lcd (uchar dat_comm,uchar content) /*lcd写数据*/
{
uchar a,i,j;
delay (40);
a=content; //a为指令代码或者数据
cs=1; //置位cs开始传输数据
sclk=0; //拉低sclk准备给上升沿,发送数据
std=1; //置1
for(i=0;i5;i++) /*先传输起始字节,首先5个1,sclk的上升沿传输启动*/
{
sclk=1;
sclk=0;
}
std=0; //RW=0;
sclk=1;
sclk=0;
if(dat_comm)
std=1; //如果是数据则RS为1
else
std=0; //如果是控制字则RS为0
sclk=1; //给上升沿,启动传输
sclk=0; //拉低sclk
std=0; //第8位为0,起始字节传输完毕
sclk=1; //给上升沿,启动传输
sclk=0;
for(j=0;j2;j++) //一个字节分两次发送,第一次发送高四位,后面补4个0,第二次发送低4位,后面同样补4个0
{
for(i=0;i4;i++) //先传输高4位
{
a=a1; //数据循环左移一位,低位补0
std=CY; //把进位进行传输
sclk=1;
sclk=0;
}
std=0;
for(i=0;i4;i++) //后4位数据为4个0
{
sclk=1;
sclk=0;
}
}
}
/**********************LCD延时程序************************************/
void delay (uint us) //lcd延时时间
{
while(us–);
}
void delay1 (uint ms)
{
uint i,j;
for(i=0;ims;i++)
for(j=0;j15;j++)
delay(1);
}
/*********************显示数据位子程序*******************/
void math_disp(uint math)
{ uint k;
uchar i;
uchar j;
k=math;
dispbuf[0]=k/10000; //得到万位数
k=k%10000;
dispbuf[1]=k/1000; //得到千位数
k=k%1000;
dispbuf[2]=k/100; //得到百位数
k=k%100;
dispbuf[3]=k/10; //得到十位数
dispbuf[4]=k%10; //得到个位数
wr_lcd (comm,0x90); //给第二行的起始地址以让数据在第二行显示,
for(i=0;i5;i++)
{
for(j=0;j2;j++) //连续显示两个tab2中的字节,LCD自动把这两个字节联系起来显示一个数据
{
wr_lcd(dat,tab2[xs2*dispbuf[i]+j]); //调用显示子函数
}
}
}
在c51单片机的显示管上显示四个数字的c语言程序怎么写
sbit dula=P2^6;//段锁存器锁存湍
sbit wela=P2^7;;//位锁存器锁存湍
char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void display(shiwan_c,wan_c,qian_c,bai_c,shi_c,ge_c)//6位显示子程序
{
P0=table[shiwan_c]; //显示十万位
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delay(2);
P0=table[wan_c]; //显示万位
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(2);
P0=table[qian_c]; //显示千位
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(2);
P0=table[bai_c]; //显示百位
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay(2);
P0=table[shi_c]; //显示十位
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay(2);
P0=table[ge_c]; //显示个位
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay(2);
P0=0xff; //显示完毕后关闭最后一位显示
wela=1;
wela=0;
}
以上程序需放在循环程序中,数码管需反复显示
如果其中两位不需显示,可赋值为16
单片机led显示c程序
电路图 如下:
#includereg52.h
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
uchar code digit[6]={0xf9,0xa4,0xb0,0x99,0x92,0X82};
void delay(xms)
{
uint i,j;
for(i=xms;i0;i–)
for(j=110;j0;j–);
}
void main()
{
while(1)
{
wei=1;
P0=0x01;
wei=0;
duan=1;
P0=digit[0];
duan=0;
delay(500);
wei=1;
P0=0x02;
wei=0;
duan=1;
P0=digit[1];
duan=0;
delay(500);
wei=1;
P0=0x04;
wei=0;
duan=1;
P0=digit[2];
duan=0;
delay(500);
wei=1;
P0=0x08;
wei=0;
duan=1;
P0=digit[3];
duan=0;
delay(500);
wei=1;
P0=0x10;
wei=0;
duan=1;
P0=digit[4];
duan=0;
delay(500);
wei=1;
P0=0x20;
wei=0;
duan=1;
P0=digit[5];
duan=0;
delay(500);
}
}
单片机led显示程序C语言的
该程序的原理是动态扫描,即每一时刻,只让一个数码管亮。让数码管从第一个到地第八个依次快速地显示,给人的视觉效果就是八个数码管同时显示。
/*程序让八个数码管显示数字0-7。*/
#includereg52.h
#includeintrins.h包含对_crol_()函数的声明的头文件。
#define uchar unsigned char宏定义用以简写unsigned char
#define uint unsigned int
uchar temp,i;定义无字符型全局变量temp,i。
void delay(unsigned int z)//延时程序,大概延时1ms。
{
unsigned int x ,y;
for(x=z;x0;x–)
for(y=110;y0;y–);
}
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07};//数码管真值数组,分别为0到7.
void main()
{
while(1)//大循环,让显示的状态保持
{
temp=0xfe;
for(i=0;i8;i++)
{
P3=temp;让第一个数码管显示
P1=table[i];调用数组
temp=_crol_(temp,1); 每执行一条这个语句,temp的值左移一位
delay(4); 延时(4这个参数不知道管不管用,你实际操作的时候自己改一下)
}
i=0;
}
}
关于单片机显示屏c语言程序和单片机C语言程序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。